summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Shadura <andrew.shadura@collabora.co.uk>2016-09-20 10:23:32 +0200
committerAndrew Shadura <andrew.shadura@collabora.co.uk>2016-09-20 10:23:32 +0200
commit163bc3a66abf6df1d9cc5564b596baae3748e583 (patch)
treede91817166c4ff859f484fd56a9e07e692ccb089
Imported Upstream version 3.2.0
-rw-r--r--AUTHORS3
-rw-r--r--COPYING482
-rw-r--r--ChangeLog25141
-rw-r--r--INSTALL365
-rw-r--r--Makefile.am89
-rw-r--r--Makefile.in1021
-rw-r--r--NEWS450
-rw-r--r--README27
-rw-r--r--aclocal.m41946
-rwxr-xr-xcompile143
-rwxr-xr-xconfig.guess1517
-rw-r--r--config.h.in95
-rwxr-xr-xconfig.sub1760
-rwxr-xr-xconfigure18152
-rw-r--r--configure.ac501
-rwxr-xr-xdepcomp630
-rw-r--r--doc/Makefile.am16
-rw-r--r--doc/Makefile.in716
-rw-r--r--doc/conventions.html.in38
-rw-r--r--doc/index.html.in110
-rw-r--r--doc/mapping/Makefile.am11
-rw-r--r--doc/mapping/Makefile.in507
-rw-r--r--doc/mapping/enum-mapping.pngbin0 -> 10652 bytes
-rw-r--r--doc/mapping/mapping.html.in167
-rw-r--r--doc/modules/Makefile.am17
-rw-r--r--doc/modules/Makefile.in715
-rw-r--r--doc/modules/book.xml21
-rw-r--r--doc/modules/canvas/Makefile.am5
-rw-r--r--doc/modules/canvas/Makefile.in505
-rw-r--r--doc/modules/canvas/canvas.html.in34
-rw-r--r--doc/modules/gtkbuilder/Makefile.am13
-rw-r--r--doc/modules/gtkbuilder/Makefile.in510
-rwxr-xr-xdoc/modules/gtkbuilder/example.js24
-rw-r--r--doc/modules/gtkbuilder/example.ui24
-rw-r--r--doc/modules/gtkbuilder/gtkbuilder.js10
-rw-r--r--doc/modules/gtkbuilder/gtkbuilder.xml36
-rwxr-xr-xdoc/modules/make-functions.js40
-rw-r--r--doc/modules/multiprocessing/Makefile.am5
-rw-r--r--doc/modules/multiprocessing/Makefile.in505
-rw-r--r--doc/modules/multiprocessing/multiprocessing.html.in23
-rw-r--r--doc/modules/readline/Makefile.am16
-rw-r--r--doc/modules/readline/Makefile.in514
-rw-r--r--doc/modules/readline/readline.js27
-rw-r--r--doc/modules/readline/readline.xml46
-rw-r--r--doc/modules/sandbox/Makefile.am10
-rw-r--r--doc/modules/sandbox/Makefile.in508
-rw-r--r--doc/modules/sandbox/sandbox.js19
-rw-r--r--doc/modules/sandbox/sandbox.xml43
-rw-r--r--doc/modules/sqlite/Makefile.am16
-rw-r--r--doc/modules/sqlite/Makefile.in513
-rw-r--r--doc/modules/sqlite/sqlite.js21
-rw-r--r--doc/modules/sqlite/sqlite.xml58
-rw-r--r--doc/modules/version.xml.in1
-rw-r--r--doc/reference/Makefile.am86
-rw-r--r--doc/reference/Makefile.in800
-rw-r--r--doc/reference/building.sgml294
-rw-r--r--doc/reference/contact.sgml34
-rw-r--r--doc/reference/html/GtkBuilder-module.html128
-rw-r--r--doc/reference/html/Sandbox-module.html111
-rw-r--r--doc/reference/html/api.html75
-rw-r--r--doc/reference/html/home.pngbin0 -> 578 bytes
-rw-r--r--doc/reference/html/index.html107
-rw-r--r--doc/reference/html/index.sgml204
-rw-r--r--doc/reference/html/ix01.html341
-rw-r--r--doc/reference/html/js.html39
-rw-r--r--doc/reference/html/left.pngbin0 -> 373 bytes
-rw-r--r--doc/reference/html/modules.html40
-rw-r--r--doc/reference/html/readline-module.html149
-rw-r--r--doc/reference/html/right.pngbin0 -> 380 bytes
-rw-r--r--doc/reference/html/seed-Contexts.html242
-rw-r--r--doc/reference/html/seed-Evaluation.html273
-rw-r--r--doc/reference/html/seed-Exceptions.html322
-rw-r--r--doc/reference/html/seed-Initialization.html215
-rw-r--r--doc/reference/html/seed-JS-Objects.html576
-rw-r--r--doc/reference/html/seed-JavaScript-Classes.html157
-rw-r--r--doc/reference/html/seed-Modules.html245
-rw-r--r--doc/reference/html/seed-Native-Functions.html229
-rw-r--r--doc/reference/html/seed-Native-Type-Conversion.html1432
-rw-r--r--doc/reference/html/seed-Operating-on-Native-Types.html344
-rw-r--r--doc/reference/html/seed-SeedClosure.html139
-rw-r--r--doc/reference/html/seed-Signals.html113
-rw-r--r--doc/reference/html/seed-building.html217
-rw-r--r--doc/reference/html/seed-contact.html54
-rw-r--r--doc/reference/html/seed-importer.html101
-rw-r--r--doc/reference/html/seed-introduction.html41
-rw-r--r--doc/reference/html/seed.devhelp2181
-rw-r--r--doc/reference/html/seed.html50
-rw-r--r--doc/reference/html/sqlite-module.html139
-rw-r--r--doc/reference/html/style.css266
-rw-r--r--doc/reference/html/types.html41
-rw-r--r--doc/reference/html/up.pngbin0 -> 291 bytes
-rw-r--r--doc/reference/imports.sgml87
-rw-r--r--doc/reference/introduction.sgml19
-rw-r--r--doc/reference/seed-docs.sgml61
-rw-r--r--doc/reference/seed-overrides.txt41
-rw-r--r--doc/reference/seed-sections.txt189
-rw-r--r--doc/reference/seed.types0
-rw-r--r--doc/reference/tmpl/seed-closure.sgml89
-rw-r--r--doc/reference/tmpl/seed-context.sgml124
-rw-r--r--doc/reference/tmpl/seed-eval.sgml125
-rw-r--r--doc/reference/tmpl/seed-exception.sgml145
-rw-r--r--doc/reference/tmpl/seed-jsclass.sgml83
-rw-r--r--doc/reference/tmpl/seed-main.sgml94
-rw-r--r--doc/reference/tmpl/seed-main.sgml.sgml226
-rw-r--r--doc/reference/tmpl/seed-modules.sgml146
-rw-r--r--doc/reference/tmpl/seed-nativefuncs.sgml100
-rw-r--r--doc/reference/tmpl/seed-nativetypes.sgml121
-rw-r--r--doc/reference/tmpl/seed-object.sgml285
-rw-r--r--doc/reference/tmpl/seed-signals.sgml45
-rw-r--r--doc/reference/tmpl/seed-string.sgml10
-rw-r--r--doc/reference/tmpl/seed-typeconversion.sgml474
-rw-r--r--doc/reference/tmpl/seed-unused.sgml62
-rw-r--r--doc/reference/tmpl/seed.sgml160
-rw-r--r--doc/reference/version.xml1
-rw-r--r--doc/reference/version.xml.in1
-rw-r--r--doc/runtime.html.in290
-rw-r--r--doc/seed.136
-rw-r--r--doc/sh.css1
-rw-r--r--doc/sh.js4
-rw-r--r--doc/sh_js.js347
-rw-r--r--doc/style.css83
-rwxr-xr-xdoc/tutorial-standalone/1.js53
-rw-r--r--doc/tutorial-standalone/1.pngbin0 -> 2935 bytes
-rwxr-xr-xdoc/tutorial-standalone/2.js128
-rw-r--r--doc/tutorial-standalone/2.pngbin0 -> 5836 bytes
-rwxr-xr-xdoc/tutorial-standalone/3.js200
-rw-r--r--doc/tutorial-standalone/3.pngbin0 -> 7456 bytes
-rw-r--r--doc/tutorial-standalone/4.pngbin0 -> 43769 bytes
-rw-r--r--doc/tutorial-standalone/Makefile.am29
-rw-r--r--doc/tutorial-standalone/Makefile.in523
-rw-r--r--doc/tutorial-standalone/packing.pngbin0 -> 14227 bytes
-rw-r--r--doc/tutorial-standalone/packing.svg198
-rw-r--r--doc/tutorial-standalone/tutorial.html.in373
-rw-r--r--extensions/Clutter.js67
-rw-r--r--extensions/GObject.js31
-rw-r--r--extensions/Gio.js35
-rw-r--r--extensions/Gst.js8
-rw-r--r--extensions/Gtk.js39
-rw-r--r--extensions/Makefile.am10
-rw-r--r--extensions/Makefile.in524
-rw-r--r--extensions/Seed.js.in207
-rwxr-xr-xextensions/repl.js49
-rw-r--r--gtk-doc.make280
-rwxr-xr-xinstall-sh520
-rw-r--r--libseed/Makefile.am51
-rw-r--r--libseed/Makefile.in804
-rw-r--r--libseed/seed-api.c945
-rw-r--r--libseed/seed-builtins.c557
-rw-r--r--libseed/seed-builtins.h38
-rw-r--r--libseed/seed-closure.c482
-rw-r--r--libseed/seed-closure.h73
-rw-r--r--libseed/seed-debug.h67
-rw-r--r--libseed/seed-engine.c1879
-rw-r--r--libseed/seed-engine.h85
-rw-r--r--libseed/seed-exceptions.c243
-rw-r--r--libseed/seed-exceptions.h40
-rw-r--r--libseed/seed-gtype.c1063
-rw-r--r--libseed/seed-gtype.h29
-rw-r--r--libseed/seed-importer.c1068
-rw-r--r--libseed/seed-importer.h31
-rw-r--r--libseed/seed-module.h92
-rw-r--r--libseed/seed-path.h1
-rw-r--r--libseed/seed-path.h.in1
-rw-r--r--libseed/seed-private.h57
-rw-r--r--libseed/seed-signals.c443
-rw-r--r--libseed/seed-signals.h46
-rw-r--r--libseed/seed-structs.c805
-rw-r--r--libseed/seed-structs.h56
-rw-r--r--libseed/seed-types.c2543
-rw-r--r--libseed/seed-types.h159
-rw-r--r--libseed/seed.h468
-rwxr-xr-xltmain.sh9642
-rw-r--r--m4/libtool.m47851
-rw-r--r--m4/ltoptions.m4369
-rw-r--r--m4/ltsugar.m4123
-rw-r--r--m4/ltversion.m423
-rw-r--r--m4/lt~obsolete.m498
-rwxr-xr-xmissing376
-rwxr-xr-xmkinstalldirs162
-rw-r--r--modules/DynamicObject/Makefile.am25
-rw-r--r--modules/DynamicObject/Makefile.in649
-rw-r--r--modules/DynamicObject/seed-DynamicObject.c205
-rw-r--r--modules/Makefile.am1
-rw-r--r--modules/Makefile.in650
-rw-r--r--modules/cairo/Makefile.am47
-rw-r--r--modules/cairo/Makefile.in746
-rw-r--r--modules/cairo/seed-cairo-enums.c144
-rw-r--r--modules/cairo/seed-cairo-enums.h5
-rw-r--r--modules/cairo/seed-cairo-image-surface.c153
-rw-r--r--modules/cairo/seed-cairo-image-surface.h9
-rw-r--r--modules/cairo/seed-cairo-matrix.c319
-rw-r--r--modules/cairo/seed-cairo-matrix.h14
-rw-r--r--modules/cairo/seed-cairo-pattern.c215
-rw-r--r--modules/cairo/seed-cairo-pattern.h21
-rw-r--r--modules/cairo/seed-cairo-pdf-surface.c139
-rw-r--r--modules/cairo/seed-cairo-pdf-surface.h9
-rw-r--r--modules/cairo/seed-cairo-surface.c416
-rw-r--r--modules/cairo/seed-cairo-surface.h11
-rw-r--r--modules/cairo/seed-cairo.c1848
-rw-r--r--modules/cairo/seed-cairo.h13
-rw-r--r--modules/canvas/Makefile.am30
-rw-r--r--modules/canvas/Makefile.in666
-rwxr-xr-xmodules/canvas/run-tests.js416
-rw-r--r--modules/canvas/seed-canvas.c1095
-rw-r--r--modules/dbus/Makefile.am55
-rw-r--r--modules/dbus/Makefile.in910
-rw-r--r--modules/dbus/dbus-exports.c763
-rw-r--r--modules/dbus/dbus-exports.h17
-rw-r--r--modules/dbus/dbus-values.c973
-rw-r--r--modules/dbus/dbus-values.h42
-rw-r--r--modules/dbus/dbus.js684
-rwxr-xr-xmodules/dbus/dbus2js.py218
-rw-r--r--modules/dbus/lang.js99
-rw-r--r--modules/dbus/module.c1468
-rw-r--r--modules/dbus/util/Makefile.am5
-rw-r--r--modules/dbus/util/Makefile.in453
-rw-r--r--modules/dbus/util/dbus-private.h55
-rw-r--r--modules/dbus/util/dbus-proxy.c666
-rw-r--r--modules/dbus/util/dbus-proxy.h74
-rw-r--r--modules/dbus/util/dbus-signals.c1318
-rw-r--r--modules/dbus/util/dbus.c3023
-rw-r--r--modules/dbus/util/dbus.h216
-rw-r--r--modules/dbus/util/log.h2
-rw-r--r--modules/example/Makefile.am28
-rw-r--r--modules/example/Makefile.in653
-rw-r--r--modules/example/seed-example.c28
-rw-r--r--modules/ffi/Makefile.am37
-rw-r--r--modules/ffi/Makefile.in669
-rw-r--r--modules/ffi/seed-ffi.c513
-rwxr-xr-xmodules/ffi/test-sin.js12
-rwxr-xr-xmodules/ffi/test-strcmp.js13
-rwxr-xr-xmodules/ffi/test-strdup.js12
-rwxr-xr-xmodules/ffi/test-xlib.js24
-rw-r--r--modules/gettext/Makefile.am28
-rw-r--r--modules/gettext/Makefile.in653
-rw-r--r--modules/gettext/seed-gettext.c326
-rw-r--r--modules/gtkbuilder/Makefile.am32
-rw-r--r--modules/gtkbuilder/Makefile.in657
-rw-r--r--modules/gtkbuilder/seed-gtkbuilder.c105
-rw-r--r--modules/libxml/Makefile.am36
-rw-r--r--modules/libxml/Makefile.in685
-rw-r--r--modules/libxml/seed-libxml.c581
-rw-r--r--modules/libxml/xml.js22
-rw-r--r--modules/mpfr/Makefile.am33
-rw-r--r--modules/mpfr/Makefile.in663
-rw-r--r--modules/mpfr/seed-mpfr-arithmetic.c1270
-rw-r--r--modules/mpfr/seed-mpfr-cmp.c420
-rw-r--r--modules/mpfr/seed-mpfr-trig.c1262
-rw-r--r--modules/mpfr/seed-mpfr.c1188
-rw-r--r--modules/mpfr/seed-mpfr.h175
-rw-r--r--modules/multiprocessing/Makefile.am29
-rw-r--r--modules/multiprocessing/Makefile.in662
-rwxr-xr-xmodules/multiprocessing/bi.js28
-rwxr-xr-xmodules/multiprocessing/fork.js42
-rw-r--r--modules/multiprocessing/seed-multiprocessing.c212
-rw-r--r--modules/os/Makefile.am27
-rw-r--r--modules/os/Makefile.in661
-rw-r--r--modules/os/seed-os.c1167
-rw-r--r--modules/readline/Makefile.am28
-rw-r--r--modules/readline/Makefile.in663
-rw-r--r--modules/readline/seed-readline.c198
-rw-r--r--modules/sandbox/Makefile.am26
-rw-r--r--modules/sandbox/Makefile.in650
-rw-r--r--modules/sandbox/seed-sandbox.c146
-rw-r--r--modules/sqlite/Makefile.am30
-rw-r--r--modules/sqlite/Makefile.in667
-rwxr-xr-xmodules/sqlite/example.js14
-rw-r--r--modules/sqlite/seed-sqlite.c215
-rw-r--r--po/ChangeLog0
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makefile.in.in217
-rw-r--r--po/POTFILES.in3
-rw-r--r--po/POTFILES.skip1
-rw-r--r--seed.pc13
-rw-r--r--seed.pc.in13
-rw-r--r--src/Makefile.am27
-rw-r--r--src/Makefile.in674
-rw-r--r--src/args.c85
-rw-r--r--src/main.c164
-rw-r--r--tests/COPYING1
-rw-r--r--tests/Makefile.am3
-rw-r--r--tests/Makefile.in651
-rw-r--r--tests/c/Makefile.am24
-rw-r--r--tests/c/Makefile.in782
-rw-r--r--tests/c/api-closure.c65
-rw-r--r--tests/c/api-js-signal-from-c.c67
-rw-r--r--tests/c/api-types.c171
-rw-r--r--tests/c/basic.c26
-rw-r--r--tests/c/main.c72
-rw-r--r--tests/c/test-common.h17
-rw-r--r--tests/javascript/COPYING1
-rw-r--r--tests/javascript/Makefile.am76
-rw-r--r--tests/javascript/Makefile.in819
-rwxr-xr-xtests/javascript/argv.js3
-rwxr-xr-xtests/javascript/array-gtype.js17
-rwxr-xr-xtests/javascript/builtin-argument-length.js52
-rwxr-xr-xtests/javascript/check-syntax.js32
-rwxr-xr-xtests/javascript/closure-finalization.js27
-rwxr-xr-xtests/javascript/compare.js13
-rwxr-xr-xtests/javascript/constructor-args.js36
-rwxr-xr-xtests/javascript/constructor-prototype.js12
-rwxr-xr-xtests/javascript/enum.js13
-rwxr-xr-xtests/javascript/everything.js71
-rwxr-xr-xtests/javascript/fork.js8
-rwxr-xr-xtests/javascript/function-info.js9
-rwxr-xr-xtests/javascript/gdk-event.js27
-rwxr-xr-xtests/javascript/gerror.js14
-rwxr-xr-xtests/javascript/gobject-scope.js13
-rw-r--r--tests/javascript/gtypes/Makefile.am27
-rw-r--r--tests/javascript/gtypes/Makefile.in570
-rwxr-xr-xtests/javascript/gtypes/gtype-class-init-exception.js30
-rwxr-xr-xtests/javascript/gtypes/gtype-extraprop.js20
-rwxr-xr-xtests/javascript/gtypes/gtype-gtype-class-init.js30
-rwxr-xr-xtests/javascript/gtypes/gtype-gtype.js29
-rwxr-xr-xtests/javascript/gtypes/gtype-property-construct.js41
-rwxr-xr-xtests/javascript/gtypes/gtype-property-nice.js30
-rwxr-xr-xtests/javascript/gtypes/gtype-self.js18
-rwxr-xr-xtests/javascript/gtypes/gtype-signal-args.js29
-rwxr-xr-xtests/javascript/gtypes/gtype-signal.js23
-rwxr-xr-xtests/javascript/gtypes/gtype-typerror.js18
-rwxr-xr-xtests/javascript/gtypes/gtype.js33
-rwxr-xr-xtests/javascript/gtypes/testsuite.js32
-rwxr-xr-xtests/javascript/gvalue-argument.js14
-rwxr-xr-xtests/javascript/include-syntax.js16
-rwxr-xr-xtests/javascript/include.js3
-rwxr-xr-xtests/javascript/introspect.js15
-rwxr-xr-xtests/javascript/json-constructor.js12
-rwxr-xr-xtests/javascript/json.js20
-rwxr-xr-xtests/javascript/list-test.js20
-rwxr-xr-xtests/javascript/modules-noasserts.js25
-rwxr-xr-xtests/javascript/modules.js8
-rwxr-xr-xtests/javascript/native-closure-exception.js28
-rwxr-xr-xtests/javascript/native-closure.js20
-rwxr-xr-xtests/javascript/object-info.js24
-rwxr-xr-xtests/javascript/out-test.js15
-rwxr-xr-xtests/javascript/property-benchmark.js15
-rwxr-xr-xtests/javascript/property-glib-exception.js20
-rwxr-xr-xtests/javascript/quit.js4
-rw-r--r--tests/javascript/signals/Makefile.am20
-rw-r--r--tests/javascript/signals/Makefile.in564
-rwxr-xr-xtests/javascript/signals/signal-connect.js19
-rwxr-xr-xtests/javascript/signals/signal-disconnect.js21
-rwxr-xr-xtests/javascript/signals/signal-exception.js16
-rwxr-xr-xtests/javascript/signals/signal-expects.js17
-rwxr-xr-xtests/javascript/signals/signal-invalid.js18
-rwxr-xr-xtests/javascript/signals/signal-nofunc.js19
-rwxr-xr-xtests/javascript/signals/signal-userdata.js18
-rwxr-xr-xtests/javascript/signals/signal.js17
-rwxr-xr-xtests/javascript/signals/testsuite.js32
-rwxr-xr-xtests/javascript/sqlite.js32
-rw-r--r--tests/javascript/structs/Makefile.am21
-rw-r--r--tests/javascript/structs/Makefile.in564
-rwxr-xr-xtests/javascript/structs/struct-constructor.js10
-rwxr-xr-xtests/javascript/structs/struct-enumerate.js13
-rwxr-xr-xtests/javascript/structs/struct-functions.js10
-rwxr-xr-xtests/javascript/structs/struct-nested-set.js17
-rwxr-xr-xtests/javascript/structs/struct-null.js14
-rwxr-xr-xtests/javascript/structs/struct-offsets.js10
-rwxr-xr-xtests/javascript/structs/struct-set-member.js9
-rwxr-xr-xtests/javascript/structs/struct-union-enumerate.js41
-rwxr-xr-xtests/javascript/structs/testsuite.js32
-rwxr-xr-xtests/javascript/syntax-test-noasserts.js1
-rwxr-xr-xtests/javascript/syntax-test.js15
-rwxr-xr-xtests/javascript/testsuite.js32
-rwxr-xr-xtests/javascript/type-conversion.js29
365 files changed, 145042 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..27f71c2
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,3 @@
+* Robert Carr <racarr@svn.gnome.org>
+* Tim Horton <hortont@svn.gnome.org>
+* Matt Arsenault <arsenm2@rpi.edu>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..bf50f20
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,482 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 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 library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ 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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, 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 or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the 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 a program 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.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ 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, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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.
+
+ 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.
+
+ 6. As an exception to the Sections above, you may also compile 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) 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.
+
+ c) 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.
+
+ d) 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 source code 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.
+
+ 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 to
+this License.
+
+ 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 Library 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.
+
+ 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
+
+ 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 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., 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/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..dd26556
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,25141 @@
+# Generated by Makefile. Do not edit.
+
+commit 004746bf04ae72924c233377869c7e639ac8deee
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Sep 21 21:31:16 2011 -0700
+
+ Bump version to 3.2.0
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5645ccc8f3fff91797a4e8cd2cc732c92b45b9d7
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Sep 21 21:30:22 2011 -0700
+
+ Let gtkdoc do its thing
+
+ doc/reference/tmpl/seed-exception.sgml | 2 +-
+ doc/reference/tmpl/seed-typeconversion.sgml | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 920e8754f72d2626a6c2ced995aaf5a2f01839b2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Sep 21 21:29:59 2011 -0700
+
+ Remove missing file from tests/javascript/gtypes/Makefile.am
+
+ tests/javascript/gtypes/Makefile.am | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit f2cb32103467e0d3c1ded57997656e5e69f69399
+Author: Javier Jardón <jjardon@gnome.org>
+Date: Fri Sep 9 15:37:04 2011 +0100
+
+ Make maintiner mode enabled by default
+
+ See http://blogs.gnome.org/desrt/2011/09/08/am_maintainer_mode-is-not-cool/
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6ae79c21436f036f36ab7ebfe1b5466ae741f00d
+Author: Alexandre Mazari <amazari@igalia.com>
+Date: Wed Aug 31 12:49:01 2011 +0200
+
+ Fix #657833 - Import GLib namespace when searchPath is initialized. GLib might have extension present in the searchPath. Also makes extension loading exceptions bubble up to the javascript context.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657833
+
+ extensions/Seed.js.in | 73 +++++++++++++++++++++++------------------------
+ libseed/seed-importer.c | 2 +-
+ 2 files changed, 37 insertions(+), 38 deletions(-)
+
+commit eedae3e24b470b28951b9d303b65b94ad9613209
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Wed Aug 31 17:32:10 2011 +0800
+
+ Revert "Introduce facilities for client DBus using GDbus: methods generation, signals and properties binding."
+
+ Wait until we have API fixed.
+
+ This reverts commit 9f4589a7f8eb24f755fd2931499a1d2a3346911c.
+
+ extensions/Gio.js | 181 +----------------------------------------------------
+ 1 files changed, 3 insertions(+), 178 deletions(-)
+
+commit b0be7270b4029bc4001d7a819ffb9c318666670f
+Author: Sunil Mohan Adapa <sunil@medhas.org>
+Date: Fri Aug 26 19:08:44 2011 +0530
+
+ Fix #6574441 - incorrect comparision in gtype testcase
+
+ tests/javascript/gtypes/gtype.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bc3c00ee0b18d6fd13ee8d9766d53e443e57bf6c
+Author: Alexandre Mazari <amazari@igalia.com>
+Date: Wed Aug 31 16:51:57 2011 +0800
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657647
+
+ libseed/seed-types.c | 38 ++++++++++++++++++++++++++++++++++++++
+ libseed/seed-types.h | 3 ++-
+ 2 files changed, 40 insertions(+), 1 deletions(-)
+
+commit 9f4589a7f8eb24f755fd2931499a1d2a3346911c
+Author: Alexandre Mazari <amazari@igalia.com>
+Date: Tue Aug 30 14:46:21 2011 +0200
+
+ Introduce facilities for client DBus using GDbus: methods generation, signals and properties binding.
+ /!\ This is not compatible with the existing native dbus module.
+ See documentation.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657702
+
+ extensions/Gio.js | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 178 insertions(+), 3 deletions(-)
+
+commit 0aa53b6d9667ab2fc8cb0e6242564e8851ef66d6
+Author: Siraj Razick <siraj.razick@collabora.co.uk>
+Date: Wed Aug 31 11:54:42 2011 +0800
+
+ Fixes : bug#657228 - Make callbacks work with WebkFrame's Js Context (Revised)
+
+ libseed/seed-closure.c | 6 ++++--
+ libseed/seed-closure.h | 1 +
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 142625d27d522dcc9a4c2b52948cef48fa56c59c
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Wed Aug 31 09:57:45 2011 +0800
+
+ Revert "Fixes : bug#657228 - Make callbacks work with WebkFrame's Js Context"
+
+ The patched caused serious segfaults. on fetching context JSContextGetGroup(privates->ctx)
+
+ I did try protecting ctx before putting it in the struct, but that did not appear to help.
+
+ This reverts commit b41c16b814f1c08228be08ecfa2dec0917d1696b.
+
+ libseed/seed-closure.c | 6 ++----
+ libseed/seed-closure.h | 1 -
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+
+commit b41c16b814f1c08228be08ecfa2dec0917d1696b
+Author: Siraj Razick <siraj.razick@collabora.co.uk>
+Date: Wed Aug 24 16:49:56 2011 +0530
+
+ Fixes : bug#657228 - Make callbacks work with WebkFrame's Js Context
+
+ libseed/seed-closure.c | 6 ++++--
+ libseed/seed-closure.h | 1 +
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit e5cd8a0e34de7ee60c7da00c23edf37cf53016d7
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Wed Aug 24 16:31:25 2011 +0800
+
+ partial fix for #615199 - gets rid of segfault, and at least it calls back sometimes.
+
+ Basically removes the new context from the closure callback
+
+ modules/dbus/module.c | 22 ++++++++++------------
+ 1 files changed, 10 insertions(+), 12 deletions(-)
+
+commit 9805441749f447b7b46f6b314531542d3b4453aa
+Author: Alexandre Mazari <amazari@igalia.com>
+Date: Thu Aug 11 18:06:27 2011 +0200
+
+ fix #656517 - Do not add search path entry for non-existing directory.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=656517
+
+ libseed/seed-importer.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 58415e71d8e767570428354c06dbbf9affedd5fa
+Author: Alexandre Mazari <scaroo@gmail.com>
+Date: Sat Mar 5 11:46:43 2011 +0100
+
+ Switch to LGPL2+ (See bug #643938 for details of approval by all major contributors)
+
+ Import the LGPL2+ licence in the COPYING file
+ Modify the source files headers to permit redistribution under
+ LGPL2+ distribution.
+
+ COPYING | 637 ++++++++++++++++++------
+ libseed/seed-api.c | 2 +-
+ libseed/seed-builtins.c | 2 +-
+ libseed/seed-builtins.h | 2 +-
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-closure.h | 2 +-
+ libseed/seed-debug.h | 2 +-
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-engine.h | 2 +-
+ libseed/seed-exceptions.c | 2 +-
+ libseed/seed-exceptions.h | 2 +-
+ libseed/seed-gtype.c | 2 +-
+ libseed/seed-gtype.h | 2 +-
+ libseed/seed-importer.c | 2 +-
+ libseed/seed-importer.h | 2 +-
+ libseed/seed-module.h | 2 +-
+ libseed/seed-private.h | 2 +-
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-signals.h | 2 +-
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-structs.h | 2 +-
+ libseed/seed-types.c | 2 +-
+ libseed/seed-types.h | 2 +-
+ libseed/seed.h | 2 +-
+ modules/DynamicObject/seed-DynamicObject.c | 2 +-
+ modules/cairo/seed-cairo-enums.c | 2 +-
+ modules/cairo/seed-cairo-image-surface.c | 2 +-
+ modules/cairo/seed-cairo-matrix.c | 2 +-
+ modules/cairo/seed-cairo-pattern.c | 2 +-
+ modules/cairo/seed-cairo-pdf-surface.c | 2 +-
+ modules/cairo/seed-cairo-surface.c | 2 +-
+ modules/cairo/seed-cairo.c | 2 +-
+ modules/canvas/seed-canvas.c | 2 +-
+ modules/dbus/dbus-exports.c | 2 +-
+ modules/dbus/dbus-values.c | 2 +-
+ modules/dbus/module.c | 2 +-
+ modules/example/seed-example.c | 2 +-
+ modules/ffi/seed-ffi.c | 2 +-
+ modules/gettext/seed-gettext.c | 2 +-
+ modules/gtkbuilder/seed-gtkbuilder.c | 2 +-
+ modules/libxml/seed-libxml.c | 2 +-
+ modules/mpfr/seed-mpfr-arithmetic.c | 2 +-
+ modules/mpfr/seed-mpfr-cmp.c | 2 +-
+ modules/mpfr/seed-mpfr-trig.c | 2 +-
+ modules/mpfr/seed-mpfr.c | 2 +-
+ modules/multiprocessing/seed-multiprocessing.c | 2 +-
+ modules/os/seed-os.c | 2 +-
+ modules/readline/seed-readline.c | 2 +-
+ modules/sandbox/seed-sandbox.c | 2 +-
+ modules/sqlite/seed-sqlite.c | 2 +-
+ src/args.c | 2 +-
+ src/main.c | 2 +-
+ tests/c/api-closure.c | 2 +-
+ tests/c/api-js-signal-from-c.c | 2 +-
+ tests/c/api-types.c | 2 +-
+ tests/c/basic.c | 2 +-
+ tests/c/main.c | 2 +-
+ 57 files changed, 533 insertions(+), 216 deletions(-)
+
+commit a84576e42dbceb102f5cb7fa5b9e3ebce8d7a9c9
+Author: Dominique Leuenberger <dimstar@opensuse.org>
+Date: Fri Aug 12 21:27:20 2011 +0200
+
+ More fixes for bgo#653077: Also correctly identify javascriptcoregtk-1.0
+
+ configure.ac | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 1dae3adaa27f1cbef976ace0584c71217e594c7a
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Aug 12 13:58:56 2011 +0800
+
+ since GParamSpec is not exposed, we can not call param_spec_* methods any more, so Gtype object contruction has to be done via properties in the ctor.
+
+ tests/javascript/gtypes/Makefile.am | 1 -
+ .../javascript/gtypes/gtype-property-construct.js | 22 +++++++-------
+ tests/javascript/gtypes/gtype-property.js | 30 --------------------
+ 3 files changed, 11 insertions(+), 42 deletions(-)
+
+commit debb39ead5b86f774eb9488af8dd20e80d10ecf3
+Author: Siraj Razick <siraj.razick@collabora.co.uk>
+Date: Tue Aug 9 22:17:21 2011 +0530
+
+ Fixes : bug#656227 - Seed doesn't support GPtrArray as return type
+
+ libseed/seed-types.c | 35 +++++++++++++++++++++++++++++++++++
+ 1 files changed, 35 insertions(+), 0 deletions(-)
+
+commit 937d32206c93a2024bd4d6c2ff045d5310bfbda5
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue Aug 9 12:53:07 2011 +0800
+
+ More fixes for #653077 - javascriptcoregtk build needs to be linked against libraries, rather than expecting it via webkit any more
+
+ modules/cairo/Makefile.am | 4 +++-
+ modules/canvas/Makefile.am | 1 +
+ modules/gtkbuilder/Makefile.am | 1 +
+ 3 files changed, 5 insertions(+), 1 deletions(-)
+
+commit db641cd31d82aff79a16080f65f7c7562aaadde6
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Mon Aug 8 18:05:48 2011 +0800
+
+ more fixes for #653077 - xml build without webkit, also includes fix for #652771 - removing paramspec reference
+
+ libseed/seed-gtype.c | 6 ++++--
+ modules/libxml/Makefile.am | 1 +
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit dd591f267d0a726ee69216542d67d04202fbfd6b
+Author: Siraj Razick <siraj.razick@collabora.co.uk>
+Date: Thu Aug 4 09:19:14 2011 +0530
+
+ Adds support for handling GUNIT32
+
+ libseed/seed-types.c | 17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 7509ce76f8295134a276654a92841fc899e35b25
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Wed Jul 20 23:53:53 2011 +0800
+
+ substitute SEED_GTK_VERSION - fixes build...
+
+ configure.ac | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 91ab326855490e1173696d95e153fcdf7e8105e9
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Sun Jul 3 23:01:12 2011 +0800
+
+ fix #653077 - change build to support javascriptcoregtk change
+
+ configure.ac | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit ff9eca41b42f3b6c2cc312dd996f78b67bf5be35
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 12:55:53 2011 -0400
+
+ postrelease version bump
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 872cc1404b55fa3673bfd8a5fd995f7561292369
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 12:52:38 2011 -0400
+
+ actually add config.h.in to .gitignore
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit db859ed93cf642393b41bd432cbd6cbc2e44a331
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 12:51:56 2011 -0400
+
+ Version bump
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7a1df2a43ca17dd567ec8e0690ab91688e3969b8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 12:50:27 2011 -0400
+
+ Update news for 3.1.1
+
+ NEWS | 12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 8a6a84b1b9a5449d6239fbcbb15c3f4a6349f950
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 12:45:48 2011 -0400
+
+ We only require libutil.h for FreeBSD, apparently
+
+ doc/reference/tmpl/seed-context.sgml | 28 ++++++++++++++--------------
+ doc/reference/tmpl/seed-eval.sgml | 2 +-
+ doc/reference/tmpl/seed-jsclass.sgml | 2 +-
+ doc/reference/tmpl/seed-object.sgml | 8 ++++----
+ modules/os/seed-os.c | 4 +---
+ 5 files changed, 21 insertions(+), 23 deletions(-)
+
+commit c1d6b3ad19520ee05d04e7094b700d94ac69b4df
+Author: Michael Terry <michael.terry@canonical.com>
+Date: Tue May 17 12:34:17 2011 -0400
+
+ Add DBUSGLIB_CFLAGS and DBUSGLIB_LDFLAGS to dbus module's Makefile.am to fix build failure
+
+ modules/dbus/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 424ad8504a03c393439283873316d413a9edd2ec
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 00:47:37 2011 -0400
+
+ Remove config.h.in from git (recently .gitignored)
+
+ config.h.in | 92 -----------------------------------------------------------
+ 1 files changed, 0 insertions(+), 92 deletions(-)
+
+commit 920b1d82a2282fdfea3a0d0358a51d3b23facc47
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue May 17 00:46:42 2011 -0400
+
+ Only include libutil.h on FreeBSD (util.h on OpenBSD, nothing on Linux)
+
+ modules/os/seed-os.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 081707c35a0f90aae0651c7a079729a6031bc4e6
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Mon May 16 17:52:55 2011 +0800
+
+ add config.h.in to git ignore
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 6a9e7fa16c23b697ebeccd0aec53a70dc0a3533c
+Author: Matej Cepl <mcepl@redhat.com>
+Date: Mon May 16 17:49:00 2011 +0800
+
+ fix #650121 - typo in sqlite documentation
+
+ doc/modules/sqlite/sqlite.xml | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 03c808137331be912e9adde997dd2830cf2e5593
+Author: Jasper Lievisse Adriaanse <jasper@humppa.nl>
+Date: Mon May 16 17:38:37 2011 +0800
+
+ fix #650234 -m Add FreeBSD/OpenBSD support to os/seed-os.c
+
+ modules/os/seed-os.c | 41 +++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 39 insertions(+), 2 deletions(-)
+
+commit 18861a32f2a251c323c21e172ad39fd91fc80e3f
+Author: Jasper Lievisse Adriaanse <jasper@humppa.nl>
+Date: Mon May 16 17:36:33 2011 +0800
+
+ fix #650233 Fix importing scripts on *BSD
+
+ libseed/seed-importer.c | 18 +++++++++++++++---
+ 1 files changed, 15 insertions(+), 3 deletions(-)
+
+commit 7afc3b2138e559bfc65c056153141c2ccc747ac4
+Author: Jasper Lievisse Adriaanse <jasper@humppa.nl>
+Date: Mon May 16 17:32:02 2011 +0800
+
+ fix #650232 - Missing includes cause build to fail on OpenBSD
+
+ libseed/seed-closure.c | 1 +
+ libseed/seed-private.h | 4 +++-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit d55b446cc031e1de483c92b5d22d59312ed4e234
+Author: Jonathan Nieder <jrnieder@gmail.com>
+Date: Fri Apr 22 01:49:29 2011 -0500
+
+ Fix build-time errors with recent dash as sh
+
+ dash and FreeBSD sh's "test" builtins do not support the == operator,
+ leading to confusion at configure time:
+
+ checking for GTHREAD... yes
+ ./configure: 13717: test: xyes: unexpected operator
+ ./configure: 14011: test: xyes: unexpected operator
+ [...]
+ checking pty.h usability... yes
+
+ and errors at compile time:
+
+ make[3]: Entering directory `/home/jrn/src/seed/modules/canvas'
+ CC libseed_canvas_la-seed-canvas.lo
+ seed-canvas.c:21:19: fatal error: cairo.h: No such file or directory
+ compilation terminated.
+
+ Use the more portable = instead.
+
+ Probably this was not noticed before because until recently dash
+ lacked support for $LINENO, leading autoconf to fall back on bash.
+
+ Reported-by: Lucas Nussbaum <lucas@lucas-nussbaum.net>
+ Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+
+ configure.ac | 20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit df358cc51df5ab155b1496e21a9da8d6ae401ed3
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Apr 22 15:38:21 2011 +0800
+
+ fix tests for GI_TYPE_TAG_* that where removed in 0.9 GI
+
+ libseed/seed-closure.c | 8 ++------
+ libseed/seed-types.c | 12 +++---------
+ 2 files changed, 5 insertions(+), 15 deletions(-)
+
+commit e04b84f579f02f607656c65799e80483b537f8c0
+Author: Craig Keogh <cskeogh@adam.com.au>
+Date: Sun Apr 17 20:12:56 2011 +0800
+
+ fix #64009 - honor ACLOCAL_FLAGS to help jhbuild out
+
+ Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a9cfd171875515aba2d43b90d8b260a0dd678fa1
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sat Apr 16 13:31:28 2011 +0800
+
+ fix types which have been removed in new versions
+
+ libseed/seed-types.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 42d87d2df6e91da9526aa1adb2cba671abc3f51f
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sat Apr 16 13:23:10 2011 +0800
+
+ fix types which have been removed in new versions
+
+ libseed/seed-closure.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 5d14a17e2998135b5ac50fcb2a2a60f325729ab9
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sat Apr 16 12:03:55 2011 +0800
+
+ fix autoconf stripping square brackets in introspection versioning code
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f7469671f507835973df0e89e1b19c5b8eec7ba2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Apr 1 22:51:26 2011 -0400
+
+ Update news for 3.0
+
+ NEWS | 10 ++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 1bd4ec7b96f1b19e94fdd5b2b4e0df03aa2c0666
+Author: Garrett Regier <alias301@gmail.com>
+Date: Thu Mar 24 10:21:48 2011 -0700
+
+ Expose seed_value_(to|from)_gi_argument
+
+ libseed/seed-closure.c | 4 ++--
+ libseed/seed-engine.c | 10 +++++-----
+ libseed/seed-importer.c | 2 +-
+ libseed/seed-structs.c | 10 +++++-----
+ libseed/seed-types.c | 24 ++++++++++++------------
+ libseed/seed-types.h | 17 +++++++++--------
+ libseed/seed.h | 10 ++++++++++
+ 7 files changed, 44 insertions(+), 33 deletions(-)
+
+commit a655d0136520b156088327284c5a0377476008e7
+Author: Garrett Regier <alias301@gmail.com>
+Date: Thu Mar 24 10:19:59 2011 -0700
+
+ Expose seed_value_to_gvalue
+
+ libseed/seed-engine.c | 6 +++---
+ libseed/seed-gtype.c | 2 +-
+ libseed/seed-signals.c | 10 +++++-----
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-types.c | 24 ++++++++++++------------
+ libseed/seed-types.h | 7 ++++---
+ libseed/seed.h | 4 ++++
+ 7 files changed, 30 insertions(+), 25 deletions(-)
+
+commit 513244a8b19692f3b41638964586dc60694333c7
+Author: José Aliste <jaliste@src.gnome.org>
+Date: Mon Mar 28 11:39:20 2011 -0400
+
+ Make seed.h C++ friendly.
+
+ libseed/seed.h | 16 ++++++++++------
+ 1 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 31de08a8b76b7f277defe23b5ab5a371500e4c4a
+Author: Alexandre Mazari <amazari@igalia.com>
+Date: Wed Mar 23 18:34:54 2011 +0100
+
+ Allow the creation of a restricted/constrained SeedEngine and add APIs to expose choosen GObject namspaces and instance into this engine
+
+ The Javascript context of a restricted SeedEngine is empty by default.
+ The importer module, builtins and GType overriding facilities aren't
+ exposed to JS Code.
+ The developer must expose *explicitely* the objects and namespaces
+ that should be accessible from the Javascript context.
+
+ Add hight-level API to expose GObject instance and namespace in the JS context
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=645696
+
+ libseed/seed-engine.c | 165 +++++++++++++++++++++++++++++++++++++++++++----
+ libseed/seed-importer.c | 13 +++-
+ libseed/seed-importer.h | 2 +
+ libseed/seed.h | 9 +++
+ 4 files changed, 171 insertions(+), 18 deletions(-)
+
+commit 74bc83ed18f609340a06307f7be3b9d47a357398
+Author: Sjoerd Simons <sjoerd@luon.net>
+Date: Sun Mar 13 19:25:15 2011 +0000
+
+ Take Gtk version into account in the prefix path
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644663
+
+ libseed/seed-path.h.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ce54fb5de39fb47996f663cec50a5eec1d564150
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Feb 22 17:56:22 2011 -0500
+
+ Postrelease increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c99ced2c6935055b7166e15aa3cc4915aea4ee1d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Feb 22 17:51:04 2011 -0500
+
+ Ready 2.91.90
+
+ NEWS | 6 ++++++
+ configure.ac | 2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit f7b765ecefd2b8ff5748c4c2757f4594c2c26ed7
+Author: Frederic Crozat <fred@crozat.net>
+Date: Thu Feb 17 07:26:32 2011 +0100
+
+ Fix build when using gtk3
+
+ Check gtk version used :
+ some modules are hardcoding gtk2 / gdk2 in their configure.ac part.
+ Fixes #641264
+
+ configure.ac | 12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+commit f74599d7db79b61615b0cd26e5f3e2e1863b8857
+Author: Frederic Crozat <fcrozat@novell.com>
+Date: Wed Feb 2 17:18:02 2011 +0100
+
+ Change soname and install directory when building gtk3 version
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639896
+
+ configure.ac | 2 ++
+ extensions/Makefile.am | 6 +++---
+ libseed/Makefile.am | 12 ++++++------
+ modules/DynamicObject/Makefile.am | 2 +-
+ modules/cairo/Makefile.am | 4 ++--
+ modules/canvas/Makefile.am | 4 ++--
+ modules/dbus/Makefile.am | 6 +++---
+ modules/example/Makefile.am | 4 ++--
+ modules/ffi/Makefile.am | 4 ++--
+ modules/gettext/Makefile.am | 4 ++--
+ modules/gtkbuilder/Makefile.am | 4 ++--
+ modules/libxml/Makefile.am | 6 +++---
+ modules/mpfr/Makefile.am | 4 ++--
+ modules/multiprocessing/Makefile.am | 4 ++--
+ modules/os/Makefile.am | 4 ++--
+ modules/readline/Makefile.am | 4 ++--
+ modules/sandbox/Makefile.am | 4 ++--
+ modules/sqlite/Makefile.am | 4 ++--
+ seed.pc.in | 4 ++--
+ src/Makefile.am | 2 +-
+ tests/c/Makefile.am | 2 +-
+ 21 files changed, 46 insertions(+), 44 deletions(-)
+
+commit 9aa7ca97a9e4d5f30c0d7f3a6fe05b2b407124dc
+Author: Frederic Crozat <fred@crozat.net>
+Date: Mon Feb 7 21:46:26 2011 +0100
+
+ Fix #641265 - remove gdk drawable
+
+ Port code to be compilable with GTK+3.
+
+ modules/cairo/seed-cairo.c | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 5b748f5814dc9d8d91b33d86e14930c187c8cc1c
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Thu Dec 9 21:07:50 2010 +0800
+
+ Fix #636678 - Mx Toolkit - Mx.Table not properly displayed
+
+ overlay methods of object after interface methods so they override the properties
+
+ libseed/seed-engine.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d34283ef6728f483af9b65b1c48d2d3569f33edd
+Author: JJ L <poiquiop@gmail.com>
+Date: Tue Dec 7 21:44:53 2010 +0800
+
+ bug #636647 - remove depreciated g_main_interation
+
+ modules/dbus/util/dbus.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4f78441320ca04c11183273b009bc2a1804222b5
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Nov 6 22:22:22 2010 -0400
+
+ Fix documentation typo
+
+ doc/reference/tmpl/seed-context.sgml | 30 +++++++++++++++---------------
+ tests/javascript/gtypes/testsuite.js | 33 ++++++++++++++++++++++++++++++++-
+ tests/javascript/signals/testsuite.js | 33 ++++++++++++++++++++++++++++++++-
+ tests/javascript/structs/testsuite.js | 33 ++++++++++++++++++++++++++++++++-
+ 4 files changed, 111 insertions(+), 18 deletions(-)
+
+commit 2deaab0e96436e8b597825dc8a86a0a12937c44e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Nov 6 09:37:04 2010 -0400
+
+ docs: Remove incredibly outdated "building on OS X" documentation
+
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/building-osx.sgml | 43 ---------------------------
+ doc/reference/seed-docs.sgml | 1 -
+ doc/reference/tmpl/seed-closure.sgml | 3 ++
+ doc/reference/tmpl/seed-context.sgml | 3 ++
+ doc/reference/tmpl/seed-eval.sgml | 3 ++
+ doc/reference/tmpl/seed-exception.sgml | 3 ++
+ doc/reference/tmpl/seed-jsclass.sgml | 3 ++
+ doc/reference/tmpl/seed-main.sgml | 3 ++
+ doc/reference/tmpl/seed-modules.sgml | 3 ++
+ doc/reference/tmpl/seed-nativefuncs.sgml | 3 ++
+ doc/reference/tmpl/seed-nativetypes.sgml | 3 ++
+ doc/reference/tmpl/seed-object.sgml | 5 ++-
+ doc/reference/tmpl/seed-signals.sgml | 3 ++
+ doc/reference/tmpl/seed-typeconversion.sgml | 3 ++
+ 15 files changed, 38 insertions(+), 46 deletions(-)
+
+commit a228b4e86372d45f03ecd98aec0f9dcec0d5945b
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Wed Sep 22 08:01:45 2010 +0800
+
+ Fix Bug #623558 - DSO linking against libgthread
+
+ It appears a few projects don't like implicit DSO linking...
+
+ configure.ac | 3 +++
+ src/Makefile.am | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 81baf4c61ea2bcdcfa0b0c7659306444e387f013
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Wed Sep 22 07:21:39 2010 +0800
+
+ Fix Bug #630258 - default option for --with-webkit was invalid
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=630258
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6361f9fc6c6a7eed53399e0eda72402517ec9496
+Author: Chris Mayo <aklhfex@gmail.com>
+Date: Fri Sep 10 07:30:04 2010 +0800
+
+ Bug 629216 - seed doesn't use docdir for documentation
+
+ Use docdir rather than hardcoded datadir subdirectory
+
+ Makefile.am | 6 ++----
+ config.h.in | 3 +++
+ doc/Makefile.am | 1 -
+ doc/mapping/Makefile.am | 2 +-
+ doc/modules/Makefile.am | 7 ++-----
+ doc/modules/canvas/Makefile.am | 2 +-
+ doc/modules/gtkbuilder/Makefile.am | 4 +---
+ doc/modules/multiprocessing/Makefile.am | 2 +-
+ doc/modules/readline/Makefile.am | 2 +-
+ doc/modules/sandbox/Makefile.am | 4 +---
+ doc/modules/sqlite/Makefile.am | 2 +-
+ doc/tutorial-standalone/Makefile.am | 2 +-
+ 12 files changed, 15 insertions(+), 22 deletions(-)
+
+commit c7476c4eea23549968dcf591774160c14437bdf8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 30 18:27:55 2010 -0400
+
+ Postrelease version bump
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f4798f474e0eecc0ec5bd2fea64bc8e2c8e64e85
+Author: Tim Horton <hortont@gnome.org>
+Date: Mon Aug 30 18:21:21 2010 -0400
+
+ Update readme for webkit build changes
+
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4d5ec90d0c29b05ae17e7c02565d4df3faeb850e
+Author: Tim Horton <hortont@gnome.org>
+Date: Mon Aug 30 18:19:31 2010 -0400
+
+ Update version number.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c47937a3d6a150ad6d5c0482b0a3110c3da44a21
+Author: Tim Horton <hortont@gnome.org>
+Date: Mon Aug 30 18:19:06 2010 -0400
+
+ Update news for release
+
+ NEWS | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 73198a47b80dcd04631fde9e733639dadf9ef04e
+Author: Tim Horton <hortont@gnome.org>
+Date: Mon Aug 30 17:56:00 2010 -0400
+
+ --with-webkit=3.0/1.0 instead of gtk-3.0/1.0, since the gtk distinction is meaningless (all of them are webkit-gtk, the name just changed)
+
+ configure.ac | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit e540d7fbc2eb95ed5ae92b3ed47b601dcdad4615
+Author: Funda Wang <fundawang@gmail.com>
+Date: Mon Aug 9 11:32:06 2010 +0800
+
+ Bug #626177 - Wrong LDFLAGS was used in libseed/Makefile.am
+
+ GOBJECT_INTROSPECTION_LIBS and WEBKIT_LIBS are acturally linking libs,
+ rather than linker flags, they should be put into LIBADD, rather than LDFLAGS.
+
+ See here:
+ http://wiki.mandriva.com/en/Underlinking
+
+ Futhermore, seed-types are calling dlerror() and dlsym(), but I could not find
+ -ldl in Makefile.
+
+ libseed/Makefile.am | 6 ++++--
+ modules/cairo/Makefile.am | 5 ++++-
+ modules/canvas/Makefile.am | 5 ++++-
+ modules/dbus/Makefile.am | 7 +++++--
+ modules/example/Makefile.am | 5 ++++-
+ modules/ffi/Makefile.am | 5 ++++-
+ modules/gettext/Makefile.am | 5 ++++-
+ modules/gtkbuilder/Makefile.am | 5 ++++-
+ modules/libxml/Makefile.am | 5 ++++-
+ modules/mpfr/Makefile.am | 7 ++++---
+ modules/multiprocessing/Makefile.am | 5 ++++-
+ modules/os/Makefile.am | 5 ++++-
+ modules/readline/Makefile.am | 7 +++++--
+ modules/sandbox/Makefile.am | 5 ++++-
+ modules/sqlite/Makefile.am | 6 +++++-
+ 15 files changed, 63 insertions(+), 20 deletions(-)
+
+commit 051a51167d573dce1c5e28289a0ab3d81681a912
+Author: Vincent Untz <vuntz@gnome.org>
+Date: Mon Aug 9 11:26:45 2010 +0800
+
+ Do not fail to detect libwebkitgtk-1.0
+
+ The library name got changed from libwebkit-1.0 to libwebkitgtk-1.0, so
+ we should support both.
+
+ configure.ac | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit f0a4e7be5ea6bdc5f991e806c972bca0d47791fc
+Author: Vincent Untz <vuntz@gnome.org>
+Date: Sat Aug 7 01:59:41 2010 +0200
+
+ Reference the right pkg-config for webkit in seed.pc
+
+ We need to make sure we reference webkit-1.0 if we build seed against
+ webkit-1.0.
+
+ configure.ac | 6 ++++--
+ seed.pc.in | 2 +-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 9c98a38779f47aa7eb7a82db9ea45b20c0b16056
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Jul 16 20:46:16 2010 +0200
+
+ Fix seed_object_copy_property_names ().
+
+ Due to a typo, it only returned up to n-1 chars for each property names,
+ where n is the amount of properties the object has, making it unusable.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=624562
+
+ libseed/seed-api.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a2ba35cd632a3ae15e7c320222fea7b02c79a84d
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Jul 16 20:29:44 2010 +0200
+
+ Expose seed_value_from_gvalue().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=624560
+
+ libseed/seed.h | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 1c70da1a5c2684d71d5cd7c5ad97076f7d7c25eb
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Jul 16 12:01:07 2010 +0800
+
+ bump g-i-r dependancy down to 0.6.3
+
+ As we have #ifdefs for new code we can support older versions (which are currently being included in distros..)
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ad9fcdcfa4db7b178d02389af48a59c087bc69a8
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Jul 16 11:53:10 2010 +0800
+
+ caller_allocates - only enabled on newer versions of g-i-r
+
+ add #ifdefs around caller allocates code to make sure it works with older versions of g-i-r
+
+ libseed/seed-engine.c | 23 ++++++++++++++++++-----
+ 1 files changed, 18 insertions(+), 5 deletions(-)
+
+commit e77116f169645e3b950a84790d072d86009d99ca
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Jul 16 11:51:09 2010 +0800
+
+ format change for intropsection version - now - GOBJECT_INTROSPECTION_VERSION = 0x000904
+
+ This enables fine tune checking for versions
+
+ configure.ac | 8 ++++----
+ libseed/Makefile.am | 3 +--
+ libseed/seed-closure.c | 4 ++--
+ libseed/seed-types.c | 6 +++---
+ 4 files changed, 10 insertions(+), 11 deletions(-)
+
+commit 65c532e13bf59aa8844a3d81d41197d7c897af5e
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Wed Jul 14 12:06:01 2010 +0800
+
+ Typo - fix configure option --with-webkit
+
+ used to say --with-seed-webkit on --help
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 72a9504225312f6c0999f7507af32938a4c25bdd
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue Jul 13 18:41:09 2010 +0800
+
+ caller_allocates support (FIXME - call failure leaks the allocated memory)
+
+ This implements the caller_allocates OUT values,
+
+ Note there is no support to free the allocated memory if the call fails.
+
+ libseed/seed-engine.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 97 insertions(+), 5 deletions(-)
+
+commit d31acaad673eecd97e3f70720af81c9ef34ab4cd
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Tue Jul 13 15:58:32 2010 +0800
+
+ Dynamic Object module - a module to expose internal object callback properties
+
+ Usage:
+
+ o = imports.DynamicObject.create({
+ getProperty: function(name) {
+ return some_value; // or null to forward to normal props
+ },
+ SetProperty: function(name, value) {
+ do_something(name,value);
+ return true; // or false to allow normal props to be set
+ },
+ deleteProperty: function(name) {
+ return true; // or false to forward to normal property deletion
+ },
+ callAsFunction: function() {
+ print("called with args: "+Array.prototype.slice.call(arguments));
+ },
+ callAsConstructor: function() {
+ return {foo:123};
+ },
+ getPropertyNames: function(){} // not implemented yet...
+ });
+
+ o.foobar = 42; // will call o.set_property('foobar',42)
+ print(o.something); // will call o.get_property('something)
+
+ configure.ac | 14 ++
+ modules/DynamicObject/Makefile.am | 25 ++++
+ modules/DynamicObject/seed-DynamicObject.c | 205 ++++++++++++++++++++++++++++
+ modules/Makefile.am | 2 +-
+ 4 files changed, 245 insertions(+), 1 deletions(-)
+
+commit b9a71e10a2fa30cb45ad2fe7ecbcc7ece6e1c941
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue Jul 13 11:42:39 2010 +0800
+
+ Support for gobject introspection pre-0.9
+
+ Set's up defines for GOBJECT_INTROSPECTION_VERSION_MAJOR and GOBJECT_INTROSPECTION_VERSION_MINOR
+
+ configure.ac | 8 ++++++++
+ libseed/Makefile.am | 4 +++-
+ libseed/seed-closure.c | 41 ++++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-types.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 98 insertions(+), 2 deletions(-)
+
+commit c8174c8ea9f184f45e810315bd1d41955f284277
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Mon Jul 12 16:38:12 2010 +0800
+
+ Webkit-3.0 fix last commit
+
+ Got the default name wrong on last commit.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ae2d2a618ead6dab7a298222382d2c8b273ed585
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Mon Jul 12 16:36:57 2010 +0800
+
+ Enable build to work with Webkit-1.0 --with-webkit=1.0
+
+ Defaults still builds with 3.0
+
+ configure.ac | 26 ++++++++++++++++++++++++--
+ 1 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 243cdfa80a47a18b8e4dd6bd1547f722b477bbcb
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 23:13:15 2010 -0700
+
+ Postrelease version bump
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3581c38b79403910afb0907ece3fb95286b69f05
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 23:03:34 2010 -0700
+
+ Correct version (2.31.5)
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8bf3911b4cbc7bc472e57006c6d0e9a5731500e1
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 23:02:50 2010 -0700
+
+ Update news
+
+ NEWS | 14 ++++++++++++++
+ 1 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 98ed3001015e37ad66982cc3e3fc8f0a999117a3
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 22:49:39 2010 -0700
+
+ Update readme for WebKit changes.
+
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c4685dc7fe98f3af48a805d65cafcfb5be8de931
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 22:37:28 2010 -0700
+
+ Remove check for JSContextGroupCreate now that we're 3.0+ only
+
+ config.h.in | 3 ---
+ configure.ac | 6 ------
+ 2 files changed, 0 insertions(+), 9 deletions(-)
+
+commit 05b2755106c73ee4e431c6b12ed426ba7b749b07
+Author: Diego Escalante Urrelo <descalante@igalia.com>
+Date: Thu Jul 1 11:00:05 2010 -0500
+
+ Build with webkitgtk-3.0
+
+ Bug #623302
+
+ config.h.in | 4 ++--
+ configure.ac | 6 +++---
+ seed.pc.in | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 689e8018c87c65c77a1e5e96acb30dab91bd05e5
+Author: Tim Horton <hortont@gnome.org>
+Date: Sun Jul 11 17:38:19 2010 -0700
+
+ Fix build with latest GI, where machine-dependent type tags were removed.
+
+ libseed/seed-closure.c | 36 ------------------------------------
+ libseed/seed-types.c | 37 +------------------------------------
+ 2 files changed, 1 insertions(+), 72 deletions(-)
+
+commit b63973c61e75e59a9256a0c0a0cf90b0fad80afb
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Mon Jul 12 11:04:00 2010 +0800
+
+ seed.h - SeedObjectDeletePropertyCallback fix callback arguments
+
+ make seed's callback arguments for deleteProperty match Webkit
+ no real need for value to be passed in delete callback
+
+ Fixes arguments so they match the Webkit spec
+
+ libseed/seed.h | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 97daccc00d1f2dda5ead4f1404baedf1c3e7d0ed
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sun Jul 11 17:27:09 2010 +0800
+
+ Caller Allocate fixes - bump required introspection version to 0.6.14
+
+ See bug #615861 for discussion on gtk_status_icon_get_geometry data
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5bab9a93c01d2063ec0d70b28d09ddf2ad8747a5
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Mon Jul 5 13:55:12 2010 +0800
+
+ Closure/Callbacks as return values - currently not handled, but prevents segfaults
+
+ example : GLib.log_set_default_handler(f,null);
+ Returns (f) the callback, our code does not currently handle this so we probably just return null
+
+ libseed/seed-types.c | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit bbbc6f9d79d62fb0c220d155dec98a823830299c
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Mon Jul 5 13:15:47 2010 +0800
+
+ Importer : prevent print(imports.somefile) running "somefile/toString.js
+
+ also fixes toValue.js as well.
+
+ libseed/seed-importer.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 98550799a4e8861d0d2c4ff8fc4e1aafd4909e0e
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Mon Jul 5 13:08:17 2010 +0800
+
+ Seed.print - change to use g_print, rather than puts
+
+ Changes Seed.print to use g_print, this enables set_print_handler to be used to redirect output.
+
+ libseed/seed-builtins.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1441bf86f7fc02cc7717b88f88ae85ba175eb726
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Wed Jun 30 10:19:31 2010 +0800
+
+ Sandbox: handle situation where __script_path__ was not set
+
+ Fix to previous commit, handling situation where __script_path__ was not set in calling script
+
+ modules/sandbox/seed-sandbox.c | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 5b169f4086f735a9921f4c049e66cf3d264dca38
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Wed Jun 30 10:08:17 2010 +0800
+
+ Sandbox : set up __script_path__ in new context
+
+ Sets the __script_path__ to be the same as the calling scripts path for new Contexts.
+
+ modules/sandbox/seed-sandbox.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit dd8c459cd3ecc38c68d7d2f1cfdc038ce2a2ad4d
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Tue Jun 29 23:03:32 2010 +0800
+
+ Fix Compiler warning
+
+ Cast JSValueMakeNull on make_struct / make_union to JSObjectRef to remove compiler warnings.
+
+ libseed/seed-structs.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d51f744c49a305717d66bc96962f83d89ba8c176
+Author: Jonatan Liljedahl <j.r.liljedahl@gmail.com>
+Date: Tue Jun 29 22:52:48 2010 +0800
+
+ Fix module loading, add support for Javascript wrappers for modules
+
+ Fixes issue that modules references are free'd once they go out of scope, hence forcing reloading of module each time
+ Add the feature that once a module is loaded, it also will attempt to load libseed_XXXXX.js from the same directory.
+ This can be used to add features to the module
+
+ libseed/seed-importer.c | 21 ++++++++++++++++++---
+ 1 files changed, 18 insertions(+), 3 deletions(-)
+
+commit 6f4a8bd1178150df20ea071716086784094830c5
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue Jun 29 18:36:10 2010 +0800
+
+ Revert "Allow access to global object of sandbox"
+
+ This code was not needed, as context.global already existed
+
+ This reverts commit a7d0f88b19e1142b9dafbe184bcb1d97a636dbf6.
+
+ modules/sandbox/seed-sandbox.c | 20 --------------------
+ 1 files changed, 0 insertions(+), 20 deletions(-)
+
+commit edb3288b0c7359644342ab0f10cfa69c53f6b117
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Jun 18 19:06:15 2010 +0800
+
+ Change the default search order of searchPath
+
+ - First place looked is the same directory as __script_path__
+ - Second is the initial __script_path__ of the application
+ - Lastly, looks in all other locations. (eg. modules/ library paths etc.)
+ * removes looking in current working directory (was previous behaviour)
+
+ extensions/Seed.js.in | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 5d41b2a81c8a6d99bd0aa02f89760022bfee2bed
+Author: Jonatan Liljedahl <lijon@kymatica.com>
+Date: Fri Jun 18 18:57:44 2010 +0800
+
+ Refactor import code, implement '.' in search path, is equivilant to __script_path__
+
+ All importer codes works as follows
+ - iterate through search_path
+ - match file or directory eg. imports['file.js'] or imports.TheDirectoryName
+ - match .js file eg. imports.filename -> filename.js
+ - match module eg. imports.somelib -> libseed_somelib.so
+
+ libseed/seed-importer.c | 216 ++++++++++++++++++-----------------------------
+ 1 files changed, 82 insertions(+), 134 deletions(-)
+
+commit dbcaa116d1762d28d56cabdf27da750ea3c296b2
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Thu May 6 17:07:24 2010 +0800
+
+ Better null warning message checking
+
+ The original assumption that looking for a pointer where an interface was expected produced warnings for
+ GValues - this makes a assumption that basic types (not objects) would be allowed where interfaces where
+ expected.. - hopefully our casting code produces another warning if the types do not match.
+
+ libseed/seed-engine.c | 16 ++++++++++++----
+ 1 files changed, 12 insertions(+), 4 deletions(-)
+
+commit 7e337de26b10a7670b7d438e9037884d4a216fac
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue May 4 12:56:42 2010 +0800
+
+ struct - constructor set_property - show warning on failure
+
+ rather than silently ignore failure, show a g_warning message
+
+ libseed/seed-structs.c | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit d308d7d9421acf704fca98d90d0023e336451227
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Tue May 4 12:49:54 2010 +0800
+
+ struct - set_property - show warning on failure
+
+ rather than silently ignore failure, show a g_warning message
+
+ libseed/seed-structs.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 3791ecad4d0fb31a50077bd102a898544b6c0cfc
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sun Apr 18 15:37:14 2010 +0800
+
+ Add void* userdata support for gobjects
+
+ gtk_menu_popup void* userdata when used with gtk_statusicon_position_menu
+ expect the userdata to be a pointer to the status icon. This change checks void*
+ arguments and if they are gobjects, sends them.
+
+ libseed/seed-types.c | 24 +++++++++++++++++++++---
+ 1 files changed, 21 insertions(+), 3 deletions(-)
+
+commit c67c8034d0cfd0f5c69b8f6fb726e9e24b502fc6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 29 00:12:00 2010 -0400
+
+ Postrelease version bump.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 076e20be56601bd470a8297f5226968757140727
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 29 00:04:27 2010 -0400
+
+ Update NEWS for 2.31.1
+
+ NEWS | 11 +++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit eb6b9c9eb55fc6e71872c459b7a8f2db5341e705
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Mar 28 23:33:55 2010 -0400
+
+ Update NEWS for 2.30
+
+ NEWS | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 45e262f545cb6be137eeb6632dd8605237d8f8f4
+Author: Alexandre Mazari <scaroo@gmail.com>
+Date: Wed Mar 17 12:12:49 2010 +0800
+
+ Add gtkdocs for Request #612590 - initialization using existing context
+
+ gtkdoc comments for 2 new methods to initialize using existing context
+
+ libseed/seed-engine.c | 33 ++++++++++++++++++++++++++++++++-
+ 1 files changed, 32 insertions(+), 1 deletions(-)
+
+commit 0d89528065d18af2c17c29b79649819015bad3ab
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Mar 12 12:31:57 2010 +0800
+
+ Nicer warning messages on our temporary warning about not_null check
+
+ As we do not throw Exceptions currently, it is difficult to work out what caused a warning,
+ This just adds the Container/Namespace of the method that caused the problem
+
+ libseed/seed-engine.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 675adddd0711902892de9b4b9366f83cce939b4c
+Author: Alexandre Mazari <scaroo@gmail.com>
+Date: Fri Mar 12 12:17:24 2010 +0800
+
+ Feature Request #612590 - permit initialization using an existing JSGlobalContext
+
+ Usage example:
+
+ SeedEngine *eng;
+ void window_object_cleared (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ gpointer context,
+ gpointer arg3,
+ gpointer user_data) {
+ eng = seed_init_with_context(NULL, NULL, context);
+ }
+ ....
+ g_signal_connect(G_OBJECT(web_view), "window-object-cleared",
+ G_CALLBACK(window_object_cleared), NULL);
+
+ libseed/seed-engine.c | 56 +++++++++++++++++++++++++++++++++---------------
+ libseed/seed.h | 6 ++++-
+ 2 files changed, 43 insertions(+), 19 deletions(-)
+
+commit 848d7b2d7b56477a3ef56e2c8a731b2f210e1f22
+Author: Alan Knowles <alan@akkbhome.com>
+Date: Thu Mar 11 23:03:47 2010 +0800
+
+ change callback release_in_arg to release_arg otherwise segfaults occur
+
+ ClipboardTextReceivedFunc - char* text got freed before it was used.
+ The logic in release_in_arg is inconsitant with what I think is being attempted here.
+
+ libseed/seed-closure.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a7d0f88b19e1142b9dafbe184bcb1d97a636dbf6
+Author: Alan Knowles <alan@alanfast.akbkhome.com>
+Date: Thu Mar 11 15:09:19 2010 +0800
+
+ Allow access to global object of sandbox
+
+ x = new imports.sandbox.Context();
+ x.add_globals();
+ x.get_global_object().a = "hello world";
+ x.eval("Seed.print(a);");
+
+ Very usefull to implement a Console...
+
+ modules/sandbox/seed-sandbox.c | 20 ++++++++++++++++++++
+ 1 files changed, 20 insertions(+), 0 deletions(-)
+
+commit c652bb73c3e28cfdfb8494bbdde5d90a927bc5f8
+Author: Alan Knowles <alan@alanfast.akbkhome.com>
+Date: Tue Mar 9 17:15:36 2010 +0800
+
+ Use fully qualified paths when sending to Evaluate script, so error messages are clearer
+
+ If you have two files called Abc.js in two different directories, the error message for syntax error (and others)
+ does not distinguish between them. The fix is to send the fully qualified path to the method.
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2c46218b7459d0f47b9ae5043c38e8f797c1a293
+Author: Alan Knowles <alan@alanfast.akbkhome.com>
+Date: Mon Mar 1 17:06:01 2010 +0800
+
+ Change null into a warning for the time being, due to gir's need to catch up
+
+ Introspection tells us which arguments can be null, however the gir's for most packages have not been
+ updated to show this (Gtk had a big patchfest last week to add this, but it will not be reflected on end users
+ desktop gir's for a while) - until then we issue g_warnings.
+
+ libseed/seed-engine.c | 12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+commit ad29012e1a4fee2692077ef44fde42acca6194f8
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Fri Feb 26 17:20:42 2010 +0800
+
+ More null checks - arguments that are structs/unions need the pointer checking to see if they are null
+
+ This may need moving upwards into make_argument, but that would mean the error messages would be less useful.
+
+ libseed/seed-engine.c | 29 ++++++++++++++++++++++-------
+ 1 files changed, 22 insertions(+), 7 deletions(-)
+
+commit 6b260de005921f125b45b62ccb4b8f5860b3befd
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 13:42:16 2010 +0800
+
+ More detail on introspection of functions
+
+ Adds name, direction and allow_none
+
+ libseed/seed-builtins.c | 24 ++++++++++++++++++++----
+ 1 files changed, 20 insertions(+), 4 deletions(-)
+
+commit 587a0d3fe2f84797a57c39df0f041d0d649a4039
+Author: root <alan@akbkhome.com>
+Date: Wed Feb 24 13:32:54 2010 +0800
+
+ Change Gtype conversion to use long
+
+ After reading the commit history - one of the notes mentioned that Gtypes should be long..
+
+ libseed/seed-types.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 52839cb9e8993c1cfa90286f2526cb1db845d3e1
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 13:07:39 2010 +0800
+
+ Fix Bug #609508 - Support Out args as return object if possible
+
+ Fixes issues with in/out arguments
+ Better debug message (names the argument)
+ For calls that have 'out' arguments
+ a) If return is VOID - the return is an object, with properties set to the out values
+ b) If the first out argument is an object, then all the out values are set as properties on that.
+ c) still supports out_argument.value setting (previous way of doing this)
+
+ libseed/seed-engine.c | 95 ++++++++++++++++++++++++++++++++++++++++---------
+ 1 files changed, 78 insertions(+), 17 deletions(-)
+
+commit d7897d2dc8a590302b8b0c14c813b573b86e6d98
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 12:54:45 2010 +0800
+
+ White space fix
+
+ White space fix
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 75c51fbc6b021bcb1225bdb25eca4ca284f75a39
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 12:49:58 2010 +0800
+
+ Fix Bug #610786 - support for GError types in seed_gi_argument_make_js
+
+ Used by gst_message_parse_error() - turns gerror into non-thrown exception
+
+ libseed/seed-types.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit d8749191461e427d3b68360781af8b157752d73d
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 12:31:30 2010 +0800
+
+ Fix Bug# 610765 - test g_arg_info_may_be_null before accepting null
+
+ Correct behaviour is to read gir hints on null for arguments - otherwise segfaults happen...
+ This does however break a few function calls, that have got broken gir notes,
+ eg. gtk_drag_source_set gtk_drag_dest_set and gst_bus_add_watch
+
+ libseed/seed-engine.c | 19 +++++++++++++++++--
+ 1 files changed, 17 insertions(+), 2 deletions(-)
+
+commit 6a62d673c077c08726a9eb9c1b106ce900dfdc66
+Author: alan <alan@alanfast.akbkhome.com>
+Date: Wed Feb 24 11:35:00 2010 +0800
+
+ Fix Bug #610793 - support for array of GTypes
+
+ used by g_type_get_interfaces - which returns an array of Gtypes
+
+ libseed/seed-types.c | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit ad8db911265bbd356882344ed046c3830d200199
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Feb 22 20:59:47 2010 -0500
+
+ Post-release version increment.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5b6dc6bb35c999747fb15ffe7782c3ff5f49ef13
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Feb 22 20:58:52 2010 -0500
+
+ 2.29.91.1 release (oops!)
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit fb55efd88b03fd51510232e505233c309a16146e
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Sun Feb 21 11:32:35 2010 +0800
+
+ Fix Bug #610533 - Support void* pointers
+
+ Gio.outputstream.write() uses void* pointers to write generic data.
+
+ libseed/seed-types.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 79492a4c30600fd9c86bd345d7828d6e0354217f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Feb 18 18:19:19 2010 -0500
+
+ Ignore m4 dir (which we don't need in Git)
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 478c02751e32b327feeb5b52a5069e2c049446aa
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Feb 18 18:19:04 2010 -0500
+
+ Fix missing signal test
+
+ tests/javascript/signals/signal-invalid.js | 11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 9ff411c674f47b3464777993db4ca6976b94234c
+Author: Diego Escalante Urrelo <descalante@igalia.com>
+Date: Wed Feb 17 17:04:54 2010 -0500
+
+ seed-signals: allow notify:: signals
+
+ g_signal_query/g_signal_lookup don't recognize notify::x signal names,
+ they do recognize notify signal of course. Take this into account and
+ enable connecting to notify::x signals like shown by documentation.
+ Also add a SeedException when signal name is not valid instead of just
+ returning NULL.
+
+ Bug #610311
+
+ libseed/seed-signals.c | 16 +++++++++++++---
+ 1 files changed, 13 insertions(+), 3 deletions(-)
+
+commit a042207f17caa1d3d5926d11e29cffbb85346cf8
+Author: Diego Escalante Urrelo <descalante@igalia.com>
+Date: Wed Feb 17 16:56:43 2010 -0500
+
+ m4 dir is not needed at all
+
+ Bug #610314
+
+ configure.ac | 2 -
+ m4/intltool.m4 | 216 --
+ m4/libtool.m4 | 7376 -----------------------------------------------------
+ m4/ltoptions.m4 | 368 ---
+ m4/ltsugar.m4 | 123 -
+ m4/ltversion.m4 | 23 -
+ m4/lt~obsolete.m4 | 92 -
+ m4/shave.m4 | 102 -
+ 8 files changed, 0 insertions(+), 8302 deletions(-)
+
+commit 3bab763addf2c37454f0c8c349a806b7e2c55d64
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Feb 8 18:46:49 2010 -0500
+
+ Post-release version increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bfebe34bf15e6e17ea8c32eb78002b39fac3f2d1
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Feb 8 18:44:23 2010 -0500
+
+ NEWS for 2.29.90
+
+ NEWS | 9 +++++++++
+ configure.ac | 2 +-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit e29a3aca80d3e7d1095a093e2778ce6433aa9b0e
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Feb 5 21:10:58 2010 -0500
+
+ imports['somedir/somefile.js'] works now
+
+ Closes BGO#607987
+
+ libseed/seed-importer.c | 18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+commit dbf7423f196043966b90fa4aad6dc50f51647bf5
+Author: Alan Knowles <alan@akbkhome.com>
+Date: Fri Feb 5 20:57:24 2010 -0500
+
+ Fix handling of GValue structs; fixes segfault
+
+ Fixes gtk_tree_model_get_value calls eventually segfaulting
+ Fixes BGO#608015
+
+ libseed/seed-engine.c | 11 ++++++++---
+ libseed/seed-structs.c | 24 ++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 3 deletions(-)
+
+commit 9a7d0b8d303909a0073bd1ca0009416554470754
+Author: Rob Taylor <rob.taylor@codethink.co.uk>
+Date: Tue Feb 2 23:22:40 2010 +0000
+
+ Fix subtle crashed when a dbus reply has no message content.
+
+ In the DBus spec, its perfectly valid to send empty reply messages, even
+ if a method call message has been set 'no_reply'. In this case, the dbus
+ module was invoking a closure with uninitialised data, causing all sorts
+ of interesting behaviour.
+
+ This patch fixes this by not invoking the
+ closure when a reply is empty.
+
+ modules/dbus/module.c | 15 ++++++++++++++-
+ 1 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 227f3df192bd6df029f3779a26e35e9a4a343a9b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 25 18:10:35 2010 -0500
+
+ Post-release version bump.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8c9a7f4f7bd2fbc7b380e2718d2375c1a346959a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 22 16:25:38 2010 -0500
+
+ Update manpage and --help output with -e, etc.
+
+ doc/seed.1 | 9 ++++++++-
+ src/args.c | 2 +-
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit f7c089d060eb030a6af4dcaa370e5c6c649db5ef
+Author: Matt Arsenault <arsenm2@rpi.edu>
+Date: Sun Jan 17 01:46:34 2010 -0500
+
+ Add -e option to repl.
+
+ src/args.c | 6 +++++-
+ src/main.c | 50 +++++++++++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 48 insertions(+), 8 deletions(-)
+
+commit aec73be07dc64cf77de23ff637f1d568d21299b2
+Author: Matt Arsenault <arsenm2@rpi.edu>
+Date: Wed Jan 6 14:11:54 2010 -0500
+
+ Minor mpfr style change
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 66 ++++++++++++++--------------
+ modules/mpfr/seed-mpfr-cmp.c | 30 ++++++------
+ modules/mpfr/seed-mpfr-trig.c | 82 +++++++++++++++++-----------------
+ modules/mpfr/seed-mpfr.c | 70 +++++++++++++++---------------
+ 4 files changed, 124 insertions(+), 124 deletions(-)
+
+commit 32997f9ee3d2f407125b4d6f1ee4015a750e71f4
+Author: Matt Arsenault <arsenm2@rpi.edu>
+Date: Wed Jan 6 14:03:33 2010 -0500
+
+ Change copyright header of mpfr module
+
+ I wrote this useless part, not Robb, and it's 2010.
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 2 +-
+ modules/mpfr/seed-mpfr-cmp.c | 2 +-
+ modules/mpfr/seed-mpfr-trig.c | 2 +-
+ modules/mpfr/seed-mpfr.c | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 59ff5495fb88023a3bcf615cc2e9499b54caec7b
+Author: Matt Arsenault <arsenm2@rpi.edu>
+Date: Wed Jan 6 12:34:59 2010 -0500
+
+ Add printerr
+
+ libseed/seed-builtins.c | 33 +++++++++++++++++++++++++++++++++
+ libseed/seed-builtins.h | 1 +
+ libseed/seed-engine.c | 10 ++++++----
+ 3 files changed, 40 insertions(+), 4 deletions(-)
+
+commit 46d543e06a32ce4c2ec9dbecbf4eac7c0df28570
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 16 05:03:19 2010 -0500
+
+ The manpage had completely incorrect command line arguments (triple dashes?!)
+
+ doc/seed.1 | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 5efce55da01646afdf1c46edefa27d62f04292da
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 14 23:36:17 2010 -0500
+
+ libseed: Properly bubble exceptions raised during class init
+
+ Before, we were simply catching the exception, printing it, and continuing
+ on happily. This completely defeats the point of exceptions. Now, we pop
+ the exception into the class's qdata (a little ugly) and bubble it up and
+ clear it the first time we encounter it (when the class is created, the
+ first time it's instantiated).
+
+ libseed/seed-engine.c | 15 +++++++++++++++
+ libseed/seed-gtype.c | 11 ++++-------
+ .../gtypes/gtype-class-init-exception.js | 9 +--------
+ 3 files changed, 20 insertions(+), 15 deletions(-)
+
+commit f23eef37bae31dc8c39678f5282a089cdafba21a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 14 20:37:02 2010 -0500
+
+ Revert "tests: make check should test against version in build tree, not installed"
+
+ This seems to make some things angry, and it doesn't totally make sense
+ (if build tree is elsewhere, or one uses 'clean', or whatever)
+
+ This reverts commit 018aaa4edbc49f1b1db1ea54417388f857ee3f12.
+
+ tests/javascript/argv.js | 4 ++--
+ tests/javascript/array-gtype.js | 2 +-
+ tests/javascript/builtin-argument-length.js | 2 +-
+ tests/javascript/check-syntax.js | 2 +-
+ tests/javascript/closure-finalization.js | 2 +-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/constructor-args.js | 2 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 2 +-
+ tests/javascript/fork.js | 2 +-
+ tests/javascript/function-info.js | 2 +-
+ tests/javascript/gdk-event.js | 2 +-
+ tests/javascript/gerror.js | 2 +-
+ tests/javascript/gobject-scope.js | 2 +-
+ .../gtypes/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtypes/gtype-extraprop.js | 2 +-
+ tests/javascript/gtypes/gtype-gtype-class-init.js | 2 +-
+ tests/javascript/gtypes/gtype-gtype.js | 2 +-
+ .../javascript/gtypes/gtype-property-construct.js | 2 +-
+ tests/javascript/gtypes/gtype-property-nice.js | 2 +-
+ tests/javascript/gtypes/gtype-property.js | 2 +-
+ tests/javascript/gtypes/gtype-self.js | 2 +-
+ tests/javascript/gtypes/gtype-signal-args.js | 2 +-
+ tests/javascript/gtypes/gtype-signal.js | 2 +-
+ tests/javascript/gtypes/gtype-typerror.js | 2 +-
+ tests/javascript/gtypes/gtype.js | 2 +-
+ tests/javascript/gvalue-argument.js | 2 +-
+ tests/javascript/include-syntax.js | 2 +-
+ tests/javascript/include.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 2 +-
+ tests/javascript/json.js | 2 +-
+ tests/javascript/list-test.js | 2 +-
+ tests/javascript/modules-noasserts.js | 2 +-
+ tests/javascript/modules.js | 4 ++--
+ tests/javascript/native-closure-exception.js | 2 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/object-info.js | 2 +-
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/property-benchmark.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/quit.js | 2 +-
+ tests/javascript/signals/signal-connect.js | 2 +-
+ tests/javascript/signals/signal-disconnect.js | 2 +-
+ tests/javascript/signals/signal-exception.js | 2 +-
+ tests/javascript/signals/signal-expects.js | 2 +-
+ tests/javascript/signals/signal-invalid.js | 2 +-
+ tests/javascript/signals/signal-nofunc.js | 2 +-
+ tests/javascript/signals/signal-userdata.js | 2 +-
+ tests/javascript/signals/signal.js | 2 +-
+ tests/javascript/sqlite.js | 2 +-
+ tests/javascript/structs/struct-constructor.js | 2 +-
+ tests/javascript/structs/struct-enumerate.js | 2 +-
+ tests/javascript/structs/struct-functions.js | 2 +-
+ tests/javascript/structs/struct-nested-set.js | 2 +-
+ tests/javascript/structs/struct-null.js | 2 +-
+ tests/javascript/structs/struct-offsets.js | 2 +-
+ tests/javascript/structs/struct-set-member.js | 2 +-
+ tests/javascript/structs/struct-union-enumerate.js | 2 +-
+ tests/javascript/syntax-test.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ 62 files changed, 64 insertions(+), 64 deletions(-)
+
+commit 1300996938d77f8ea7e6739b4d912b7f79274831
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jan 12 01:35:35 2010 -0500
+
+ libseed: Fix passing a union out to a C function
+
+ The parent class of seed_union was set to seed_union (undefined at that point);
+ I believe it should be seed_pointer, just like seed_struct
+
+ libseed/seed-structs.c | 8 +++++++-
+ libseed/seed-structs.h | 1 +
+ libseed/seed-types.c | 9 ++++++---
+ 3 files changed, 14 insertions(+), 4 deletions(-)
+
+commit 4191e15dc1ad76dcbdcab987d9a164a8c95aaaba
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 11 17:27:44 2010 -0500
+
+ Postrelease increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e53256d65a8b53d5edb19cac1a838f06baccc91a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 11 17:24:33 2010 -0500
+
+ Add 2.29.5.3 NEWS, and fix 2009->2010 problems
+
+ NEWS | 13 +++++++++++--
+ 1 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 707c97582d337de732d404ad6575712827f9f636
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 11 17:15:26 2010 -0500
+
+ tests: add test for null struct return values
+
+ tests/javascript/structs/Makefile.am | 2 ++
+ tests/javascript/structs/struct-null.js | 14 ++++++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 22c6df348844cb1e56bf9389fb1cdd51865b1a46
+Author: Ryan Brown <r@nodr.org>
+Date: Sun Jan 10 21:46:09 2010 -0600
+
+ Allow null struct return values
+
+ libseed/seed-structs.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit c5bc24848ce30ba79b463b1440d12ad330fb8ea0
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 8 19:12:58 2010 -0500
+
+ Revert "Fix incorrect type assumption"
+
+ We'll have to revisit this; it breaks things on Linux, and is all mired
+ in my lack of understanding
+
+ This reverts commit 07db8b4966ca85a256137d32eeca2a634f473825.
+
+ libseed/seed-types.c | 42 +-----------------------------------------
+ 1 files changed, 1 insertions(+), 41 deletions(-)
+
+commit 38ef8720434aff3447a442c31549d46d72e330e8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 7 20:40:05 2010 -0500
+
+ modules: Use NULL instead of 0 to ensure type safety
+
+ modules/cairo/seed-cairo.c | 6 +-
+ modules/canvas/seed-canvas.c | 4 +-
+ modules/dbus/module.c | 16 ++---
+ modules/ffi/seed-ffi.c | 2 +-
+ modules/gettext/seed-gettext.c | 2 +-
+ modules/libxml/seed-libxml.c | 72 ++++++++++++------------
+ modules/mpfr/seed-mpfr.c | 4 +-
+ modules/multiprocessing/seed-multiprocessing.c | 2 +-
+ modules/os/seed-os.c | 2 +-
+ modules/readline/seed-readline.c | 2 +-
+ modules/sandbox/seed-sandbox.c | 2 +-
+ modules/sqlite/seed-sqlite.c | 2 +-
+ 12 files changed, 57 insertions(+), 59 deletions(-)
+
+commit 98394c7c42068eec85e52f0166a9e054978ef1fb
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 7 19:17:09 2010 -0500
+
+ Add null sentinels to the end of seed_static_function and seed_static_value
+ arrays in all modules; fixes BGO #592585
+
+ modules/gettext/seed-gettext.c | 3 ++-
+ modules/libxml/seed-libxml.c | 3 ++-
+ modules/multiprocessing/seed-multiprocessing.c | 3 ++-
+ modules/os/seed-os.c | 3 ++-
+ modules/readline/seed-readline.c | 3 ++-
+ modules/sqlite/seed-sqlite.c | 6 ++----
+ 6 files changed, 12 insertions(+), 9 deletions(-)
+
+commit 71603e62d177324f8c3db281229be45919846385
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 7 19:11:30 2010 -0500
+
+ Post-release increment.
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 17e5509b4c5c0abfec77a0eb880d4b9932311eae
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jan 7 19:08:51 2010 -0500
+
+ Release 2.29.5.2
+
+ NEWS | 17 +++++++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 18 insertions(+), 1 deletions(-)
+
+commit 018aaa4edbc49f1b1db1ea54417388f857ee3f12
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 04:06:59 2010 -0500
+
+ tests: make check should test against version in build tree, not installed
+
+ tests/javascript/argv.js | 4 ++--
+ tests/javascript/array-gtype.js | 2 +-
+ tests/javascript/builtin-argument-length.js | 2 +-
+ tests/javascript/check-syntax.js | 2 +-
+ tests/javascript/closure-finalization.js | 2 +-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/constructor-args.js | 2 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 2 +-
+ tests/javascript/fork.js | 2 +-
+ tests/javascript/function-info.js | 2 +-
+ tests/javascript/gdk-event.js | 2 +-
+ tests/javascript/gerror.js | 2 +-
+ tests/javascript/gobject-scope.js | 2 +-
+ .../gtypes/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtypes/gtype-extraprop.js | 2 +-
+ tests/javascript/gtypes/gtype-gtype-class-init.js | 2 +-
+ tests/javascript/gtypes/gtype-gtype.js | 2 +-
+ .../javascript/gtypes/gtype-property-construct.js | 2 +-
+ tests/javascript/gtypes/gtype-property-nice.js | 2 +-
+ tests/javascript/gtypes/gtype-property.js | 2 +-
+ tests/javascript/gtypes/gtype-self.js | 2 +-
+ tests/javascript/gtypes/gtype-signal-args.js | 2 +-
+ tests/javascript/gtypes/gtype-signal.js | 2 +-
+ tests/javascript/gtypes/gtype-typerror.js | 2 +-
+ tests/javascript/gtypes/gtype.js | 2 +-
+ tests/javascript/gvalue-argument.js | 2 +-
+ tests/javascript/include-syntax.js | 2 +-
+ tests/javascript/include.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 2 +-
+ tests/javascript/json.js | 2 +-
+ tests/javascript/list-test.js | 2 +-
+ tests/javascript/modules-noasserts.js | 2 +-
+ tests/javascript/modules.js | 4 ++--
+ tests/javascript/native-closure-exception.js | 2 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/object-info.js | 2 +-
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/property-benchmark.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/quit.js | 2 +-
+ tests/javascript/signals/signal-connect.js | 2 +-
+ tests/javascript/signals/signal-disconnect.js | 2 +-
+ tests/javascript/signals/signal-exception.js | 2 +-
+ tests/javascript/signals/signal-expects.js | 2 +-
+ tests/javascript/signals/signal-invalid.js | 2 +-
+ tests/javascript/signals/signal-nofunc.js | 2 +-
+ tests/javascript/signals/signal-userdata.js | 2 +-
+ tests/javascript/signals/signal.js | 2 +-
+ tests/javascript/sqlite.js | 2 +-
+ tests/javascript/structs/struct-constructor.js | 2 +-
+ tests/javascript/structs/struct-enumerate.js | 2 +-
+ tests/javascript/structs/struct-functions.js | 2 +-
+ tests/javascript/structs/struct-nested-set.js | 2 +-
+ tests/javascript/structs/struct-offsets.js | 2 +-
+ tests/javascript/structs/struct-set-member.js | 2 +-
+ tests/javascript/structs/struct-union-enumerate.js | 2 +-
+ tests/javascript/syntax-test.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ 61 files changed, 63 insertions(+), 63 deletions(-)
+
+commit 362280cd799419b41eb0919bce0a33290942ff68
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 03:53:37 2010 -0500
+
+ tests: Make C-based test run too
+
+ tests/c/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit f8d07c7157afd249dada6f58182bccdc26785103
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 03:47:37 2010 -0500
+
+ tests: Ditch the python test framework, use standard make check with a small
+ set of JavaScript functions to deal with assertions and unreachable code
+ and whatnot. Also, clean up some tests, and remove some that made no sense
+ whatsoever.
+
+ Three or four tests still don't work (and print output to that effect)
+ because of strange exception-chaining problems which I'm going to look into.
+
+ Makefile.am | 5 +-
+ tests/Makefile.am | 7 +-
+ tests/javascript/Makefile.am | 49 +++++++--
+ tests/javascript/argv.js | 6 +-
+ tests/javascript/array-gtype.js | 16 ++-
+ tests/javascript/builtin-argument-length.js | 111 +++++++++-----------
+ tests/javascript/c-module.js | 7 --
+ tests/javascript/check-syntax.js | 42 ++++++--
+ tests/javascript/closure-finalization.js | 12 ++-
+ tests/javascript/compare.js | 10 +-
+ tests/javascript/constructor-args.js | 15 ++--
+ tests/javascript/constructor-prototype.js | 17 ++--
+ tests/javascript/enum.js | 14 +--
+ tests/javascript/everything.js | 111 ++++++++++----------
+ tests/javascript/fork.js | 20 +---
+ tests/javascript/function-info.js | 13 +--
+ tests/javascript/gdk-event.js | 35 +++---
+ tests/javascript/gerror.js | 12 +--
+ tests/javascript/gobject-scope.js | 12 +--
+ tests/javascript/gtypes/Makefile.am | 15 +++
+ .../gtypes/gtype-class-init-exception.js | 26 ++++-
+ tests/javascript/gtypes/gtype-extraprop.js | 27 +++---
+ tests/javascript/gtypes/gtype-gtype-class-init.js | 48 ++++----
+ tests/javascript/gtypes/gtype-gtype.js | 48 ++++-----
+ .../javascript/gtypes/gtype-property-construct.js | 59 ++++++----
+ tests/javascript/gtypes/gtype-property-nice.js | 42 ++++----
+ tests/javascript/gtypes/gtype-property.js | 51 +++++-----
+ tests/javascript/gtypes/gtype-self.js | 25 ++---
+ tests/javascript/gtypes/gtype-signal-args.js | 36 +++---
+ tests/javascript/gtypes/gtype-signal.js | 25 ++---
+ tests/javascript/gtypes/gtype-typerror.js | 21 ++--
+ tests/javascript/gtypes/gtype.js | 42 ++++----
+ tests/javascript/gtypes/testsuite.js | 1 +
+ tests/javascript/gvalue-argument.js | 4 -
+ tests/javascript/include-syntax.js | 19 +++-
+ tests/javascript/include.js | 6 +-
+ tests/javascript/introspect.js | 21 ++--
+ tests/javascript/json-constructor.js | 17 ++--
+ tests/javascript/json.js | 24 +++--
+ tests/javascript/list-test.js | 30 +++---
+ tests/javascript/modules-noasserts.js | 25 +++++
+ tests/javascript/modules.js | 29 +-----
+ tests/javascript/native-closure-exception.js | 34 ++++--
+ tests/javascript/native-closure.js | 27 +++---
+ tests/javascript/object-info.js | 29 +++---
+ tests/javascript/out-test.js | 22 ++--
+ tests/javascript/print.js | 7 --
+ tests/javascript/printf.js | 12 --
+ tests/javascript/printprint.js | 7 --
+ tests/javascript/property-benchmark.js | 6 +-
+ tests/javascript/property-glib-exception.js | 25 +++--
+ tests/javascript/quit.js | 7 +-
+ tests/javascript/quit2.js | 7 --
+ tests/javascript/readline-bind.js | 9 --
+ tests/javascript/readline.js | 8 --
+ tests/javascript/signals/Makefile.am | 11 ++
+ tests/javascript/signals/signal-connect.js | 24 ++---
+ tests/javascript/signals/signal-disconnect.js | 31 +++---
+ tests/javascript/signals/signal-exception.js | 7 +-
+ tests/javascript/signals/signal-expects.js | 20 ++--
+ tests/javascript/signals/signal-invalid.js | 15 ++--
+ tests/javascript/signals/signal-nofunc.js | 18 ++--
+ tests/javascript/signals/signal-userdata.js | 9 +-
+ tests/javascript/signals/signal.js | 19 ++--
+ tests/javascript/signals/testsuite.js | 1 +
+ tests/javascript/spawn.js | 8 --
+ tests/javascript/sqlite.js | 43 ++++----
+ tests/javascript/structs/Makefile.am | 10 ++
+ tests/javascript/structs/struct-constructor.js | 17 ++--
+ tests/javascript/structs/struct-enumerate.js | 14 ++--
+ tests/javascript/structs/struct-functions.js | 13 +--
+ tests/javascript/structs/struct-nested-set.js | 27 ++---
+ tests/javascript/structs/struct-offsets.js | 15 +--
+ tests/javascript/structs/struct-set-member.js | 15 +--
+ tests/javascript/structs/struct-union-enumerate.js | 31 ++++--
+ tests/javascript/structs/testsuite.js | 1 +
+ tests/javascript/syntax-test-noasserts.js | 1 +
+ tests/javascript/syntax-test.js | 18 +++-
+ tests/javascript/testsuite.js | 32 ++++++
+ tests/javascript/type-conversion.js | 42 ++++----
+ tests/make-test.py | 55 ----------
+ tests/run-tests.py | 104 ------------------
+ 82 files changed, 936 insertions(+), 1020 deletions(-)
+
+commit 62bf28a41b3372cd6eed5823e941f0d54ccc9a0e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 02:05:05 2010 -0500
+
+ Return non-zero exit code if an exception occurs
+
+ src/main.c | 10 ++++++++--
+ 1 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 585cca1d52aa7e082aaa029c585fef8ea6d25d43
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 02:04:54 2010 -0500
+
+ Remove extraneous space in output
+
+ modules/example/seed-example.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 577fc25b8e4b932107f2f3a6b81a27c11d08fea8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jan 6 00:04:07 2010 -0500
+
+ Note to self: need to properly integrate our exceptions with JS
+
+ libseed/seed-exceptions.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 07db8b4966ca85a256137d32eeca2a634f473825
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 4 00:56:29 2010 -0500
+
+ Fix incorrect type assumption
+
+ seed_gi_argument_make_js was assuming that enums and flags are always longs,
+ which is (apparently) incorrect. Check the type and convert accordingly.
+
+ libseed/seed-types.c | 42 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 41 insertions(+), 1 deletions(-)
+
+commit 2723b3a122609b9de20dab1208bf3e6ac90d140c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jan 4 00:56:15 2010 -0500
+
+ Fix spacing in warning (double space)
+
+ libseed/seed-structs.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7d21ff802d08154fe222742ed8b61b1a92bebe16
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jan 3 22:11:03 2010 -0500
+
+ GType can be bigger than int32; use seed_value_to_long for now
+
+ This is probably not correct, since the size of the type is variable, and all...
+
+ libseed/seed-gtype.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 4331a5c5a9d9446c2e5909a53c25a15de9f16ed8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 22:45:36 2010 -0500
+
+ Update OS X build instructions (MacPorts!)
+
+ doc/reference/building-osx.sgml | 65 +++++++++++---------------------------
+ 1 files changed, 19 insertions(+), 46 deletions(-)
+
+commit 3a19d85fd53f5bc1e566101bacf0bc044c00cfe0
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 22:06:35 2010 -0500
+
+ libseed: Out arguments should use out_values, not out_args, for finding values!
+
+ Fixes bug introduced in commit 249a26bd077
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b41de3fafa5d1b0ebf89f373c3f132003b719771
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 19:56:46 2010 -0500
+
+ tests: Fix struct-union-enumerate test
+
+ tests/javascript/structs/struct-union-enumerate.js | 20 ++++++++++++++++----
+ 1 files changed, 16 insertions(+), 4 deletions(-)
+
+commit f2e337ff9712644cc8d2c5c2c23c2f491619fba9
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 19:40:30 2010 -0500
+
+ Fix readline tests
+
+ tests/javascript/readline-bind.js | 6 +++---
+ tests/javascript/readline.js | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 8050bd63efb3d540aeacefefe2bd953e2b57e3cf
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 18:40:24 2010 -0500
+
+ Fix completely incorrect nested struct/union set test
+
+ tests/javascript/structs/struct-nested-set.js | 8 ++-
+ tests/run-tests.py | 68 +++++++++++++------------
+ 2 files changed, 40 insertions(+), 36 deletions(-)
+
+commit de65135b89104cc49cd893951650cc3d6f4236eb
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 18:19:27 2010 -0500
+
+ Ignore missing X extensions when testing
+
+ This fixes testing over X forwarding to a machine lacking expected extensions
+
+ tests/run-tests.py | 65 +++++++++++++++++++++++++--------------------------
+ 1 files changed, 32 insertions(+), 33 deletions(-)
+
+commit 2ff26650b1180982c532d801873d4af648edce9b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 16:55:07 2010 -0500
+
+ Fix glong/gint "mismatch" elsewhere
+
+ libseed/seed-types.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6c075da4ca37a47e9d0938664f25d6727f107029
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 16:51:57 2010 -0500
+
+ Fix lack of gnome-js-common directory in default search path
+
+ I accidentally broke this when fixing the pkglibdir/datadir substitution
+
+ extensions/Makefile.am | 2 +-
+ extensions/Seed.js.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit bac440a2733a2b59920b0078123a073db19b9f33
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jan 2 16:43:23 2010 -0500
+
+ Fix enum typing bug from commit cedbd78451
+
+ A glong/gint mismatch was wreaking havoc on various enums.
+ It's clear why this was broken; g_value_info_get_value says
+ that it returns a glong.
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 671ad0881ca3c68e59099a18164a72f34ad3f2ad
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 1 17:26:51 2010 -0500
+
+ Post-release version increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2b12dcb4e4bfaf40ace0fb216b4ef3af5fa20256
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 1 17:25:58 2010 -0500
+
+ Release 2.29.5.1
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8f6301aa559216ac8f2c86064e1d674b9dbd650a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 1 17:23:16 2010 -0500
+
+ Fix some 'duplicate symbol' errors on other platforms
+
+ libseed/seed-engine.c | 2 ++
+ libseed/seed-engine.h | 2 +-
+ modules/mpfr/seed-mpfr.c | 3 +++
+ modules/mpfr/seed-mpfr.h | 4 ++--
+ 4 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 329294e29b4f8c352b60940a61029723c081aafc
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 1 16:47:57 2010 -0500
+
+ Post-release increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3ac0d91449158e79b6e90072452bb033c7bc054e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jan 1 16:38:56 2010 -0500
+
+ 2.29.5 release notes
+
+ NEWS | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 78e4742fe907d08348a8c93c098761ec57b32bd6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Dec 31 05:44:51 2009 -0500
+
+ os module: oops! other GNU extensions were in use; reenable these
+
+ modules/os/seed-os.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit c2be82dabf2208fc533838a2deea1c8f415583fd
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Dec 31 05:40:29 2009 -0500
+
+ Use realpath() instead of the GNU libc extension canonicalize_file_path (again)
+
+ modules/os/seed-os.c | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 53a1447c45949c8d9ab4a4e082499cf24bf9dafc
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Dec 31 05:36:09 2009 -0500
+
+ extensions: Fix substitution of paths into Seed.js
+
+ This fixes the failure to find native modules when installing to unexpected
+ prefixes.
+
+ configure.ac | 1 -
+ extensions/Makefile.am | 3 +++
+ extensions/Seed.js.in | 4 ++--
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 75f843389e2eccd25fc77d71119af09892462a0f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Dec 31 05:12:28 2009 -0500
+
+ extensions: fix some indentation oddities
+
+ extensions/Seed.js.in | 16 ++++++++--------
+ 1 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 0f9ce34375f9bfda6b11e6ccbb54b4fd75f2eb40
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 30 03:40:25 2009 -0500
+
+ interpreter: display exceptions (if any) when trying to execute the repl
+
+ src/main.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit f4576cc155a1583da3d174165748e782690bcfd9
+Author: Ryan Brown <r@nodr.org>
+Date: Sat Dec 19 16:04:51 2009 -0500
+
+ Use the right type when creating GValues for GObject subtypes
+
+ libseed/seed-types.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9c052e1cfed23bfed6f890895564206e37ed6fe1
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 30 02:56:42 2009 -0500
+
+ Distribute the repl snippet along with seed
+
+ extensions/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 48eabb14b1fafe329156a9dbba144586ec850454
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 30 02:54:29 2009 -0500
+
+ Use realpath() instead of the GNU libc extension canonicalize_file_path
+
+ libseed/seed-importer.c | 5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+commit 8a5ad68baa02968b7e521581db58b3b72d290d6b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 30 02:53:33 2009 -0500
+
+ Remove Mac OS X specific configuration
+
+ There's no reason to use the system's WebKit, since it has to be a nightly anyway.
+ Instead, use webkit-gtk; the version in macports is now recent enough.
+
+ configure.ac | 44 ++++++++++----------------------------------
+ 1 files changed, 10 insertions(+), 34 deletions(-)
+
+commit 1118eb7835ba0b94aee09f9f576342fcce344128
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 30 02:39:26 2009 -0500
+
+ Use POSIX thread-local storage API instead of GCC extensions
+
+ This is necessary to make Seed build on platforms where the GCC
+ TLS API is not available, such as Mac OS X.
+
+ libseed/seed-engine.c | 16 ++++++++++------
+ libseed/seed-engine.h | 2 +-
+ libseed/seed-types.c | 7 ++++---
+ 3 files changed, 15 insertions(+), 10 deletions(-)
+
+commit a08ec31a2833e681b9c91a62fc1a6f60c4259187
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 17:32:36 2009 -0500
+
+ Improve handling of case where constructing struct with 0 size
+
+ libseed/seed-structs.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit c5c4352f77624d4717f4757c87ff7e1373082dc3
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 17:25:21 2009 -0500
+
+ [importer] Struct/union constructors need to take a reference to the GIBaseInfo they store in their privates...
+
+ libseed/seed-importer.c | 4 +++-
+ libseed/seed-structs.c | 2 +-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit d70268ca6c3482b38f1076b13f360bade04dbe6c
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 17:09:48 2009 -0500
+
+ Built in REPL was broken because it was installing from examples tree (now seed-examples on git.gnome.org). Move a copy of REPL snippet into seed
+
+ extensions/Makefile.am | 3 ++
+ extensions/repl.js | 49 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 52 insertions(+), 0 deletions(-)
+
+commit 63c58af6a128168fe79eb7be0cea048ecdb1c712
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 15:40:07 2009 -0500
+
+ Add regression test for BGO 593182
+
+ tests/javascript/gtypes/Makefile.am | 1 +
+ tests/javascript/gtypes/gtype-gtype-class-init.js | 30 +++++++++++++++++++++
+ 2 files changed, 31 insertions(+), 0 deletions(-)
+
+commit a60bf4010a7c8c864cfdb5483ce3e5dc0f0d4977
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 15:23:39 2009 -0500
+
+ seed_get_class_info_for_type had a logic error, causing GIBaseInfos to be unreffed, in the case of "They didn't exist".
+
+ This is obviously not a good idea and has been rectified. Closes BGO #593182
+
+ libseed/seed-gtype.c | 14 +++++++++-----
+ 1 files changed, 9 insertions(+), 5 deletions(-)
+
+commit 2638adf4800488a044db21f567945584030adb0a
+Author: Robert Carr <racarr@gnome.org>
+Date: Thu Dec 17 15:23:34 2009 -0500
+
+ Update some autotools junk? I guess. I could only really say if I understood autotools
+
+ config.h.in | 3 +++
+ m4/libtool.m4 | 3 +++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 8bccd48bafbef62671e4a1dcbe8a18e604f76370
+Author: Iain Nicol <iain@thenicols.net>
+Date: Mon Nov 2 03:59:35 2009 +0000
+
+ libseed: do not call JSValueProtect on values the GC might have freed
+
+ Closes BGO #599666
+
+ libseed/seed-types.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit fa6441078948879b7b48cd85c842f796c3e77690
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 16 17:04:06 2009 -0500
+
+ Post-release increment
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 04771b669d35196f8c4e87d035c7f541e324094b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Dec 16 17:01:05 2009 -0500
+
+ Update NEWS and README for 2.29.4
+
+ NEWS | 11 +++++++++++
+ README | 10 +++++-----
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+commit cb4289137ec0ea3204e1b0ad3b7e2a86fa8a94da
+Author: Steve Frécinaux <code@istique.net>
+Date: Mon Nov 16 00:35:52 2009 +0100
+
+ reference: Add a note about search path ownership.
+
+ The current reference documentation of seed_engine_get_search_path()
+ does not specify whether the return value should be freed or not, and
+ that return value is not const so it's ambiguous.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602032
+
+ libseed/seed-api.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 251a556dc841a8165d865771d9f30de94428d901
+Author: Iain Nicol <iain@thenicols.net>
+Date: Thu Nov 19 13:03:35 2009 +0000
+
+ libseed: Improve integral type conversions; mostly portability issues
+
+ Partial fix for BGO #602404.
+
+ libseed/seed-closure.c | 34 +++++++++++----
+ libseed/seed-types.c | 113 +++++++++++++++++++++++++++++++++++++++++++++---
+ libseed/seed-types.h | 10 ++++
+ 3 files changed, 142 insertions(+), 15 deletions(-)
+
+commit 36ec11b954ed7a1ded45927a4788adf8c0ed0dcb
+Author: Steve Frécinaux <code@istique.net>
+Date: Tue Dec 15 14:33:27 2009 +0100
+
+ Remove unused "arg_type" argument in make_native_closure.
+
+ This argument is kept around in the closure but isn't used anywhere,
+ so let's just drop it.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=604617
+
+ libseed/seed-closure.c | 5 +----
+ libseed/seed-closure.h | 2 --
+ libseed/seed-types.c | 1 -
+ 3 files changed, 1 insertions(+), 7 deletions(-)
+
+commit 9989d47738853ec7226387b3ffbb50858d323037
+Author: Steve Frécinaux <code@istique.net>
+Date: Tue Dec 15 14:39:21 2009 +0100
+
+ Remove arg_info param from seed_gi_make_argument().
+
+ This arg_info value was only used when triggering make_native_closure(),
+ and was even set to NULL in most calls of this function, so let's just
+ remove it.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=604617
+
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-engine.c | 3 +--
+ libseed/seed-structs.c | 10 ++++------
+ libseed/seed-types.c | 4 ++--
+ libseed/seed-types.h | 1 -
+ 5 files changed, 8 insertions(+), 12 deletions(-)
+
+commit 67f3d46b9387e1f4166c1403a9c491732c2b022c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Nov 30 17:24:18 2009 -0500
+
+ Postincrement after release (now 2.29.4)
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit cf39481aa040bc7dbdb96c891402c9132b68cbd3
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Nov 16 19:03:39 2009 -0500
+
+ Postincrement version number to 2.29.3
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5462cff55d30e3c3cf54d832a02fca0fbc13ddce
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Nov 16 19:01:18 2009 -0500
+
+ More 2.29.2 changes (update NEWS and version)
+
+ Makefile.am | 1 -
+ NEWS | 3 +--
+ configure.ac | 2 +-
+ 3 files changed, 2 insertions(+), 4 deletions(-)
+
+commit b4d995eccb03ce0952aebe050e13461d5970a0ee
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Nov 16 18:52:27 2009 -0500
+
+ Seed 2.29.2 changes
+
+ NEWS | 11 ++++++++
+ RELEASE | 75 ---------------------------------------------------------
+ config.h.in | 3 --
+ m4/libtool.m4 | 3 --
+ 4 files changed, 11 insertions(+), 81 deletions(-)
+
+commit f2e49562301df3c9f50ba865eb8b0b407a2883b2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Nov 1 00:06:18 2009 -0400
+
+ libseed: make seed_value_from_filename return "null" if passed "NULL"
+
+ libseed/seed-types.c | 28 ++++++++++++++++------------
+ 1 files changed, 16 insertions(+), 12 deletions(-)
+
+commit fa42dffc8acd356e0cfc06c5c7862ef42df21c4c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Nov 1 00:01:25 2009 -0400
+
+ tests: Update one test affected by previous commit
+
+ tests/javascript/sqlite.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9cf4a15d929007c9dfdb3c1a1fea6d03825b8614
+Author: Iain Nicol <iain@thenicols.net>
+Date: Fri Oct 30 22:08:51 2009 +0000
+
+ make seed_value_from_string return "null" if passed "NULL"
+
+ libseed/seed-types.c | 13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 1b648f199672e0d7521910cb70469f8882a95f84
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 28 01:52:16 2009 -0400
+
+ tests: A bunch of exceptions changed format a while back, update tests
+
+ tests/javascript/check-syntax.js | 2 +-
+ tests/javascript/include-syntax.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/syntax-test.js | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 9ba90d411acf73bf23325239687501bfa014cdde
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 28 01:26:21 2009 -0400
+
+ interpreter: Add --version argument; chain option parsing to libseed.
+
+ libseed/seed-engine.c | 4 +-
+ libseed/seed-engine.h | 2 +
+ libseed/seed.h | 3 +-
+ src/Makefile.am | 3 +-
+ src/args.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++
+ src/main.c | 13 ++++++++
+ 6 files changed, 102 insertions(+), 4 deletions(-)
+
+commit bc26585c4b3560a30b73c1304af6a3dc598ab459
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 28 00:54:44 2009 -0400
+
+ libseed: Add --seed-version argument
+
+ libseed/seed-engine.c | 14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+commit c995b68cdd372129aed51335ed6242b758c4850f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 28 00:25:27 2009 -0400
+
+ clutter extension: Add wrapper for animate_with_alpha
+
+ extensions/Clutter.js | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 31ed2f1f52eb55bd5ada9c87ad31ca046bcfded1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Aug 22 04:35:51 2009 +0000
+
+ Clean up 'seed' interpreter
+
+ Don't bother passing argc/argv to functions that don't need it
+ Use EXIT_SUCCESS/EXIT_FAILURE instead of implementation-specific values
+ Use seed_exception_to_string instead of stringifying by hand
+
+ src/main.c | 40 +++++++++++++++++-----------------------
+ 1 files changed, 17 insertions(+), 23 deletions(-)
+
+commit d776c49457d1f6053ecb118375c84b736ca83d51
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 7 02:10:35 2009 -0400
+
+ Move all examples to separate seed-examples repository.
+
+ Makefile.am | 1 -
+ config.h.in | 3 +
+ configure.ac | 38 -
+ examples | 5 +
+ examples/COPYING | 9 -
+ examples/Gnio-server.js | 40 -
+ examples/Gnio.js | 24 -
+ examples/HACKING | 8 -
+ examples/Makefile.am | 52 -
+ examples/accelgroup.js | 21 -
+ examples/actions.js | 63 --
+ examples/async-quine.js | 19 -
+ examples/broken/browser/COPYING | 339 -------
+ examples/broken/browser/Makefile.am | 27 -
+ examples/broken/browser/browser-actions.js | 347 -------
+ examples/broken/browser/browser-bookmarks.js | 54 -
+ examples/broken/browser/browser-find.js | 39 -
+ examples/broken/browser/browser-main.js | 24 -
+ examples/broken/browser/browser-menu.js | 148 ---
+ examples/broken/browser/browser-tab.js | 148 ---
+ examples/broken/browser/browser-toolbar.js | 25 -
+ examples/broken/browser/main.js | 119 ---
+ examples/broken/clutter-transitions/Makefile.am | 15 -
+ examples/broken/clutter-transitions/main.js | 85 --
+ examples/broken/clutter-transitions/one.jpg | Bin 379735 -> 0 bytes
+ .../clutter-transitions/transition-library.js | 661 ------------
+ examples/broken/clutter-transitions/two.jpg | Bin 218469 -> 0 bytes
+ examples/broken/ide/Makefile.am | 26 -
+ examples/broken/ide/exception.svg | 76 --
+ examples/broken/ide/ide-actions.js | 126 ---
+ examples/broken/ide/ide-messagearea.js | 121 ---
+ examples/broken/ide/ide-sourceview.js | 203 ----
+ examples/broken/ide/ide-tab.js | 65 --
+ examples/broken/ide/ide-tabheader.js | 27 -
+ examples/broken/ide/ide-tabview.js | 80 --
+ examples/broken/ide/ide-toolbar.js | 26 -
+ examples/broken/ide/ide-window.js | 40 -
+ examples/broken/ide/legacy/ide.js | 155 ---
+ examples/broken/ide/legacy/tabview.js | 77 --
+ examples/broken/ide/legacy/toolbar.js | 143 ---
+ examples/broken/ide/main.js | 30 -
+ examples/broken/pong/Makefile.am | 19 -
+ examples/broken/pong/ball.png | Bin 1570 -> 0 bytes
+ examples/broken/pong/midline.png | Bin 4741 -> 0 bytes
+ examples/broken/pong/player.png | Bin 1671 -> 0 bytes
+ examples/broken/pong/player2.png | Bin 1491 -> 0 bytes
+ examples/broken/pong/pong.js | 341 -------
+ examples/browser/BrowserSettings.js | 11 -
+ examples/browser/BrowserStatusbar.js | 21 -
+ examples/browser/BrowserTab.js | 67 --
+ examples/browser/BrowserToolbar.js | 71 --
+ examples/browser/BrowserView.js | 113 ---
+ examples/browser/COPYING | 339 -------
+ examples/browser/Makefile.am | 23 -
+ examples/browser/TabbedBrowser.js | 60 --
+ examples/browser/main.js | 19 -
+ examples/cairo.js | 45 -
+ examples/calculator-mpfr.js | 145 ---
+ examples/calculator.js | 138 ---
+ examples/clutter-1.0.js | 104 --
+ examples/clutter-cairo-1.0.js | 34 -
+ examples/clutter-cogl-1.0.js | 103 --
+ examples/clutter-pad/Makefile.am | 15 -
+ examples/clutter-pad/clutter-pad.ui | 271 -----
+ examples/clutter-pad/examples/Makefile.am | 17 -
+ .../clutter-pad/examples/animated-rectangle.js | 26 -
+ examples/clutter-pad/examples/box2d.js | 61 --
+ examples/clutter-pad/examples/cairo.js | 52 -
+ examples/clutter-pad/examples/pink-stage.js | 7 -
+ examples/clutter-pad/examples/spring.js | 89 --
+ examples/clutter-pad/main.js | 197 ----
+ examples/clutter-pad/redhand.png | Bin 3605 -> 0 bytes
+ examples/clutter-pad/test.js | 27 -
+ examples/clutter-shader/Makefile.am | 20 -
+ examples/clutter-shader/ShaderEditor.js | 46 -
+ examples/clutter-shader/ShaderView.js | 55 -
+ examples/clutter-shader/bob.jpg | Bin 26580 -> 0 bytes
+ examples/clutter-shader/default.glsl | 24 -
+ examples/clutter-shader/main.js | 42 -
+ examples/dbus/Makefile.am | 18 -
+ examples/dbus/dbus-banshee.js | 55 -
+ examples/dbus/dbus-consolekit.js | 58 --
+ examples/dbus/dbus-networkmanager.js | 93 --
+ examples/dbus/networkManagerIfaces.js | 1049 --------------------
+ examples/gconf.js | 9 -
+ examples/gdkpixbufloader.js | 31 -
+ examples/glib/Makefile.am | 17 -
+ examples/glib/env.js | 7 -
+ examples/glib/thread.js | 27 -
+ examples/glib/timeout.js | 20 -
+ examples/glib/timer.js | 12 -
+ examples/gtkplug.js | 37 -
+ examples/gtktextview.js | 21 -
+ examples/gtktreeview.js | 36 -
+ examples/json-packing.js | 37 -
+ examples/json-reddit.js | 21 -
+ examples/ls.js | 18 -
+ examples/n-oscillator.js | 111 --
+ examples/notify-test.js | 32 -
+ examples/opengl/Makefile.am | 15 -
+ examples/opengl/glut-teapot.js | 52 -
+ examples/opengl/seed-gears.js | 229 -----
+ examples/opengl/triangle-actor.js | 35 -
+ examples/pango-fontset.js | 16 -
+ examples/pango.js | 402 --------
+ examples/poppler.js | 152 ---
+ examples/quine.js | 7 -
+ examples/repl.js | 49 -
+ examples/soup.js | 14 -
+ examples/threaded-repl.js | 12 -
+ examples/turtle/Makefile.am | 23 -
+ examples/turtle/turtle.c | 307 ------
+ examples/twitter/Makefile.am | 13 -
+ examples/twitter/pretty.js | 36 -
+ examples/twitter/twitter.js | 131 ---
+ examples/video.js | 21 -
+ examples/vte-test.js | 31 -
+ examples/xml/Makefile.am | 17 -
+ examples/xml/sample.xml | 12 -
+ examples/xml/weather.js | 41 -
+ examples/xml/xml-dom.js | 16 -
+ examples/xml/xml-tree.js | 17 -
+ examples/xml/xml-xpath.js | 7 -
+ 123 files changed, 8 insertions(+), 9467 deletions(-)
+
+commit 425ed40aa5b35deed2eb9c2c9c878ef24d293b37
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Oct 7 01:46:26 2009 -0400
+
+ Use @libdir@ instead of @prefix@/lib
+
+ This fixes same-gnome-clutter and lightsoff on platforms where
+ @libdir@ is NOT @prefix@/lib (i.e. where @libdir@ is @prefix@/lib64
+ instead)
+
+ extensions/Seed.js.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b60d66e40b39bd48965219228f776aff0b2d7f1c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Sep 20 19:06:55 2009 -0400
+
+ Post-release bump to 2.29.1
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a6748a7c92a0af7b430d367718d392770795b865
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Sep 20 18:48:51 2009 -0400
+
+ Update NEWS for the last three releases (oops!)
+
+ NEWS | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 4411f87ddd8d2652adeadcf6f187414e653411fc
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Sep 7 22:14:07 2009 -0400
+
+ Post-release bump to 2.28.0
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7053fcff8e4bbc5710b14485ec45768bc47ab37d
+Author: Robert Carr <racarr@gnome.org>
+Date: Mon Sep 7 02:13:10 2009 -0400
+
+ [libseed] Implement instanceof for GObject constructors and named GObject constructors, closes BGO 592936
+
+ libseed/seed-engine.c | 22 ++++++++++++++++++++--
+ 1 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 6532bef01b88fafe673ea5340e6560273d5f2f5c
+Author: Robert Carr <racarr@gnome.org>
+Date: Mon Sep 7 01:57:18 2009 -0400
+
+ [libseed] Implement G_TYPE_STRV in seed_gvalue_from_seed_value, closes BGO 584321
+
+ libseed/seed-types.c | 161 ++++++++++++++++++++++++++++++--------------------
+ 1 files changed, 97 insertions(+), 64 deletions(-)
+
+commit 2536cdd2f3da941e6dd651b4eb1279eb6d7c0c6a
+Author: Robert Carr <racarr@gnome.org>
+Date: Mon Sep 7 01:38:51 2009 -0400
+
+ [libseed] Add seed_engine_destroy
+
+ libseed/seed-engine.c | 10 ++++++++++
+ libseed/seed.h | 2 ++
+ m4/libtool.m4 | 3 +++
+ 3 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 94293bf711ac3fb0a1e065495107fb358ff6106e
+Author: Josselin Mouette <joss@malsain.org>
+Date: Fri Sep 4 14:37:12 2009 -0400
+
+ [modules] Build as loadable modules, instead of fully-versioned libraries
+
+ modules/cairo/Makefile.am | 1 +
+ modules/canvas/Makefile.am | 1 +
+ modules/dbus/Makefile.am | 1 +
+ modules/example/Makefile.am | 1 +
+ modules/ffi/Makefile.am | 1 +
+ modules/gettext/Makefile.am | 1 +
+ modules/gtkbuilder/Makefile.am | 1 +
+ modules/libxml/Makefile.am | 1 +
+ modules/mpfr/Makefile.am | 1 +
+ modules/multiprocessing/Makefile.am | 1 +
+ modules/os/Makefile.am | 1 +
+ modules/readline/Makefile.am | 1 +
+ modules/sandbox/Makefile.am | 1 +
+ modules/sqlite/Makefile.am | 1 +
+ 14 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 2daaf7d97a4bfed44c554c38309243d811346a58
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Aug 24 22:00:06 2009 -0400
+
+ Revert "Clean up 'seed' interpreter"
+
+ This reverts commit c061547a7953fc7072b9e0043d0f5c33c7f3ec10.
+
+ src/main.c | 41 +++++++++++++++++++++++------------------
+ 1 files changed, 23 insertions(+), 18 deletions(-)
+
+commit c061547a7953fc7072b9e0043d0f5c33c7f3ec10
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Aug 22 00:35:51 2009 -0400
+
+ Clean up 'seed' interpreter
+
+ Don't bother passing argc/argv to functions that don't need it
+ Use EXIT_SUCCESS/EXIT_FAILURE instead of implementation-specific values
+ Use seed_exception_to_string instead of stringifying by hand
+
+ src/main.c | 41 ++++++++++++++++++-----------------------
+ 1 files changed, 18 insertions(+), 23 deletions(-)
+
+commit 144161af4c10029345f864b3d82dc442b7a7a8b8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Aug 21 18:07:58 2009 -0400
+
+ Post-release bump to 2.27.92
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c45e1edf164da14432691a46523d6096a068d5a9
+Author: Xan Lopez <xan@gnome.org>
+Date: Fri Aug 21 15:17:01 2009 +0300
+
+ Use LDFLAGS instead of CFLAGS when appropriate
+
+ And remove a rogue tab.
+
+ modules/sqlite/Makefile.am | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 9bc0c696397ff32be36bab9bd81aac6a62f69b80
+Author: Xan Lopez <xan@gnome.org>
+Date: Fri Aug 21 14:25:28 2009 +0300
+
+ Use AM_SILENT_RULES instead of shave.
+
+ When using automake >= 1.11, use AM_SILENT_RULES to make building less
+ verbose. Can be disabled passing --disable-silent-rules to configure
+ or V=1 to make.
+
+ configure.ac | 7 +--
+ scripts/shave-libtool.in | 109 ----------------------------------------------
+ scripts/shave.in | 109 ----------------------------------------------
+ 3 files changed, 3 insertions(+), 222 deletions(-)
+
+commit 641d154b48c23971093625041a0e8eb329bde7b9
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Aug 13 22:01:41 2009 -0400
+
+ [libseed] Add seed_context_create, which just wraps JSGarbageCollect
+
+ doc/reference/seed-sections.txt | 1 +
+ doc/reference/tmpl/seed-context.sgml | 8 ++++++++
+ libseed/seed-api.c | 15 +++++++++++++++
+ libseed/seed.h | 1 +
+ 4 files changed, 25 insertions(+), 0 deletions(-)
+
+commit 19cede6431a581593df3878fb36682827bdbd893
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Aug 10 18:00:02 2009 -0400
+
+ Post-release bump to 2.27.91
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 86d9b7f225d68d378148e9d86839ef55f5a1e5f5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Aug 10 16:59:46 2009 -0400
+
+ We're calling this 2.27.90 to sync up with the GNOME version now that we're a module
+
+ NEWS | 4 ++--
+ configure.ac | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 68547b8e895dc6ee0b54c88675f06ba00801d264
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Aug 10 16:28:17 2009 -0400
+
+ gitignore the generated index.html
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 2bf2aa84be18476d1de9f662b6656982c4a96fc6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Aug 10 16:27:26 2009 -0400
+
+ [ffi] Use size_t format flag
+
+ modules/ffi/seed-ffi.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit a070643f5694c154f9308087a6ab5dd3a95b506f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 10:12:11 2009 -0800
+
+ [docs] Modules link from doc index should go to module documentation, not seed-module C API docs
+
+ doc/index.html.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6047df4d846f8788e708f365217523fbab98b09a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:59:03 2009 -0800
+
+ Update example index, make HACKING point there
+
+ doc/index.html.in | 82 +++++++++++++++++++++++++---------------------------
+ examples/HACKING | 81 +---------------------------------------------------
+ 2 files changed, 40 insertions(+), 123 deletions(-)
+
+commit b0b64cf7998a326d16adb4aaec3cf290d7537196
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:45:08 2009 -0800
+
+ [docs] Point to large manual for module documentation
+
+ doc/index.html.in | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 5cde0e6cfab39b52a917940f6f4f461f198b7ab5
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:42:08 2009 -0800
+
+ [docs] Forgot to include one of the files in the last commit
+
+ .gitignore | 2 +
+ configure.ac | 1 +
+ doc/Makefile.am | 2 +-
+ doc/index.html | 114 --------------------------------------------
+ doc/index.html.in | 114 ++++++++++++++++++++++++++++++++++++++++++++
+ doc/modules/version.xml.in | 1 +
+ 6 files changed, 119 insertions(+), 115 deletions(-)
+
+commit 09bf288d0aa2a1156a29d74a98d19a4f0e17b373
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:27:47 2009 -0800
+
+ [docs] Factor out gtk-doc displayed version number
+
+ configure.ac | 2 ++
+ doc/modules/Makefile.am | 5 ++---
+ doc/modules/book.xml | 9 ++++++---
+ doc/reference/Makefile.am | 4 ++--
+ doc/reference/seed-docs.sgml | 8 +++++---
+ doc/reference/version.xml.in | 1 +
+ 6 files changed, 18 insertions(+), 11 deletions(-)
+
+commit 2f81bc9bd27fafc8238e0e59fa3e082998cc8234
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:23:24 2009 -0800
+
+ Update gitignore to match new documentation, etc.
+
+ .gitignore | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 470e46e0255fccf6f4034cb99ea58e9b9933f5ea
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:10:00 2009 -0800
+
+ [tests] Fix everything.js test after inspection of source
+
+ tests/javascript/everything.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit df659051b341ea09f87e3ddee644f173b3924f45
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 09:00:51 2009 -0800
+
+ Distribute various assorted files which we were missing
+
+ examples/Makefile.am | 52 +++++++---------------------------
+ modules/ffi/Makefile.am | 6 ++++
+ tests/javascript/gtypes/Makefile.am | 1 +
+ 3 files changed, 18 insertions(+), 41 deletions(-)
+
+commit f2ff30b4f37423adbeefe5895d0214974c576d3a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 08:29:51 2009 -0800
+
+ [cairo] Quit when floating window is closed
+
+ examples/cairo.js | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 184e3f92d8892259879b0ee575a7afb6592ac40a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 08:21:11 2009 -0800
+
+ [browser] Use nice property installation, fix toolbar bugs
+
+ examples/browser/BrowserTab.js | 42 ++++++++++++------------------------
+ examples/browser/BrowserToolbar.js | 9 ++++---
+ examples/browser/TabbedBrowser.js | 6 +---
+ 3 files changed, 21 insertions(+), 36 deletions(-)
+
+commit a0eb88ad2bac6b37d022960784b132754b9e05c0
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 08:19:29 2009 -0800
+
+ [libseed] Support pretty property installation for objects
+
+ libseed/seed-gtype.c | 38 ++++++++++++++++++++++++++++++++------
+ 1 files changed, 32 insertions(+), 6 deletions(-)
+
+commit 286b71a4e746400b84d9cbe3bced83db3034fdeb
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 08:00:58 2009 -0800
+
+ Remove OPEN_QUESTIONS; this is from before we had a bugzilla
+
+ OPEN_QUESTIONS | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit fbc08d6937f2b88a9d0840051f31f989666fd6f3
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 07:52:00 2009 -0800
+
+ Update NEWS for today's release
+
+ I'm not sure what the version number of today's release should be;
+ the obvious choice is 0.8.6, but since we're now an official module,
+ perhaps it should be 2.27.90.
+
+ NEWS | 19 +++++++++++++++++++
+ 1 files changed, 19 insertions(+), 0 deletions(-)
+
+commit 5f39a036e1e2bb7334cb3ead911a14b1e0b1b079
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 07:37:57 2009 -0800
+
+ [docs] Filename tag is "filename", not "file"
+
+ doc/reference/imports.sgml | 2 +-
+ doc/reference/tmpl/seed-eval.sgml | 8 ++++++++
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit b6d835b0818fa56d218131d76816a21d9bc18fda
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 07:31:58 2009 -0800
+
+ [docs] Distribute importer docs, include seed_script_destroy function
+
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/seed-sections.txt | 1 +
+ m4/libtool.m4 | 3 ---
+ 3 files changed, 2 insertions(+), 4 deletions(-)
+
+commit 8a1560043c1386ef48aa848c65b4871c1a9e145d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 07:15:25 2009 -0800
+
+ Move ChangeLog to NEWS, autogenerate ChangeLog, to fit in with other GNOME modules
+
+ ChangeLog | 271 +----------------------------------------------
+ Makefile.am | 31 ++++--
+ NEWS | 269 ++++++++++++++++++++++++++++++++++++++++++++++
+ config.h.in | 3 -
+ modules/ffi/Makefile.am | 2 +-
+ 5 files changed, 295 insertions(+), 281 deletions(-)
+
+commit 723f390151903df2b2e3402032aee7677cab1092
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 06:40:00 2009 -0800
+
+ [docs] Standardize on 'val' for type conversion function input value
+
+ libseed/seed-types.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 905aa7dfaee6f2ba561e86fff4a9fe0180940923
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Aug 10 06:33:50 2009 -0800
+
+ [ffi] Include ffi flags when building ffi module for nonstandard installs
+
+ modules/ffi/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit b7d9adbb9b226c0e07a725ea8b641038c4f61332
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Aug 6 07:44:17 2009 -0400
+
+ From here on out, use post-release version increment
+
+ This puts us in sync with the rest of GNOME and makes it easier for
+ other projects depending on Seed to require the latest development version.
+
+ configure.ac | 2 +-
+ doc/modules/book.xml | 2 +-
+ doc/reference/seed-docs.sgml | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 5a788b7154bb4d6f9193c99e53c2d6ac695c260f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Aug 5 23:49:57 2009 -0400
+
+ Relicense main.c as LGPLv3, closes 590810
+
+ src/main.c | 32 +++++++++++++++-----------------
+ 1 files changed, 15 insertions(+), 17 deletions(-)
+
+commit f3e1f631102409a8cdc5c31652a854347a3a6587
+Author: Robert Carr <racarr@gnome.org>
+Date: Sun Aug 2 21:20:02 2009 -0400
+
+ [ffi] Add support for pointer types to FFI. Also avoid recreating FFIFunction objects and cache them in a GHashTable in the new seed_ffi_library_priv struct.
+
+ modules/ffi/seed-ffi.c | 51 ++++++++++++++++++++++++++++++++-----------
+ modules/ffi/test-strdup.js | 12 ++++++++++
+ modules/ffi/test-xlib.js | 24 ++++++++++++++++++++
+ 3 files changed, 74 insertions(+), 13 deletions(-)
+
+commit b2acd1899e80b0b7b0decb8b7d8d42607067f3b1
+Author: Robert Carr <racarr@gnome.org>
+Date: Sun Aug 2 14:05:53 2009 -0400
+
+ [libxml] getAttribute would only work for the first attribute in a tag. Fix this
+
+ modules/libxml/xml.js | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 05fc42c0bc3939e6e6189d1a3902c12d05adec8d
+Author: Robert Carr <racarr@gnome.org>
+Date: Sun Aug 2 13:55:24 2009 -0400
+
+ [ffi] Hey, ffi actually works now. Add tests to prove this
+
+ modules/ffi/Makefile.am | 3 +-
+ modules/ffi/seed-ffi.c | 83 +++++++++++++++++++++----------------------
+ modules/ffi/test-sin.js | 12 ++++++
+ modules/ffi/test-strcmp.js | 13 +++++++
+ 4 files changed, 68 insertions(+), 43 deletions(-)
+
+commit 828878ad4200b30af64be5f539c5da0a1a493fda
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Aug 1 21:43:59 2009 -0400
+
+ [examples] Distribute proper versions of clutter examples
+
+ config.h.in | 3 +++
+ doc/reference/tmpl/seed-typeconversion.sgml | 2 +-
+ examples/Makefile.am | 9 ++++-----
+ 3 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 04adfffbe102296024ff2d1d8f5fb6f16d38860a
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 21:28:14 2009 -0400
+
+ [ffi] Calling functions works now...
+
+ modules/ffi/Makefile.am | 2 +-
+ modules/ffi/seed-ffi.c | 220 +++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 216 insertions(+), 6 deletions(-)
+
+commit 9011b640aef992b5c3d32296d47dfea564fa5b17
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 18:48:08 2009 -0400
+
+ [ffi] Start implementing the calling bits...
+
+ modules/ffi/seed-ffi.c | 36 ++++++++++++++++++++++++++++++++++--
+ 1 files changed, 34 insertions(+), 2 deletions(-)
+
+commit 5681c3843e90c76b85dd69d43980c89a31cf7aae
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 18:27:21 2009 -0400
+
+ ffi: Implement signature reading/building of internal representation for function signatures
+
+ modules/ffi/seed-ffi.c | 135 +++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 134 insertions(+), 1 deletions(-)
+
+commit 571e2a04909667b5f9df07648cdc9f99e1f74fa6
+Merge: f28d045 5e7849a
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 17:52:55 2009 -0400
+
+ Merge branch 'master' into ffi
+
+commit 5e7849a059c22653f0262c437b1a594a608ce91f
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 17:52:34 2009 -0400
+
+ [libseed] Fix bug in seed_value_to_string where if an object had an explicitly null toString member (overriding the default object one), it would cause a crash
+
+ libseed/seed-types.c | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit f28d04531685356203c6a2c2aee28f0aa01b959a
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 17:47:52 2009 -0400
+
+ Implement getting functions from libraries...sort of...no calling yet
+
+ modules/ffi/seed-ffi.c | 34 ++++++++++++++++++++++++++++++++++
+ 1 files changed, 34 insertions(+), 0 deletions(-)
+
+commit c9518305fb0e6403dea3cce677bc06d0d442e707
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 17:32:23 2009 -0400
+
+ Add ffi.Library constructor
+
+ modules/ffi/Makefile.am | 24 ++++++++++++++
+ modules/ffi/seed-ffi.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 104 insertions(+), 0 deletions(-)
+
+commit b79b825990e62e5e6c87ec6b9815f09d58e7a56a
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 17:19:54 2009 -0400
+
+ Initial add of ffi module
+
+ configure.ac | 20 ++++++++++++--------
+ libseed/seed.h | 10 ++++++++++
+ modules/Makefile.am | 2 +-
+ 3 files changed, 23 insertions(+), 9 deletions(-)
+
+commit 08095552dde09554a7a4de36a66b90ced7d7283c
+Author: Robert Carr <racarr@gnome.org>
+Date: Sat Aug 1 15:54:29 2009 -0400
+
+ [libseed] Organize seed.h by value/object/context/closure/etc functions.
+
+ libseed/seed.h | 132 ++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 62 insertions(+), 70 deletions(-)
+
+commit 00f9a08b7a743c1d9a644f65ed40ff9dc20856ab
+Author: Robert Carr <racarr@gnome.org>
+Date: Fri Jul 31 23:48:29 2009 -0400
+
+ [libseed] Fix gtype-gtype.js test
+
+ libseed/seed-gtype.c | 3 +++
+ tests/javascript/gtypes/gtype-gtype.js | 15 ++++++++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+commit 03eaaeb6d49089b93c407dc7abcbd139770e15fc
+Author: Robert Carr <racarr@gnome.org>
+Date: Fri Jul 31 23:42:50 2009 -0400
+
+ Fix build
+
+ configure.ac | 2 --
+ examples/Makefile.am | 9 ++-------
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+commit b8012a636c670949081e447116184bc338badf8b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 23:26:59 2009 -0400
+
+ [n-oscillator] Use new semi-attractive gobject property definition
+
+ examples/n-oscillator.js | 24 +++++++++++-------------
+ 1 files changed, 11 insertions(+), 13 deletions(-)
+
+commit 9ef3f053e9a81411026b1670e8bba12d3bf08137
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 23:19:04 2009 -0400
+
+ [notify-test] Make notify test only notify on file creation, and show semi-useful information, just for fun
+
+ examples/notify-test.js | 20 +++++++++++++-------
+ 1 files changed, 13 insertions(+), 7 deletions(-)
+
+commit 55b773883ec6c46803849744f0f66b0593b7bbe2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 23:09:58 2009 -0400
+
+ [examples] Move clutter-transitions to broken as it hasn't been ported from 0.8
+
+ examples/broken/clutter-transitions/Makefile.am | 15 +
+ examples/broken/clutter-transitions/main.js | 85 +++
+ examples/broken/clutter-transitions/one.jpg | Bin 0 -> 379735 bytes
+ .../clutter-transitions/transition-library.js | 661 ++++++++++++++++++++
+ examples/broken/clutter-transitions/two.jpg | Bin 0 -> 218469 bytes
+ examples/clutter-transitions/Makefile.am | 15 -
+ examples/clutter-transitions/main.js | 85 ---
+ examples/clutter-transitions/one.jpg | Bin 379735 -> 0 bytes
+ examples/clutter-transitions/transition-library.js | 661 --------------------
+ examples/clutter-transitions/two.jpg | Bin 218469 -> 0 bytes
+ examples/pango.js | 4 +-
+ 11 files changed, 763 insertions(+), 763 deletions(-)
+
+commit 4760f2f970f7e35bba97f737696beee4b4084f95
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 23:05:40 2009 -0400
+
+ [examples] Clutter 1.0 is stable; there's no reason to hold around 0.8 or 0.9 examples anymore. Deprecate pong because it's horrible and never got ported from 0.8.
+
+ examples/broken/pong/Makefile.am | 19 ++
+ examples/broken/pong/ball.png | Bin 0 -> 1570 bytes
+ examples/broken/pong/midline.png | Bin 0 -> 4741 bytes
+ examples/broken/pong/player.png | Bin 0 -> 1671 bytes
+ examples/broken/pong/player2.png | Bin 0 -> 1491 bytes
+ examples/broken/pong/pong.js | 341 +++++++++++++++++++++++++++++++
+ examples/clutter-0.8.js | 118 -----------
+ examples/clutter-0.9.js | 106 ----------
+ examples/clutter-1.0.js | 104 ++++++++++
+ examples/clutter-cairo-1.0.js | 34 +++
+ examples/clutter-cairo.js | 34 ---
+ examples/clutter-cogl-0.8.js | 126 ------------
+ examples/clutter-cogl-0.9.js | 110 ----------
+ examples/clutter-cogl-1.0.js | 103 ++++++++++
+ examples/clutter-pad/main.js | 3 -
+ examples/clutter-shader/ShaderEditor.js | 2 -
+ examples/clutter-shader/ShaderView.js | 2 -
+ examples/clutter-shader/main.js | 8 +-
+ examples/pong/Makefile.am | 19 --
+ examples/pong/ball.png | Bin 1570 -> 0 bytes
+ examples/pong/midline.png | Bin 4741 -> 0 bytes
+ examples/pong/player.png | Bin 1671 -> 0 bytes
+ examples/pong/player2.png | Bin 1491 -> 0 bytes
+ examples/pong/pong.js | 341 -------------------------------
+ 24 files changed, 605 insertions(+), 865 deletions(-)
+
+commit 02c31eb1b43babb8f3ddbf73bc37b4a4cbdca9d8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 22:20:22 2009 -0400
+
+ [libseed] Throw exception if property is installed with no type
+
+ libseed/seed-gtype.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit f77bf3533bcabf0596deda792afc628c376cbb44
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 22:18:47 2009 -0400
+
+ [libseed] More error checking for pretty property installation
+
+ libseed/seed-gtype.c | 43 ++++++++++++++++++++++++++++++++++++++++---
+ 1 files changed, 40 insertions(+), 3 deletions(-)
+
+commit c5fa8fcf5afd15113c2d6d481cbc2e4ee7429a82
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 00:28:13 2009 -0400
+
+ Revert "[libseed] The real problem with seed_gtype_construct was that the qdata storing the instance init function was being overwritten, use a hash table keyed by type now"
+
+ This reverts commit c7daca0f60ae7e687804b11a7f71990a96042b49.
+
+ Conflicts:
+
+ libseed/seed-gtype.c
+
+ examples/pango.js | 3 -
+ libseed/seed-gtype.c | 165 +++++++++++++++++++++++++++++++++++++++++++++++---
+ 2 files changed, 155 insertions(+), 13 deletions(-)
+
+commit 1ee31abd425e67a8d202a576a2520691ef6368be
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 31 00:21:17 2009 -0400
+
+ Revert "[libseed] Commit c7daca0f removed set/get_property on gtype class."
+
+ This reverts commit a5abcd40e738bc9d30cfec5369aca74b06cbab24.
+
+ libseed/seed-gtype.c | 40 ----------------------------------------
+ 1 files changed, 0 insertions(+), 40 deletions(-)
+
+commit fabfb136e709eda42c2d6d11230e2c2e7b539bda
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 30 22:19:16 2009 -0400
+
+ [tests] Accidentally committed broken test in last commit.
+
+ tests/javascript/gtypes/gtype-property-nice.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5f509e54d94dca9e0a22b41054976856818e51c6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 30 22:17:51 2009 -0400
+
+ [libseed] More pretty-install property types, exception handling, etc.
+
+ libseed/seed-gtype.c | 195 ++++++++++++++++++++----
+ tests/javascript/gtypes/gtype-property-nice.js | 2 +-
+ 2 files changed, 168 insertions(+), 29 deletions(-)
+
+commit 90ccc29b60c2ba4dd2d77c50dad497ed4f05acb3
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 30 21:30:14 2009 -0400
+
+ [libseed] Add more attractive way to define GObject properties on newly created GTypes.
+
+ This is incomplete as of yet (only supports bool and char properties, but it's mostly just copy-'n-paste from here on out).
+
+ Also, add a test that shows how to use this (to add a single boolean property, the others follow in an obvious way, except add "maximum_value" and "minimum_value" properties for properties that use them.
+
+ This also needs a *ton* more error checking.
+
+ libseed/seed-gtype.c | 125 +++++++++++++++++++++++-
+ tests/javascript/gtypes/gtype-property-nice.js | 32 ++++++
+ 2 files changed, 155 insertions(+), 2 deletions(-)
+
+commit a5abcd40e738bc9d30cfec5369aca74b06cbab24
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 30 20:53:28 2009 -0400
+
+ [libseed] Commit c7daca0f removed set/get_property on gtype class.
+
+ This fixes breakage in adding properties to JS-side GTypes.
+
+ libseed/seed-gtype.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+commit c53da2b3078bfd1c29a3fa0242b1de36e985872f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 29 21:01:58 2009 -0400
+
+ Update copyright headers and indentation notes.
+
+ libseed/seed-api.c | 4 +++-
+ libseed/seed-builtins.c | 4 +++-
+ libseed/seed-builtins.h | 6 ++----
+ libseed/seed-closure.c | 6 ++++--
+ libseed/seed-closure.h | 6 ++----
+ libseed/seed-debug.h | 6 ++----
+ libseed/seed-engine.c | 4 +++-
+ libseed/seed-engine.h | 6 ++----
+ libseed/seed-exceptions.c | 4 +++-
+ libseed/seed-exceptions.h | 6 ++----
+ libseed/seed-gtype.c | 4 +++-
+ libseed/seed-gtype.h | 6 ++----
+ libseed/seed-importer.c | 19 +++++++++++++++++++
+ libseed/seed-importer.h | 19 +++++++++++++++++++
+ libseed/seed-module.h | 19 +++++++++++++++++++
+ libseed/seed-private.h | 6 ++----
+ libseed/seed-signals.c | 4 +++-
+ libseed/seed-signals.h | 6 ++----
+ libseed/seed-structs.c | 4 +++-
+ libseed/seed-structs.h | 7 ++-----
+ libseed/seed-types.c | 4 +++-
+ libseed/seed-types.h | 6 ++----
+ libseed/seed.h | 6 ++----
+ modules/cairo/seed-cairo-enums.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo-image-surface.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo-matrix.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo-pattern.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo-pdf-surface.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo-surface.c | 19 +++++++++++++++++++
+ modules/cairo/seed-cairo.c | 19 +++++++++++++++++++
+ modules/canvas/seed-canvas.c | 19 +++++++++++++++++++
+ modules/dbus/dbus-exports.c | 19 +++++++++++++++++++
+ modules/dbus/dbus-values.c | 21 +++++++++++++++++++--
+ modules/dbus/module.c | 19 +++++++++++++++++++
+ modules/example/seed-example.c | 19 +++++++++++++++++++
+ modules/gettext/seed-gettext.c | 19 +++++++++++++++++++
+ modules/gtkbuilder/seed-gtkbuilder.c | 19 +++++++++++++++++++
+ modules/libxml/seed-libxml.c | 19 +++++++++++++++++++
+ modules/mpfr/seed-mpfr-arithmetic.c | 18 ++++++++++++++++++
+ modules/mpfr/seed-mpfr-cmp.c | 18 ++++++++++++++++++
+ modules/mpfr/seed-mpfr-trig.c | 18 ++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 19 +++++++++++++++++++
+ modules/multiprocessing/seed-multiprocessing.c | 19 +++++++++++++++++++
+ modules/os/seed-os.c | 19 +++++++++++++++++++
+ modules/readline/seed-readline.c | 19 +++++++++++++++++++
+ modules/sandbox/seed-sandbox.c | 19 +++++++++++++++++++
+ modules/sqlite/seed-sqlite.c | 19 +++++++++++++++++++
+ tests/c/api-closure.c | 19 +++++++++++++++++++
+ tests/c/api-js-signal-from-c.c | 19 +++++++++++++++++++
+ tests/c/api-types.c | 19 +++++++++++++++++++
+ tests/c/basic.c | 19 +++++++++++++++++++
+ tests/c/main.c | 19 +++++++++++++++++++
+ 52 files changed, 655 insertions(+), 57 deletions(-)
+
+commit b8aa7fd72ea82785122937ab617a5cde6c21d9bf
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 29 20:54:45 2009 -0400
+
+ [libseed] Indentation fix. Sorry, Robb.
+
+ libseed/seed-api.c | 97 +++++++----------
+ libseed/seed-builtins.c | 23 ++--
+ libseed/seed-builtins.h | 5 +-
+ libseed/seed-closure.c | 67 +++++++-----
+ libseed/seed-closure.h | 22 ++--
+ libseed/seed-engine.c | 97 +++++++++--------
+ libseed/seed-engine.h | 11 +-
+ libseed/seed-exceptions.c | 5 +-
+ libseed/seed-exceptions.h | 22 ++--
+ libseed/seed-gtype.c | 119 +++++++++++---------
+ libseed/seed-importer.c | 275 +++++++++++++++++++++++----------------------
+ libseed/seed-signals.c | 75 +++++++------
+ libseed/seed-structs.c | 17 ++--
+ libseed/seed-types.c | 130 ++++++++++------------
+ libseed/seed-types.h | 15 +--
+ 15 files changed, 496 insertions(+), 484 deletions(-)
+
+commit 79a52bf83738b259dfb4bc348a1f97198ad3f438
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jul 29 19:24:54 2009 -0400
+
+ [docs] Various tiny grammatical fixes
+
+ doc/reference/tmpl/seed-exception.sgml | 8 ++++----
+ doc/reference/tmpl/seed-jsclass.sgml | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 5200efdb207f460061e5f58ac5fab5096befc0dc
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 05:33:06 2009 -0400
+
+ [libseed] Real solution to the seed_gtype_construct recursion problem when inheriting from Seed defined GTypes. In seed_gtype_construct, we see if our parent is also a Seed defined type (has constructor == seed_gtype_construct), and if so we chain up to it's parent. If not, we chain to our parent.
+
+ libseed/seed-gtype.c | 53 +++++++++++++++++++++++++++++++++++--------------
+ 1 files changed, 38 insertions(+), 15 deletions(-)
+
+commit c7daca0f60ae7e687804b11a7f71990a96042b49
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 05:00:46 2009 -0400
+
+ [libseed] The real problem with seed_gtype_construct was that the qdata storing the instance init function was being overwritten, use a hash table keyed by type now
+
+ libseed/seed-gtype.c | 158 ++------------------------------------------------
+ 1 files changed, 6 insertions(+), 152 deletions(-)
+
+commit 2713cdcd087e55b96467c43c7dc57c83540a02ab
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 04:49:40 2009 -0400
+
+ [libseed] Remove some unused quarks
+
+ libseed/seed-gtype.c | 5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+commit 343c99ffe3db1d9cdec89216e3aeae17c2e68985
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 04:40:58 2009 -0400
+
+ [libseed] Fix the code duplication in init/init_with_context_group. init_with_context_group was out of sync anyway
+
+ libseed/seed-engine.c | 101 ++++++++-----------------------------------------
+ 1 files changed, 16 insertions(+), 85 deletions(-)
+
+commit 6932a8fff032b8c04ce6003bc0beff6cf61ba3b9
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 03:51:27 2009 -0400
+
+ [libseed] All Seed created GTypes have the same construct function (seed_gtype_construct), and so when chaining to the parent constructor, it is neccessary to explicitly pass the parent type rather than the constructor type, or suffer imminent stack overflow closes 590049. This was introduced in the switch from using init to constructors. Also includes a test
+
+ libseed/seed-gtype.c | 2 +-
+ tests/javascript/gtypes/Makefile.am | 1 +
+ tests/javascript/gtypes/gtype-gtype.js | 26 ++++++++++++++++++++++++++
+ 3 files changed, 28 insertions(+), 1 deletions(-)
+
+commit c5c340ad6dea7d0e034b1544e9ea074b03329891
+Author: Robert Carr <racarr@gnome.org>
+Date: Wed Jul 29 03:42:01 2009 -0400
+
+ [libseed] Prototype of gobject_methods should be Function.prototype. JSCore does not expose the JSObjectRef for Function.prototype, so it is neccessary to evaluate Function.prototype and assign from this.
+
+ libseed/seed-engine.c | 10 ++++++++++
+ libseed/seed-engine.h | 2 ++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 2074f448e9033a28e5a56757b4a96ebdf929ed30
+Author: Robert Carr <racarr@gnome.org>
+Date: Tue Jul 28 23:55:59 2009 -0400
+
+ [docs] Add remarks about JavaScriptCore exception model
+
+ doc/reference/tmpl/seed-exception.sgml | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 705f8593007bc891d846acb94e8618b0f5534072
+Author: Robert Carr <racarr@gnome.org>
+Date: Tue Jul 28 23:48:28 2009 -0400
+
+ [docs] Add some documentation to SeedClass
+
+ doc/reference/tmpl/seed-jsclass.sgml | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 0665abac32a65f343e7dc645b6add2b15c9507cd
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 27 16:08:33 2009 -0400
+
+ [libseed] Use g_build_filename for portability
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit acdf1ac0bdb852be8da7b947a32090ca8f1f89d0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Jul 26 12:03:11 2009 -0400
+
+ [libseed] Implement __init__.js functionality. When an importer directory is loaded (say imports.lightsoff) if the folder contains __init__.js it will be run (with the imports.lightsoff object as this)
+
+ libseed/seed-api.c | 9 +++++++++
+ libseed/seed-engine.h | 11 +++++++++++
+ libseed/seed-importer.c | 5 +++++
+ libseed/seed.h | 1 +
+ 4 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 5b17a330a7e1548ae4de440c62d1cf014b69208b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Jul 26 11:53:28 2009 -0400
+
+ [libseed] Refactor some of the importer dir handling code (adding __init__.js) soon
+
+ libseed/seed-importer.c | 22 ++++++++++++++++++++--
+ 1 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 35e489736416bec156ed64da969d7dd689db3299
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 23 08:23:44 2009 -0400
+
+ [docs] Search path documentation
+
+ doc/reference/imports.sgml | 13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 42884e419cc2d06ae171bcd16b4e7baf6195ea48
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 23 07:43:57 2009 -0400
+
+ [docs] Loading native modules documentation
+
+ doc/reference/imports.sgml | 21 +++++++++++++++++++--
+ 1 files changed, 19 insertions(+), 2 deletions(-)
+
+commit e4992b7a74635d3bd9b592d675d3cedaa4506fc7
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 22 15:47:30 2009 -0400
+
+ [docs] Initial gtk-doc about the importer (from JS-side)
+
+ This and all subsequent commits should be reviewed later or by
+ other eyes, as this documentation is being written on a bus...
+
+ doc/reference/imports.sgml | 59 ++++++++++++++++++++++++++++++++++++++++++
+ doc/reference/seed-docs.sgml | 8 +++--
+ 2 files changed, 64 insertions(+), 3 deletions(-)
+
+commit ec8d13813ca60c723c98c33bf56a7af104c9a69c
+Author: Ernani Azevedo <ernaniaz@gmail.com>
+Date: Tue Jul 21 14:42:38 2009 -0400
+
+ [docs] Make documentation respect DESTDIR install parameter
+
+ doc/modules/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 249a26bd0774ff7a3c45c295c1b355ab015981c1
+Author: Xan Lopez <xan@gnome.org>
+Date: Mon Jun 22 15:18:36 2009 +0300
+
+ Fix iteration over out parameters after invoking a function.
+
+ We were using the same index to iterate over both in and out arrays,
+ but since they are different arrays both starting at 0 we need to use
+ two variables.
+
+ On top of that, use out_args as the arguments source, since that's the
+ array that we pass to g_function_info_invoke.
+
+ libseed/seed-engine.c | 9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+commit cb2a4316ccf6c7fc923bbc9ccde1072d83b1e994
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 16 16:55:27 2009 -0400
+
+ [os] Also use canonicalize_file_name in os.realpath
+
+ modules/os/seed-os.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2b6406f682002c136cb62176214859699768f2df
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 16 16:32:32 2009 -0400
+
+ [libseed] Use canonicalize_file_name instead of realpath
+
+ Apparently MAX_PATH is broken on many systems, and realpath is just a bad idea;
+ this trades one problem for another, because now we depend on a glibc extension
+
+ libseed/seed-importer.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 357249509ac56e88629791f6f89bee2122ace403
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 16 07:52:48 2009 -0400
+
+ Replace use of g_strconcat with "/" with g_build_filename
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8e530b8e5f6bba577709c94e244def26eb862d8f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jul 15 01:54:11 2009 -0400
+
+ [libseed] [os] Make __script_path__ canonical and absolute. Add os.realpath.
+
+ extensions/Seed.js.in | 23 ++++++++++++++++++++---
+ libseed/seed-importer.c | 17 ++++++++++++++---
+ modules/os/seed-os.c | 23 +++++++++++++++++++++++
+ 3 files changed, 57 insertions(+), 6 deletions(-)
+
+commit 5f4db73080bb6d7f5d0a6edbc5cc5eed34a01716
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue Jul 14 17:22:52 2009 -0400
+
+ [gtkbuilder] Override Gtk.Builder.add_from_string to automatically pass the length argument
+
+ extensions/Gtk.js | 10 ++++++++++
+ modules/gtkbuilder/seed-gtkbuilder.c | 2 +-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 43bbb4efb5929f31a8388ccfc21bebbd71996450
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue Jul 14 16:57:04 2009 -0400
+
+ [libseed] Expose path to script as __script_path__ on all JS contexts
+
+ extensions/Seed.js.in | 6 +++---
+ libseed/seed-importer.c | 6 ++++++
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 507a6b4fd2ffabb94861f02e4854282e09d8ddbc
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jul 13 20:33:22 2009 -0400
+
+ [examples] ls.js accidentally got Seed. stripped from printf (not print)
+
+ examples/ls.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f0e383e71ae80fceb558ed2334fa64459d0245f8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 13 04:20:29 2009 -0400
+
+ [docs] Seed online docs moved to library.gnome.org
+
+ doc/reference/seed-docs.sgml | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c86a963cc8ad8ac6b336439d5177e1709a1a9175
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 18:03:19 2009 -0400
+
+ [docs] Native function example
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 38 ++++++++++++++++++++++++++++++
+ 1 files changed, 38 insertions(+), 0 deletions(-)
+
+commit d07fc3f0de74f1a97066d1fde477d98a09cc2974
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 17:49:42 2009 -0400
+
+ [docs] Move SeedFunctionCallback docs to seed-api.c
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 15 +++++++--------
+ libseed/seed-api.c | 17 +++++++++++++++++
+ 2 files changed, 24 insertions(+), 8 deletions(-)
+
+commit bd64bd2880e4a97ad149a9531857a2bd470c1424
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 17:40:31 2009 -0400
+
+ [docs] SeedFunctionCallback documentation
+
+ I put docs for this in the sgml template. Not sure that's right, but it seems
+ wrong to put it in seed.h too
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 15 ++++++++-------
+ 1 files changed, 8 insertions(+), 7 deletions(-)
+
+commit 80047cc4c1417f6bcb0ffd9664c7b8c44480566e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 17:30:19 2009 -0400
+
+ [libseed] Fix inconsistent argument naming on seed_create_function
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 4 ++--
+ libseed/seed.h | 4 ++--
+ m4/libtool.m4 | 3 +++
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+commit a1ef3808f0f2dd353bf32a66ae5ee9a9bbc67b16
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 17:27:20 2009 -0400
+
+ [docs] seed_create_function
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 11 +++++++++++
+ libseed/seed-engine.c | 12 ++++++++++++
+ 2 files changed, 23 insertions(+), 0 deletions(-)
+
+commit cb832d1dd5adf4f55e50044c4e35a76254af2d9c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 12 17:21:25 2009 -0400
+
+ [docs] Update native function documentation
+
+ doc/reference/tmpl/seed-nativefuncs.sgml | 17 +++++------------
+ libseed/seed-api.c | 5 ++++-
+ 2 files changed, 9 insertions(+), 13 deletions(-)
+
+commit e1d947a9d2fe8aabae4a32703ed0e76157752269
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 12 16:33:47 2009 -0400
+
+ [docs] Update more seed_value* docs
+
+ libseed/seed-api.c | 54 +++++++++++++++++++++++++++++++++++++++++++--------
+ m4/libtool.m4 | 3 --
+ 2 files changed, 45 insertions(+), 12 deletions(-)
+
+commit 76d4134bebfe35ff4525053f62bf32a6dde30c88
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 12 16:12:39 2009 -0400
+
+ [docs] seed_value_[to/from]_object
+
+ libseed/seed-types.c | 28 +++++++++++++++++++++++++++-
+ 1 files changed, 27 insertions(+), 1 deletions(-)
+
+commit b3ab1da1d2dd3edd04d193a00b0f76b2b935849a
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 12 16:04:43 2009 -0400
+
+ [docs] seed_value_to/from_filename, binary_string, etc
+
+ libseed/seed-api.c | 32 ++++++++++++++++++--------------
+ libseed/seed-types.c | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 14 deletions(-)
+
+commit 7b31d94a35d91ebe2149ba5ab01048dbad297c76
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 12 15:51:05 2009 -0400
+
+ [docs] Add example for exception throwing
+
+ doc/reference/tmpl/seed-context.sgml | 2 +-
+ doc/reference/tmpl/seed-exception.sgml | 34 ++++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 1 deletions(-)
+
+commit a3b64d47ed29af92f5cb0d4afe34962f67df6a24
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 12 15:21:26 2009 -0400
+
+ [docs] Update SeedScript/evaluation docs
+
+ doc/reference/tmpl/seed-eval.sgml | 34 +++++++++++++++++++++++++++++++++-
+ libseed/seed-api.c | 10 ++++++++--
+ 2 files changed, 41 insertions(+), 3 deletions(-)
+
+commit 2ca762eb8626ee08057a9a35e9531b917ed06102
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jul 11 21:12:47 2009 -0400
+
+ [docs] Expand seed_value_to_string docs to explain various conditions
+
+ libseed/seed-types.c | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 5b45b9c62d2171b90318d23f021a3f6f736f1f6a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Jul 11 21:04:08 2009 -0400
+
+ [libseed] Type-conversion documentation (filler, to make gtk-doc happy)
+
+ libseed/seed-types.c | 114 +++++++++++++++++++++++++++++++++++++------------
+ m4/libtool.m4 | 27 ++++++++++--
+ 2 files changed, 109 insertions(+), 32 deletions(-)
+
+commit 78ca796573ea93c37a049ea9b9c815d79de9b0d8
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 11 01:41:47 2009 -0400
+
+ [libseed] More minor GLib usage and redefinition fixes.
+
+ libseed/seed-api.c | 12 ++--
+ libseed/seed-builtins.c | 59 +++++++++-------------
+ libseed/seed-closure.c | 16 +++---
+ libseed/seed-engine.c | 9 ++--
+ libseed/seed-exceptions.c | 9 ++--
+ libseed/seed-gtype.c | 66 +++++++++++-------------
+ libseed/seed-structs.c | 9 ++--
+ libseed/seed-types.c | 123 +++++++++++++++++++++------------------------
+ 8 files changed, 141 insertions(+), 162 deletions(-)
+
+commit cedbd784516b7309afbeada52256f18239810768
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 11 00:19:04 2009 -0400
+
+ [libseed] Use glib types everywhere, don't redefine variables in inner scope, etc.
+
+ libseed/seed-engine.c | 39 ++++++++++++++--------------
+ libseed/seed-exceptions.c | 8 +++--
+ libseed/seed-importer.c | 61 +++++++++++++++++++++++---------------------
+ libseed/seed-signals.c | 9 ++++--
+ libseed/seed-structs.c | 47 +++++++++++++++++-----------------
+ 5 files changed, 86 insertions(+), 78 deletions(-)
+
+commit 5391d53c3c92bea30143ea0468212f798a721bf1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 23:17:26 2009 -0400
+
+ [tests] Distribute module test
+
+ tests/javascript/Makefile.am | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit f879de36b63568c9ab37e437067fd538fdc6c4df
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 10 23:08:31 2009 -0400
+
+ [libseed] Reduced unneccessary libc string functions in favor of glib ones
+
+ libseed/seed-builtins.c | 4 +---
+ libseed/seed-engine.c | 7 +++----
+ libseed/seed-exceptions.c | 3 +--
+ libseed/seed-importer.c | 28 ++++++++++++++--------------
+ libseed/seed-signals.c | 5 ++---
+ libseed/seed-structs.c | 6 ++----
+ libseed/seed-types.c | 3 +--
+ m4/libtool.m4 | 24 ++++--------------------
+ src/main.c | 2 --
+ 9 files changed, 28 insertions(+), 54 deletions(-)
+
+commit a3f95340e19e82faf4c0c6e2b70a9388e33f9f93
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:33:10 2009 -0400
+
+ [examples] Note to the user that calculator-mpfr isn't working yet
+
+ examples/calculator-mpfr.js | 3 +++
+ tools/check-release.sh | 1 +
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 722d61cdb9da1fd2db204026a637250081187f0b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:29:36 2009 -0400
+
+ Revert "[docs] Try to keep html directory around (empty file so git doesn't lose it)"
+
+ This reverts commit 3acbf99b1f53e4494a9bb1a5af31a0d68188119e.
+
+ 0 files changed, 0 insertions(+), 0 deletions(-)
+
+commit 357f14425225a723c75d315a8e024387e7c8bc9f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:29:27 2009 -0400
+
+ Revert "[docs] Missed part of the last commit"
+
+ This reverts commit 19658a0833b6f5fdc95d26d1151e2b42a6b2a1b8.
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 19658a0833b6f5fdc95d26d1151e2b42a6b2a1b8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:27:25 2009 -0400
+
+ [docs] Missed part of the last commit
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3acbf99b1f53e4494a9bb1a5af31a0d68188119e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:16:29 2009 -0400
+
+ [docs] Try to keep html directory around (empty file so git doesn't lose it)
+
+ 0 files changed, 0 insertions(+), 0 deletions(-)
+
+commit ee2714fc1e4050a7237d0fd0e630064f144ccbb2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:15:24 2009 -0400
+
+ [docs] Make sure to distribute contact documentation page
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9769390e6cc3b24e10ad3f47503fdfad1e028387
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:15:05 2009 -0400
+
+ [tools] Use public git repo for check-release, not git+ssh
+
+ tools/check-release.sh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d7ce9a47b25a7b481c2b58693a26a070195fce51
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 20:00:53 2009 -0400
+
+ [build] Clean up configure output surrounding mpfr detection
+
+ configure.ac | 5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+commit 040640ee779534c623e6642d61e359ad6d91cb72
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 19:58:10 2009 -0400
+
+ [build] Distribute manpage
+
+ doc/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 51b6443fc5a573432af9574e48ae79167d8154e6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 19:56:39 2009 -0400
+
+ [docs] Add empty seed.types back so make dist doesn't complain
+
+ .gitignore | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit dd992cfa5813a59963b7d8d4f84c5ea55773de32
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 18:06:25 2009 -0400
+
+ [modules] Fix last remaining minor warnings in canvas and dbus
+
+ modules/canvas/seed-canvas.c | 6 +++---
+ modules/dbus/dbus-values.c | 3 +++
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 2e57474eec77500d802e255eb52767f3740a2f19
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 17:26:42 2009 -0400
+
+ [docs] Don't scan seed-debug or seed-path, as they're not public api
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4b1663647e75c94c9c202a86489108f81105cbfe
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 17:23:03 2009 -0400
+
+ [docs] Include module references in big Seed Reference
+
+ It's becoming clear that we should put *everything* in the one
+ big book, so we can have interlinking and so that everything is
+ in the same devhelp book.
+
+ doc/Makefile.am | 2 +-
+ doc/modules/book.xml | 2 +-
+ doc/modules/gtkbuilder/gtkbuilder.xml | 10 +++++-----
+ doc/modules/readline/readline.xml | 10 +++++-----
+ doc/modules/sandbox/sandbox.xml | 11 +++++------
+ doc/modules/sqlite/sqlite.xml | 16 ++++++++--------
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/contact.sgml | 2 +-
+ doc/reference/seed-docs.sgml | 17 +++++++++++++----
+ 9 files changed, 40 insertions(+), 32 deletions(-)
+
+commit 4ff12561a2c7d4ad270ca296f72f8b7b5472a93e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 16:32:25 2009 -0400
+
+ Update version to 0.8.5
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4079409f2a59ad0e8b884dacce7071eeffd54eaa
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 16:31:43 2009 -0400
+
+ Add changelog data for 0.8.5
+
+ ChangeLog | 35 ++++++++++++++++++++++++++++++++---
+ 1 files changed, 32 insertions(+), 3 deletions(-)
+
+commit 15bc4fe551bd33f3234b4b9c05fb662bc7b410e6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 15:50:20 2009 -0400
+
+ Repair changelog (0.8 didn't conform to 80 chars, double spacing)
+
+ ChangeLog | 66 ++++++++++++++++++++++++++++++++++++++++++++++--------------
+ 1 files changed, 50 insertions(+), 16 deletions(-)
+
+commit 1e8e6a75232f1b0c2f719a8f9383bea4a2bffc08
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 10 15:45:57 2009 -0400
+
+ [docs] Move webkit minimum revision details to deps list, not intro
+
+ doc/reference/building.sgml | 4 ++--
+ doc/reference/introduction.sgml | 7 ++-----
+ 2 files changed, 4 insertions(+), 7 deletions(-)
+
+commit 8b599c999131de68d7fe26f09aa68e2e4a56efd6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 9 00:57:41 2009 -0400
+
+ [docs] Significantly updated exception documentation
+
+ doc/reference/tmpl/seed-exception.sgml | 1 +
+ libseed/seed-exceptions.c | 23 +++++++++++++++++++++--
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit 914a2e95e68724fbed2ef209392b537871faca5d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 9 00:43:30 2009 -0400
+
+ [docs] Remove import_namespace and include from runtime docs
+
+ doc/runtime.html.in | 27 ---------------------------
+ 1 files changed, 0 insertions(+), 27 deletions(-)
+
+commit e6b1696d22f915bf5098a7d21256f164f79f53d2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 9 00:41:57 2009 -0400
+
+ [docs] Add exception names to reference
+
+ doc/reference/tmpl/seed-exception.sgml | 14 ++++++++++++--
+ libseed/seed-exceptions.c | 5 ++---
+ libseed/seed-module.h | 3 ++-
+ 3 files changed, 16 insertions(+), 6 deletions(-)
+
+commit ad5feadbd8a0b3f8f8d1551a1e9263fcada58061
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 9 00:14:26 2009 -0400
+
+ [docs] Scan seed-header.h; install seed-header.h; docs for seed-header.h
+
+ doc/reference/seed-sections.txt | 3 +
+ doc/reference/tmpl/seed-modules.sgml | 28 +++++++++++++
+ libseed/Makefile.am | 2 +-
+ libseed/seed-module.h | 72 ++++++++++++++++++++++++++++++++++
+ modules/Makefile.am | 2 -
+ modules/cairo/Makefile.am | 1 -
+ modules/canvas/Makefile.am | 1 -
+ modules/dbus/Makefile.am | 1 -
+ modules/example/Makefile.am | 1 -
+ modules/gettext/Makefile.am | 1 -
+ modules/gtkbuilder/Makefile.am | 1 -
+ modules/libxml/Makefile.am | 1 -
+ modules/mpfr/Makefile.am | 1 -
+ modules/multiprocessing/Makefile.am | 3 +-
+ modules/os/Makefile.am | 3 +-
+ modules/readline/Makefile.am | 2 +-
+ modules/sandbox/Makefile.am | 1 -
+ modules/seed-module.h | 33 ---------------
+ modules/sqlite/Makefile.am | 2 +-
+ 19 files changed, 108 insertions(+), 51 deletions(-)
+
+commit 87b930b47e17e8da289425083706058170288919
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 21:59:00 2009 -0400
+
+ [docs] Fix incorrect argument name in prepare_global_context docs.
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d6cc781232c0d804b831ec1cbe1e9e6163456e5d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 21:58:20 2009 -0400
+
+ [docs] Add context sample code
+
+ doc/reference/tmpl/seed-context.sgml | 14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+commit cb63a71c7e172ae696e47b257ecce9a58d0b0f4f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 19:30:25 2009 -0400
+
+ [mpfr] Made mpfr.zeta support mpfr_zeta_ui
+
+ modules/mpfr/seed-mpfr-trig.c | 11 ++++++++---
+ 1 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 97f6941a9e2aa10b431e6433c6e03dbfa23a0ff8
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 19:07:19 2009 -0400
+
+ [mpfr] Added mpfr.cmp_si_2exp
+
+ modules/mpfr/seed-mpfr-cmp.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 42 insertions(+), 0 deletions(-)
+
+commit 43110b2c79de98c3db06c6c0482aed9d096689b1
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 19:01:22 2009 -0400
+
+ [mpfr] Added mpfr.div_2si
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 40 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 42 insertions(+), 0 deletions(-)
+
+commit ebfee4e5c63cfd8be80e3a1f1f1048a0c9e30421
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 19:00:15 2009 -0400
+
+ [mpfr] Added mpfr.mul_2si
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 40 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 42 insertions(+), 0 deletions(-)
+
+commit bf1f335aeb7dd36ff5cc05b891530bfff5e2775d
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:50:13 2009 -0400
+
+ [mpfr] Added mpfr.pow
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 65 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 67 insertions(+), 0 deletions(-)
+
+commit 851a5a6506f87c37c1b41a8ad304eb60cc1cb162
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:33:25 2009 -0400
+
+ [mpfr] Added mpfr.root
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 41 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 43 insertions(+), 0 deletions(-)
+
+commit c6fdb66f865aa6d520845a3f4fee50b758bc8dd0
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:26:10 2009 -0400
+
+ [mpfr] Added mpfr.sqr
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 30 ++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 32 insertions(+), 0 deletions(-)
+
+commit 5738d1175fc4838440bc994cb156a9f48035887c
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:24:23 2009 -0400
+
+ [mpfr] Added mpfr.div
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 61 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 63 insertions(+), 0 deletions(-)
+
+commit 8c10fb9166d09d97592951840e0029fb40ccaabb
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:22:58 2009 -0400
+
+ [mpfr] Added mpfr.sub
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 61 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 63 insertions(+), 0 deletions(-)
+
+commit 404d588cd8beb3743a1427e3e34d27409e217548
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 18:19:19 2009 -0400
+
+ [mpfr] Added mpfr.mul
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 61 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 +
+ 3 files changed, 64 insertions(+), 0 deletions(-)
+
+commit a9aba4a900db1e383f9b14074791f5c3b41b6fce
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 17:55:44 2009 -0400
+
+ [mpfr] mpfr.check_range
+
+ modules/mpfr/seed-mpfr.c | 24 ++++++++++++++++++++++++
+ 1 files changed, 24 insertions(+), 0 deletions(-)
+
+commit 5f7e61f5c3710a2e8b91a635ad1eb56a7067f352
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 17:54:16 2009 -0400
+
+ [mpfr] Added mpfr.subnormalize
+
+ modules/mpfr/seed-mpfr.c | 24 ++++++++++++++++++++++++
+ 1 files changed, 24 insertions(+), 0 deletions(-)
+
+commit aa2c73c6f6afeb3631ee1f01aa2f9c51a002aa21
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 17:49:29 2009 -0400
+
+ [docs] Add a bit of SeedContext documentation
+
+ doc/reference/tmpl/seed-context.sgml | 6 +++++-
+ libseed/seed-api.c | 4 ++++
+ libseed/seed-engine.c | 11 +++++++++--
+ 3 files changed, 18 insertions(+), 3 deletions(-)
+
+commit 11df7daf19cf4eaf064fdd1cbee83e8f24228eec
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 16:19:41 2009 -0400
+
+ [docs] Use &nbsp; to make empty lines not disappear. Hackk..
+
+ doc/reference/tmpl/seed-main.sgml | 8 ++++----
+ doc/reference/tmpl/seed-modules.sgml | 25 ++++++++++++-------------
+ 2 files changed, 16 insertions(+), 17 deletions(-)
+
+commit ebfa0c081960c5cd2418452e768712ffff935d8f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 13:38:09 2009 -0400
+
+ Added mpfr.clear_flags()
+
+ modules/mpfr/seed-mpfr-trig.c | 12 ++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 14 insertions(+), 0 deletions(-)
+
+commit bfc30ff0b89e2d0664f0763a666e9f790317627d
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 13:35:21 2009 -0400
+
+ Added other flags
+
+ modules/mpfr/seed-mpfr.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 104 insertions(+), 0 deletions(-)
+
+commit 4d4eb865512698b708d161da00ee6eec5d2591c7
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 13:30:00 2009 -0400
+
+ Underflow flag
+
+ modules/mpfr/seed-mpfr.c | 26 ++++++++++++++++++++++++++
+ 1 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 7668be5a9559e9f281527e1edfdf261ff4c938dc
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 13:22:23 2009 -0400
+
+ Added emin_min, emin_max, emax_min, emax_max
+
+ modules/mpfr/seed-mpfr.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 44 insertions(+), 0 deletions(-)
+
+commit 62546b402f150009bcbccbf0e638b18209373ecd
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 8 13:09:27 2009 -0400
+
+ Made mpfr.cmp work with doubles
+
+ modules/mpfr/seed-mpfr-cmp.c | 14 ++++++++++----
+ 1 files changed, 10 insertions(+), 4 deletions(-)
+
+commit 4a0f80f582272689368d3a792078b8d07a280210
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jul 8 14:22:44 2009 -0400
+
+ [gettext] Don't free the wrong string (causing double-free crash in case of no translation)
+
+ modules/gettext/seed-gettext.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit b531c83fcd6eb374a9af4fcb5c763ab2d20d1723
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 01:24:17 2009 -0400
+
+ [docs] Expand "Initialization" docs
+
+ libseed/seed-api.c | 4 +++-
+ libseed/seed-engine.c | 24 +++++++++++++++++++++---
+ 2 files changed, 24 insertions(+), 4 deletions(-)
+
+commit 596536aef46f13167f48dc664685c83768e32cd1
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 01:10:06 2009 -0400
+
+ [docs] Add a few simple examples for writing modules. Why isn't spacing preserved in inline code?
+
+ doc/reference/tmpl/seed-modules.sgml | 92 +++++++++++++++++++++++++++++-
+ doc/reference/tmpl/seed-nativefuncs.sgml | 2 +-
+ 2 files changed, 91 insertions(+), 3 deletions(-)
+
+commit 976c7463e44b9eed61047488dd0e51c667ed8879
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 00:57:18 2009 -0400
+
+ [libseed] Fix spelling error in SeedFunctionCallback
+
+ libseed/seed.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 37591fb2e2c449a91b76306eb8ae2cfcae761ebe
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 00:23:46 2009 -0400
+
+ [docs] Add simple "Hello world" to docs
+
+ doc/reference/tmpl/seed-main.sgml | 25 ++++++++-
+ doc/reference/tmpl/seed-unused.sgml | 110 -----------------------------------
+ 2 files changed, 24 insertions(+), 111 deletions(-)
+
+commit f2913266b2903527b55333c32318974259608b4a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed Jul 8 00:11:10 2009 -0400
+
+ [docs] Add overrides for some of the structs which aren't getting scanned
+
+ .gitignore | 1 -
+ doc/reference/seed-overrides.txt | 41 ++++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/seed-closure.sgml | 11 +++++++++
+ doc/reference/tmpl/seed-eval.sgml | 4 +++
+ doc/reference/tmpl/seed-main.sgml | 12 +++++++++-
+ libseed/seed-api.c | 5 ++-
+ 6 files changed, 70 insertions(+), 4 deletions(-)
+
+commit 9c5c7ca039b69bf4dea73057452977ca98b27d2a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 22:17:52 2009 -0400
+
+ [docs] Fix numerous gtk-doc warnings
+
+ doc/reference/tmpl/seed-jsclass.sgml | 2 +-
+ doc/reference/tmpl/seed-nativefuncs.sgml | 2 +-
+ doc/reference/tmpl/seed-nativetypes.sgml | 2 +-
+ libseed/seed-exceptions.c | 4 +++-
+ libseed/seed.h | 7 +++----
+ 5 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 8d02ea7b7780a0aaef4430eccadf94fb93ba0e72
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:48:27 2009 -0400
+
+ [os] Fix a few more warnings
+
+ modules/os/seed-os.c | 7 +------
+ 1 files changed, 1 insertions(+), 6 deletions(-)
+
+commit dd5906ddfc057e865ab10647457d52d749f1593c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:46:56 2009 -0400
+
+ [modules] Fix many warnings
+
+ Makefile.am | 4 ++--
+ modules/multiprocessing/seed-multiprocessing.c | 1 -
+ modules/readline/seed-readline.c | 6 +-----
+ 3 files changed, 3 insertions(+), 8 deletions(-)
+
+commit dbabb34e177646246a6f5aa2e60fbd6b9c301e7f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:33:34 2009 -0400
+
+ [libseed] Make seed_make_pointer public; libxml module uses it, and I see no reason not to
+
+ doc/reference/seed-sections.txt | 3 ++-
+ doc/reference/tmpl/seed-typeconversion.sgml | 10 ++++++++++
+ libseed/seed.h | 1 +
+ 3 files changed, 13 insertions(+), 1 deletions(-)
+
+commit ade592dd81d8ef69484d0192eb9ad3679251606a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:29:11 2009 -0400
+
+ [libxml] Fix many warnings now that -Wall is on
+
+ modules/libxml/seed-libxml.c | 18 +++++++++---------
+ 1 files changed, 9 insertions(+), 9 deletions(-)
+
+commit 3da6f00a365d347db51e88430fdc84ea8ad339d6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:18:45 2009 -0400
+
+ [example module] Fix warnings (include glib, etc)
+
+ modules/example/Makefile.am | 1 -
+ modules/example/seed-example.c | 5 +++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 78284d355c6046536472034429fdf4787e703b6b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Tue Jul 7 01:16:28 2009 -0400
+
+ [gettext] Fix missing return from dcgettext
+
+ modules/gettext/seed-gettext.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 77a6cdd64f3e7326e6b8b75716d1ee3a213de8d7
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 13:07:08 2009 -0400
+
+ [docs] Add seed_empty_class to classes doc, needs to be prettier
+
+ doc/reference/seed-sections.txt | 1 +
+ doc/reference/tmpl/seed-jsclass.sgml | 7 +++++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 4cb03f4187c65cc7f5c54403e14d86de810d1911
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 08:44:28 2009 -0400
+
+ [docs] Update wording of module deps
+
+ doc/reference/building.sgml | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 01a8c1016a764cc89955929ddc7d57a8a1f5619c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 08:36:05 2009 -0400
+
+ [docs] Add bugzilla to contact page
+
+ doc/reference/contact.sgml | 6 +++++-
+ doc/reference/tmpl/seed-closure.sgml | 1 -
+ doc/reference/tmpl/seed-context.sgml | 1 -
+ doc/reference/tmpl/seed-eval.sgml | 1 -
+ doc/reference/tmpl/seed-exception.sgml | 1 -
+ doc/reference/tmpl/seed-jsclass.sgml | 1 -
+ doc/reference/tmpl/seed-main.sgml | 1 -
+ doc/reference/tmpl/seed-modules.sgml | 1 -
+ doc/reference/tmpl/seed-nativefuncs.sgml | 1 -
+ doc/reference/tmpl/seed-nativetypes.sgml | 1 -
+ doc/reference/tmpl/seed-object.sgml | 1 -
+ doc/reference/tmpl/seed-signals.sgml | 1 -
+ doc/reference/tmpl/seed-typeconversion.sgml | 1 -
+ 13 files changed, 5 insertions(+), 13 deletions(-)
+
+commit 761d0ef1c02cea817263eab77def83e80434e199
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 08:31:23 2009 -0400
+
+ [docs] Apparently, keeping the generated sgml files around is OK, they get *merged* with new data from the source (and they're where our section titles are)
+
+ doc/reference/tmpl/seed-closure.sgml | 66 ++++
+ doc/reference/tmpl/seed-context.sgml | 90 ++++++
+ doc/reference/tmpl/seed-eval.sgml | 69 ++++
+ doc/reference/tmpl/seed-exception.sgml | 78 +++++
+ doc/reference/tmpl/seed-jsclass.sgml | 54 ++++
+ doc/reference/tmpl/seed-main.sgml | 49 +++
+ doc/reference/tmpl/seed-modules.sgml | 19 ++
+ doc/reference/tmpl/seed-nativefuncs.sgml | 46 +++
+ doc/reference/tmpl/seed-nativetypes.sgml | 109 +++++++
+ doc/reference/tmpl/seed-object.sgml | 273 ++++++++++++++++
+ doc/reference/tmpl/seed-signals.sgml | 33 ++
+ doc/reference/tmpl/seed-typeconversion.sgml | 452 +++++++++++++++++++++++++++
+ doc/reference/tmpl/seed-unused.sgml | 38 +++
+ 13 files changed, 1376 insertions(+), 0 deletions(-)
+
+commit bd1ba3812693afa393f300f18a9721136880a5e4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 08:21:18 2009 -0400
+
+ [docs] Add manpage (seed.1)
+
+ Makefile.am | 3 ++-
+ doc/seed.1 | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 31 insertions(+), 1 deletions(-)
+
+commit acb8a8b4571dd903cfb90bc48f214e762ea4f2df
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 07:56:21 2009 -0400
+
+ [docs] Set namespace to "seed" so reference index is usable
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f8ccfef5944328395a88247fa9e482e6bd6091f1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 07:54:03 2009 -0400
+
+ [docs] Only list seed/seed.html once in sections
+
+ doc/reference/seed-sections.txt | 14 ++------------
+ 1 files changed, 2 insertions(+), 12 deletions(-)
+
+commit 6876b5287e00ce7b26dc03d973ab0737e6710b72
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 07:50:41 2009 -0400
+
+ [docs] Update makefile (put static sgml files in the right section)
+
+ doc/reference/Makefile.am | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 6dd8133e74a65a1c3594f07ce0e5ef5959ac3131
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jul 6 07:44:02 2009 -0400
+
+ [docs] Continuing reorg; break into new sections, name sections
+
+ doc/reference/seed-docs.sgml | 28 +++--
+ doc/reference/seed-sections.txt | 218 +++++++++++++++------------
+ doc/reference/tmpl/seed-eval.sgml | 10 ++
+ doc/reference/tmpl/seed-jsclass.sgml | 10 ++
+ doc/reference/tmpl/seed-modules.sgml | 10 ++
+ doc/reference/tmpl/seed-nativefuncs.sgml | 10 ++
+ doc/reference/tmpl/seed-nativetypes.sgml | 10 ++
+ doc/reference/tmpl/seed-signals.sgml | 10 ++
+ doc/reference/tmpl/seed-typeconversion.sgml | 10 ++
+ doc/reference/tmpl/seed-value.sgml | 10 --
+ 10 files changed, 209 insertions(+), 117 deletions(-)
+
+commit b59d855ec74057fee31e1265e51d0c1410cefd32
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 23:00:01 2009 -0400
+
+ [mpfr] Put stuff on mpfr namespace that belongs there
+
+ modules/gettext/seed-gettext.c | 4 +-
+ modules/mpfr/seed-mpfr.c | 95 +++++++++++++++++++---------------------
+ 2 files changed, 47 insertions(+), 52 deletions(-)
+
+commit 12960844df76632b0aa020d85be58ffc0133da2a
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 21:52:36 2009 -0400
+
+ [mpfr] get/set emin/emax
+
+ modules/mpfr/seed-mpfr.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 66 insertions(+), 0 deletions(-)
+
+commit 9dbc65f301ad4fb32ff86ad0746243fe4bb04f1a
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 21:19:03 2009 -0400
+
+ [mpfr] Added mpfr.get_version and get_patches
+
+ modules/mpfr/seed-mpfr.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 38 insertions(+), 0 deletions(-)
+
+commit 6023680fe5d5cfaf92327024ba21b977f9c10c30
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 21:06:41 2009 -0400
+
+ [mpfr] Added mpfr.setsign mpfr.signbit, mpfr.copysign
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 82 ++++++++++++++++++++++++++++++++++-
+ modules/mpfr/seed-mpfr.c | 3 +
+ modules/mpfr/seed-mpfr.h | 3 +
+ 3 files changed, 87 insertions(+), 1 deletions(-)
+
+commit e4db8303b02e73cd9ecf9e551866e53d92f71801
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 20:22:48 2009 -0400
+
+ [mpfr] Add mpfr.can_round and other fixes
+
+ modules/mpfr/seed-mpfr.c | 33 +++++++++++++++++++++++++++++----
+ 1 files changed, 29 insertions(+), 4 deletions(-)
+
+commit dd843896e1a3ba40e61790121fe8613d984034e8
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 20:01:37 2009 -0400
+
+ [mpfr] get/set default rounding mode
+
+ modules/mpfr/seed-mpfr.c | 24 ++++++++++++++++++++++++
+ 1 files changed, 24 insertions(+), 0 deletions(-)
+
+commit bda517ed18032de986345e84a7b500af8fde0d97
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 19:51:13 2009 -0400
+
+ [mpfr] Added mpfr.prec_round
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 23 +++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 ++
+ 3 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 8de7ca10090920cd681563b89ad52c9753a11395
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 19:40:02 2009 -0400
+
+ [mpfr] Added mpfr.min, mpfr.max
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 64 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 2 +
+ modules/mpfr/seed-mpfr.h | 3 ++
+ 3 files changed, 69 insertions(+), 0 deletions(-)
+
+commit ceefddab9e23f237c3f25f4a79cd1a0fdc5556e1
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 19:28:31 2009 -0400
+
+ [mpfr] Added nexttoward, nextabove, nextbelow
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 61 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 3 ++
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 3 files changed, 68 insertions(+), 0 deletions(-)
+
+commit 013123ce3fc5d75c56070ea624e192609be6b7fe
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 19:07:25 2009 -0400
+
+ [mpfr] Fixed wrong function name in exception
+
+ modules/mpfr/seed-mpfr-trig.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b38405d41a87e45e9eebab79e4b701362ef5289a
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 19:06:28 2009 -0400
+
+ [mpfr] More rounding related functions
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 112 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 4 +
+ modules/mpfr/seed-mpfr.h | 5 ++
+ 3 files changed, 121 insertions(+), 0 deletions(-)
+
+commit 8606bdc33cab90824bb263a65c98cae041c91625
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 5 23:06:36 2009 -0400
+
+ [docs] Update contact docs to have Git repo and email addresses
+
+ doc/reference/contact.sgml | 11 +++++++++--
+ 1 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 4607806086a74b4caca92e96659ad03446247ba5
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 5 22:57:55 2009 -0400
+
+ [docs] Add contact information to docs
+
+ doc/reference/contact.sgml | 23 +++++++++++++++++++++++
+ doc/reference/seed-docs.sgml | 19 ++++++++-----------
+ libseed/seed-api.c | 12 ------------
+ libseed/seed-closure.h | 6 ------
+ libseed/seed-exceptions.h | 6 ------
+ libseed/seed-types.h | 12 ------------
+ 6 files changed, 31 insertions(+), 47 deletions(-)
+
+commit 3c2c736db83736b4cfe2f87d2eec5aae58ce83b8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sun Jul 5 22:45:03 2009 -0400
+
+ [docs] Add the rest of the sgml templates
+
+ doc/reference/tmpl/seed-closure.sgml | 10 ++
+ doc/reference/tmpl/seed-exception.sgml | 10 ++
+ doc/reference/tmpl/seed-main.sgml | 10 ++
+ doc/reference/tmpl/seed-main.sgml.sgml | 226 ++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/seed-object.sgml | 10 ++
+ doc/reference/tmpl/seed-string.sgml | 10 ++
+ doc/reference/tmpl/seed-value.sgml | 10 ++
+ 7 files changed, 286 insertions(+), 0 deletions(-)
+
+commit 4d07b99f9e26454a1f4fc553a8d401013c73fe9d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 19:29:43 2009 -0400
+
+ [docs] Move SeedContext section annotation to doc dir instead of header
+
+ Shortly, I will begin the (for me, anyway) final reorg of the documentation,
+ based on a bit of sketching on paper. It's going to involve splitting into
+ quite a few sections, and will end up looking much more like Gtk/Glib once
+ I'm done. After that, I'm planning on porting the tutorial.
+
+ .gitignore | 14 ++------------
+ doc/reference/tmpl/seed-context.sgml | 10 ++++++++++
+ libseed/seed-engine.h | 6 ------
+ 3 files changed, 12 insertions(+), 18 deletions(-)
+
+commit d31406898690806d151375ab0fffdabb05acdaa9
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 18:15:57 2009 -0400
+
+ More rounding functions
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 120 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 4 +
+ modules/mpfr/seed-mpfr.h | 5 ++
+ 3 files changed, 129 insertions(+), 0 deletions(-)
+
+commit 986c52b0841740882b3310088c8203ba38a54a9f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 18:08:40 2009 -0400
+
+ Added rounding functions
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 145 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 5 +
+ modules/mpfr/seed-mpfr.h | 6 ++
+ 3 files changed, 156 insertions(+), 0 deletions(-)
+
+commit 3a4d4d994fee72505bae0d969dd3ed8fb6a4b0e0
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 17:40:55 2009 -0400
+
+ Added mpfr.print as sort of fake printf
+
+ modules/mpfr/seed-mpfr.c | 26 ++++++++++++++++++++++++++
+ 1 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 74260aa0f5bcb9bd888c600bfb617f832dbdb96a
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 17:20:50 2009 -0400
+
+ [mpfr] Fixed various problems / cleaned up warnings
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 1 -
+ modules/mpfr/seed-mpfr.c | 6 ++----
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+
+commit 334cb9666eadda35d01e3cd0c6488b1e393687ca
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 17:15:55 2009 -0400
+
+ [mpfr] Added mpfr.dim
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 32 ++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit 51eb7abf52b250f4524e63b2f99b318455d5dbc5
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:58:50 2009 -0400
+
+ [mpfr] Added mpfr.abs and mpfr.neg
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 60 +++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 2 +
+ modules/mpfr/seed-mpfr.h | 3 ++
+ 3 files changed, 65 insertions(+), 0 deletions(-)
+
+commit f792cc58d87fa8e0efba1fad48a6527db4828fad
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:31:15 2009 -0400
+
+ [mpfr] Added mpfr.free_cache
+
+ modules/mpfr/seed-mpfr-trig.c | 12 ++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 ++
+ 3 files changed, 15 insertions(+), 0 deletions(-)
+
+commit c580721293d0da555710c7eac2172b3af011e9fa
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:26:52 2009 -0400
+
+ [mpfr] Added mpfr.hypot
+
+ modules/mpfr/seed-mpfr-trig.c | 32 ++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit f199c315b3f9742a028f0b0afc5c8ec1feb2e80e
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:21:47 2009 -0400
+
+ [mpfr] Added mpfr.agm
+
+ modules/mpfr/seed-mpfr-trig.c | 32 ++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit 7f4db360a4cf9166b9a48e80cc6f796d7dc86bc5
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:19:33 2009 -0400
+
+ [mpfr] Added mpfr.fma and mpfr.fms
+
+ modules/mpfr/seed-mpfr-trig.c | 68 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 2 +
+ modules/mpfr/seed-mpfr.h | 3 ++
+ 3 files changed, 73 insertions(+), 0 deletions(-)
+
+commit 71e62c1cc04edff826e8dda6a146a5a5454af889
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 16:12:44 2009 -0400
+
+ [mpfr] Added bessel functions
+
+ modules/mpfr/seed-mpfr-trig.c | 199 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 6 ++
+ modules/mpfr/seed-mpfr.h | 7 ++
+ 3 files changed, 212 insertions(+), 0 deletions(-)
+
+commit 49d206c70cacc50106dff7696dcf22ef910bde8c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 16:29:30 2009 -0400
+
+ [build] Turn -Wall on globally (was just in libseed)
+
+ configure.ac | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit f74d61a0bf6db72110def769da3eca2217062e2d
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 12:28:29 2009 -0400
+
+ [mpfr] Added various special functions
+
+ modules/mpfr/seed-mpfr-trig.c | 240 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 8 ++
+ modules/mpfr/seed-mpfr.h | 10 ++
+ 3 files changed, 258 insertions(+), 0 deletions(-)
+
+commit f1b1b0747ac4ac190bb004f9df448c5bf90c7469
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 12:19:12 2009 -0400
+
+ [mpfr] Added various comparison functions
+
+ modules/mpfr/seed-mpfr-cmp.c | 188 ++++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 7 ++
+ modules/mpfr/seed-mpfr.h | 7 ++
+ 3 files changed, 202 insertions(+), 0 deletions(-)
+
+commit 5776376b8879038f7f18f5fd5e76b320349772b0
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 12:08:03 2009 -0400
+
+ [mpfr] Added mpfr.greater_p
+
+ modules/mpfr/seed-mpfr-cmp.c | 28 ++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 ++
+ 3 files changed, 31 insertions(+), 0 deletions(-)
+
+commit cb57e058f41fb89052f94cb98a2eb15999117a70
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 12:04:13 2009 -0400
+
+ [mpfr] Added mpfr.nan_p, inf_p, number_p, zero_p
+
+ modules/mpfr/seed-mpfr-cmp.c | 80 ++++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 4 ++
+ modules/mpfr/seed-mpfr.h | 5 +++
+ 3 files changed, 89 insertions(+), 0 deletions(-)
+
+commit 57bcef156892fd17be9aacc30d7cfea749610215
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:58:56 2009 -0400
+
+ [mpfr] Added mfpr.cmpabs
+
+ modules/mpfr/seed-mpfr-cmp.c | 28 ++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 30 insertions(+), 0 deletions(-)
+
+commit f0ab9ba15066f982e524b3a5954cb077ec336dff
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:57:20 2009 -0400
+
+ [mpfr] Added mpfr.cmp, and new file for comparsion functions
+
+ modules/mpfr/Makefile.am | 3 ++-
+ modules/mpfr/seed-mpfr-cmp.c | 32 ++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 ++
+ 4 files changed, 37 insertions(+), 1 deletions(-)
+
+commit 76def6eb1a80f10763bd43cf080144976bb6a4ee
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:51:07 2009 -0400
+
+ [mpfr] Added mpfr.cbrt
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 30 ++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 32 insertions(+), 0 deletions(-)
+
+commit 333c71453eb3a68a0d56f0160c82d057cc3e6ab2
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:49:29 2009 -0400
+
+ [mpfr] Added mpfr.rec_sqrt
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 30 ++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 1 +
+ 3 files changed, 32 insertions(+), 0 deletions(-)
+
+commit d7784d2347a8437774e2ecd87a5f18c2539e4f35
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:35:42 2009 -0400
+
+ [mpfr] Added mpfr.sqrt
+
+ modules/mpfr/seed-mpfr-arithmetic.c | 31 +++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 1 +
+ modules/mpfr/seed-mpfr.h | 2 ++
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit 2fb758ce6ba25b6d3cac349b27464bcec8a692dc
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:32:22 2009 -0400
+
+ [mpfr] mpfr fits functions
+
+ modules/mpfr/seed-mpfr.c | 184 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 184 insertions(+), 0 deletions(-)
+
+commit 2136e91a86b33044ad7b09bae738398be3eda49e
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:21:37 2009 -0400
+
+ [mpfr] Added mpfr.get_d
+
+ modules/mpfr/seed-mpfr.c | 23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+commit 55369c5f50d41093d05d04f657491c8df1ac0cdc
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:17:36 2009 -0400
+
+ [mpfr] Added mpfr.swap
+
+ modules/mpfr/seed-mpfr.c | 27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit 3ccb5d97b96d995ea7248ad0de2919f100a1ff01
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:13:51 2009 -0400
+
+ [mpfr] Added mpfr.set_nan
+
+ modules/mpfr/seed-mpfr.c | 16 ++++++++++++++++
+ 1 files changed, 16 insertions(+), 0 deletions(-)
+
+commit b2e3858551476c5cc4142d0dfbc514efac017131
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 11:12:13 2009 -0400
+
+ [mpfr] Added mpfr.set_inf
+
+ modules/mpfr/seed-mpfr.c | 33 +++++++++++++++++++++++++++++++++
+ 1 files changed, 33 insertions(+), 0 deletions(-)
+
+commit ee44ad8fc38e04d2302340304a25d497359fa7aa
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:45:50 2009 -0400
+
+ [mpfr] Added asinh, acosh, atanh
+
+ modules/mpfr/seed-mpfr-trig.c | 92 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 3 +
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 3 files changed, 99 insertions(+), 0 deletions(-)
+
+commit a4d7e13b1fa4ccbd9e0396222c9a98ddadfcb933
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:39:46 2009 -0400
+
+ [mpfr] Added sech, csch, coth
+
+ modules/mpfr/seed-mpfr-trig.c | 91 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 3 +
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 3 files changed, 98 insertions(+), 0 deletions(-)
+
+commit 0db0b75a50f935f3472890b59583bc93b4dafcef
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:34:07 2009 -0400
+
+ [mpfr] Implement sinh, cosh, tanh
+
+ modules/mpfr/seed-mpfr-trig.c | 92 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 3 +
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 3 files changed, 99 insertions(+), 0 deletions(-)
+
+commit 1acdc8bb40cf8270de9c641c6b4575a13cc9d3cf
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:20:45 2009 -0400
+
+ [mpfr] log functions
+
+ modules/mpfr/seed-mpfr-trig.c | 93 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.c | 3 +
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 3 files changed, 100 insertions(+), 0 deletions(-)
+
+commit e0ed90d2a8b5f5720ce56926c4bb6591a97e3227
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:15:18 2009 -0400
+
+ [mpfr] Forgot to add functions from last commit to function list
+
+ modules/mpfr/seed-mpfr.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 24882acbee597b5bd129d3dfebb5c733bc7217c1
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:12:06 2009 -0400
+
+ [mpfr] Implement inverse trig functions
+
+ modules/mpfr/seed-mpfr-trig.c | 91 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 2 files changed, 95 insertions(+), 0 deletions(-)
+
+commit f93379064725ad720b03e14b1b409edd2a5d6ddb
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 02:05:47 2009 -0400
+
+ [mpfr] Implement csc, sec, cot
+
+ modules/mpfr/seed-mpfr-trig.c | 90 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.h | 4 ++
+ 2 files changed, 94 insertions(+), 0 deletions(-)
+
+commit 7b1baa89cea536db733ca949099881bd759a909e
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 01:48:44 2009 -0400
+
+ [mpfr] Added mpfr.cos and mpfr.tan
+
+ modules/mpfr/seed-mpfr-trig.c | 59 +++++++++++++++++++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr.h | 2 +
+ 2 files changed, 61 insertions(+), 0 deletions(-)
+
+commit a7ccaea5d7e2ae5715be36d9705c487740933361
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 01:43:12 2009 -0400
+
+ [mpfr] More fixes to the mpfr multi-file build.
+
+ modules/mpfr/seed-mpfr.c | 48 +--------------------------------------------
+ modules/mpfr/seed-mpfr.h | 47 +++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 49 insertions(+), 46 deletions(-)
+
+commit f3a901a607d1b52813e893b9022a29d1d94eca51
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 01:36:40 2009 -0400
+
+ [mpfr] Add continuation chars to makefile so we actually build all source files
+
+ modules/mpfr/Makefile.am | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 1b4d49cbf1b05997cd7fe468c06cf78a2a90af43
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 01:52:28 2009 -0400
+
+ [modules] Change wording of argument count check
+
+ modules/seed-module.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0a6091a19d52f12cddd41653441b121d534b1eca
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 01:49:27 2009 -0400
+
+ [modules] No more pluralization of argument count, no more asprintf
+
+ modules/seed-module.h | 12 +++---------
+ 1 files changed, 3 insertions(+), 9 deletions(-)
+
+commit f246677a0e84531f83cc6b5c7a05954901bbc156
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 01:17:55 2009 -0400
+
+ [mpfr] Add seed-mpfr.h to extra-dist
+
+ modules/mpfr/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit d7d77a8110245c8a083b4ab3169f2515ab989113
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sun Jul 5 01:12:03 2009 -0400
+
+ [mpfr] Split up mpfr module into multiple files
+
+ modules/mpfr/Makefile.am | 2 +
+ modules/mpfr/seed-mpfr-arithmetic.c | 66 ++++++++++++++++++++++++
+ modules/mpfr/seed-mpfr-trig.c | 36 +++++++++++++
+ modules/mpfr/seed-mpfr.c | 96 +----------------------------------
+ modules/mpfr/seed-mpfr.h | 14 +++++
+ 5 files changed, 120 insertions(+), 94 deletions(-)
+
+commit 12925f69b95dee3b4f62922df9b4a54aa3b43aec
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jul 5 01:14:39 2009 -0400
+
+ [build] Remove INSTALL.osx from extra_dist.
+
+ Makefile.am | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 0cf7425ca1cb58f72635b79470de2fbcf737d62a
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 23:39:34 2009 -0400
+
+ [docs] Update doc index. Should work in-tree, not on the web (Robb: fix structure on server)
+
+ doc/index.html | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit f6fda2bf1b40acc32b2f3a2857eb4102cdb775c4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 23:33:51 2009 -0400
+
+ [docs] Move INSTALL.osx to docs
+
+ INSTALL.osx | 38 ---------------------
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/building-osx.sgml | 70 +++++++++++++++++++++++++++++++++++++++
+ doc/reference/seed-docs.sgml | 1 +
+ 4 files changed, 72 insertions(+), 39 deletions(-)
+
+commit c9a940dc0c6fa65ea5364ade09389b109fd462ca
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 23:17:00 2009 -0400
+
+ [docs] Forgot introduction file in last commit.
+
+ doc/reference/introduction.sgml | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 22775e447fef732fb5af5165b3a2fea556e2666f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 23:16:18 2009 -0400
+
+ [docs] Add introduction (from README)
+
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/seed-docs.sgml | 1 +
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 3aa18d4aade45c19d1a554f15ceefa8915b8b445
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 23:12:37 2009 -0400
+
+ [docs] Add building seed documentation (borrowed from glib)
+
+ doc/reference/building.sgml | 294 ++++++++++++++++++++++++++++++++++++++++++
+ doc/reference/seed-docs.sgml | 2 +-
+ 2 files changed, 295 insertions(+), 1 deletions(-)
+
+commit 5d47a099bb6c15efbf01187954dbecadd7d60c82
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 21:55:52 2009 -0400
+
+ [docs] Reorganize index to be more like Gtk
+
+ doc/reference/seed-docs.sgml | 45 +++++++++++++++++++++--------------------
+ libseed/seed-api.c | 12 +++++++++++
+ libseed/seed-closure.h | 6 +++++
+ libseed/seed-engine.h | 6 +++++
+ libseed/seed-exceptions.h | 2 +-
+ libseed/seed-types.h | 4 +-
+ 6 files changed, 50 insertions(+), 25 deletions(-)
+
+commit 815831645b9a9785345d340a3f5ba84b3a01b3a1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 20:57:59 2009 -0400
+
+ Add afp temporary files to gitignore
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 0fb0f93f63698a503df033b9bb5f1d993976815e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 17:11:23 2009 -0400
+
+ [multiprocessing] For some reason, this is the only capitalized module. No longer.
+
+ configure.ac | 2 +-
+ examples/gtkplug.js | 4 +-
+ modules/Makefile.am | 2 +-
+ modules/Multiprocessing/Makefile.am | 26 ---
+ modules/Multiprocessing/bi.js | 28 ----
+ modules/Multiprocessing/fork.js | 42 -----
+ modules/Multiprocessing/seed-Multiprocessing.c | 193 ------------------------
+ modules/multiprocessing/Makefile.am | 26 +++
+ modules/multiprocessing/bi.js | 28 ++++
+ modules/multiprocessing/fork.js | 42 +++++
+ modules/multiprocessing/seed-multiprocessing.c | 193 ++++++++++++++++++++++++
+ 11 files changed, 293 insertions(+), 293 deletions(-)
+
+commit a927140a4161bfb55f70744621af529945be99ee
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 17:07:36 2009 -0400
+
+ [multiprocessing] Update examples to new imports system (!)
+
+ modules/Multiprocessing/bi.js | 10 ++++++----
+ modules/Multiprocessing/fork.js | 14 ++++++++------
+ modules/Multiprocessing/seed-Multiprocessing.c | 16 +++++++++++-----
+ 3 files changed, 25 insertions(+), 15 deletions(-)
+
+commit 91c4679c6f9a81f12c8d6e7d352533bc4fcce69f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 17:00:24 2009 -0400
+
+ [gtkbuilder] Port to seed-module.h (not much to do)
+
+ modules/gtkbuilder/seed-gtkbuilder.c | 12 ++++++++----
+ modules/seed-module.h | 2 +-
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+commit 0fc6c3c40112bc3f58d0f3c1b936c849b59719ce
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 16:44:38 2009 -0400
+
+ [calculator-mpfr] Stole prefix parser from ease to make a calculator for Matt to fill in with mpfr functions
+
+ examples/calculator-mpfr.js | 142 +++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 142 insertions(+), 0 deletions(-)
+
+commit 8041f4719aed21ebc1066bc95cd86b601eaaf2e3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 16:13:30 2009 -0400
+
+ [modules] Prefix all module .sos with seed_ (libseed_readline.so)
+
+ This cuts down on confusion and ambiguous library names, and fixes the
+ need-to-clean-every-time issue with mpfr and readline.
+
+ However, if you currently have a seed checkout, you need to remove the
+ .libs directory from modules/[readline,mpfr] before the problem will be solved.
+
+ libseed/seed-importer.c | 2 +-
+ modules/Multiprocessing/Makefile.am | 8 ++++----
+ modules/cairo/Makefile.am | 8 ++++----
+ modules/canvas/Makefile.am | 8 ++++----
+ modules/dbus/Makefile.am | 8 ++++----
+ modules/example/Makefile.am | 6 +++---
+ modules/gettext/Makefile.am | 6 +++---
+ modules/gtkbuilder/Makefile.am | 6 +++---
+ modules/libxml/Makefile.am | 6 +++---
+ modules/mpfr/Makefile.am | 8 ++++----
+ modules/os/Makefile.am | 8 ++++----
+ modules/readline/Makefile.am | 10 +++++-----
+ modules/sandbox/Makefile.am | 6 +++---
+ modules/sqlite/Makefile.am | 8 ++++----
+ 14 files changed, 49 insertions(+), 49 deletions(-)
+
+commit 0b7fba5a148898e7fbd22044ebfe4af5d65a31b6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 04:16:58 2009 -0400
+
+ [modules] Standardize on seed-{modulename}.c for all except DBUS (for now)
+
+ modules/Multiprocessing/Makefile.am | 2 +-
+ modules/Multiprocessing/multi.c | 187 ----
+ modules/Multiprocessing/seed-Multiprocessing.c | 187 ++++
+ modules/example/Makefile.am | 2 +-
+ modules/example/example.c | 8 -
+ modules/example/seed-example.c | 8 +
+ modules/gettext/Makefile.am | 2 +-
+ modules/gettext/gettext.c | 303 -------
+ modules/gettext/seed-gettext.c | 303 +++++++
+ modules/gtkbuilder/Makefile.am | 2 +-
+ modules/gtkbuilder/gtkbuilder.c | 82 --
+ modules/gtkbuilder/seed-gtkbuilder.c | 82 ++
+ modules/libxml/Makefile.am | 2 +-
+ modules/libxml/libxml.c | 561 ------------
+ modules/libxml/seed-libxml.c | 561 ++++++++++++
+ modules/mpfr/Makefile.am | 2 +-
+ modules/mpfr/mpfr.c | 534 ------------
+ modules/mpfr/seed-mpfr.c | 534 ++++++++++++
+ modules/os/Makefile.am | 2 +-
+ modules/os/os.c | 1094 ------------------------
+ modules/os/seed-os.c | 1094 ++++++++++++++++++++++++
+ modules/sandbox/Makefile.am | 2 +-
+ modules/sandbox/sandbox.c | 117 ---
+ modules/sandbox/seed-sandbox.c | 117 +++
+ modules/seed-module.h | 2 +-
+ 25 files changed, 2895 insertions(+), 2895 deletions(-)
+
+commit 3d0ff0b3dc72cdcb0a3017fe300d3f5d2889c6ed
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 04:09:40 2009 -0400
+
+ [readline] Port readline module to seed-module.h
+
+ modules/readline/Makefile.am | 2 +-
+ modules/readline/seed-readline.c | 85 +++++++++++++------------------------
+ 2 files changed, 31 insertions(+), 56 deletions(-)
+
+commit aa01ea84d8ba93a2a7e8128909b947289a74a717
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 04:03:50 2009 -0400
+
+ [gettext] Forgot to put static functions on gettext ns
+
+ modules/gettext/gettext.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit eaf23273742a500e58edb47f2fa88d38d3f150f1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:57:14 2009 -0400
+
+ [modules] Include /modules in all modules so they can eventually find the header
+
+ modules/Multiprocessing/Makefile.am | 1 +
+ modules/cairo/Makefile.am | 1 +
+ modules/canvas/Makefile.am | 1 +
+ modules/dbus/Makefile.am | 1 +
+ modules/example/Makefile.am | 1 +
+ modules/gtkbuilder/Makefile.am | 1 +
+ modules/libxml/Makefile.am | 1 +
+ modules/os/Makefile.am | 1 +
+ modules/sandbox/Makefile.am | 1 +
+ modules/sqlite/Makefile.am | 1 +
+ 10 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 2fcc8a61cee0ae09d505bab260990db7a67493df
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:52:42 2009 -0400
+
+ [mpfr] Port mpfr module to seed-module.h
+
+ modules/mpfr/Makefile.am | 1 +
+ modules/mpfr/mpfr.c | 213 ++++++++++++++++++++--------------------------
+ modules/seed-module.h | 6 +-
+ 3 files changed, 100 insertions(+), 120 deletions(-)
+
+commit db8549329d691bde6e54f45eaf1c905bdda7a289
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:39:27 2009 -0400
+
+ [gettext] Use static class functions to cleanup init
+
+ modules/gettext/gettext.c | 91 +++++++++++++++++---------------------------
+ 1 files changed, 35 insertions(+), 56 deletions(-)
+
+commit 4a89fc578ed73092ec4c901374ec1a95a42dccb2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:33:26 2009 -0400
+
+ [modules] Split DEFINE_ENUM_MEMBER into two parts, one which uses the enum member's C name, and one which enables the user to override the name
+
+ modules/gettext/gettext.c | 28 ++++++++++++++--------------
+ modules/seed-module.h | 7 ++++++-
+ 2 files changed, 20 insertions(+), 15 deletions(-)
+
+commit 04c61a9c60158908c3275c43674b9ad8b450cf0f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:29:18 2009 -0400
+
+ [gettext] Port gettext to DEFINE_ENUM_MEMBER
+
+ modules/gettext/gettext.c | 41 +++++++++++++++--------------------------
+ 1 files changed, 15 insertions(+), 26 deletions(-)
+
+commit 15e99ed21d8833d0663062ae137eb59d5fb2bd3c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:28:55 2009 -0400
+
+ [modules] DEFINE_ENUM_MEMBER macro
+
+ modules/seed-module.h | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 4b6e53ca0ad55681acdf462eeed3596fac9785a6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:17:55 2009 -0400
+
+ [gettext] Port gettext to new CHECK_ARG_COUNT macro
+
+ modules/gettext/Makefile.am | 1 +
+ modules/gettext/gettext.c | 83 ++++++------------------------------------
+ 2 files changed, 13 insertions(+), 71 deletions(-)
+
+commit 614ae012babc0da5dd7d6d0474e7f9ea5d9adbec
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 03:13:30 2009 -0400
+
+ [modules] Begin seed-modules.h, filled with argument-checking macros, etc
+
+ modules/Makefile.am | 2 ++
+ modules/seed-module.h | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 0 deletions(-)
+
+commit 726d1085ef332f1458b3bc7c727c24b0fc92da8b
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 02:40:43 2009 -0400
+
+ [mpfr] mpfr set/get exp
+
+ modules/mpfr/mpfr.c | 26 ++++++++++++++++++++++++++
+ 1 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 7f2b9694fbbe839824ad07f509f714928b4b792f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 02:29:23 2009 -0400
+
+ [mpfr] Added other mpfr constants
+
+ modules/mpfr/mpfr.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 52 insertions(+), 0 deletions(-)
+
+commit 6446deb35db7171957ade662337a8b01868d7e1b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 02:32:57 2009 -0400
+
+ [docs] Add the three new seed_value functions to the reference
+
+ doc/reference/seed-sections.txt | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 9a62819429d9ddf95bf06b95f19c9a1afead556e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat Jul 4 02:23:28 2009 -0400
+
+ [tests] We don't care what the modules test outputs (except to stderr)
+
+ tests/javascript/modules.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5efda6a612269a871c0db17974e3fc8da03ccc11
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 02:11:51 2009 -0400
+
+ [mpfr] Added mpfr.pi
+
+ modules/mpfr/mpfr.c | 25 +++++++++++++++++++++++++
+ 1 files changed, 25 insertions(+), 0 deletions(-)
+
+commit d672ce7bf680c9831939a2db767df2dc5f62dc70
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 02:03:32 2009 -0400
+
+ [mpfr] Added mpfr enums and constants
+
+ modules/mpfr/mpfr.c | 27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit e501b043ee8a9133f577e21f46a40a597fec0109
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 01:45:27 2009 -0400
+
+ [mpfr] Minor type consistency change (size_t -> gsize)
+
+ modules/mpfr/mpfr.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 008d509824ea2b6c92b4a4821b1e679b1debb33f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 01:43:21 2009 -0400
+
+ [mpfr] Fixed mistakes in use of macro
+
+ modules/mpfr/mpfr.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit dfce47fb03b2d3d619509d82bec1871eba93c2c2
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 01:30:26 2009 -0400
+
+ [mpfr] Fixed missing type in seed_mpfr_arg_type
+
+ modules/mpfr/mpfr.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit d9b222410e9c4d122c9d31dcbcc7b11e90cb29dd
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 01:28:50 2009 -0400
+
+ [mpfr] Switched to using macro madness for exceptions
+
+ modules/mpfr/mpfr.c | 147 ++++++++++++++++++++-------------------------------
+ 1 files changed, 58 insertions(+), 89 deletions(-)
+
+commit 67a2c92cae81778de056edc01a78be7b002a359b
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 00:56:29 2009 -0400
+
+ [mpfr] Renamed class "mpfr" to "mpfr_t"
+
+ modules/mpfr/mpfr.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 286e3a9905c09a8d24da65b1bda437189a8dc55a
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 00:54:02 2009 -0400
+
+ [mpfr] Added mpfr.sin
+
+ modules/mpfr/mpfr.c | 41 +++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 41 insertions(+), 0 deletions(-)
+
+commit b55b77184e5aa920e782d39e0aa24018c948ee76
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 00:38:30 2009 -0400
+
+ [mpfr] Redid mpfr with set constructor to be better. Don't use the init with set functions as they always use default precision
+
+ modules/mpfr/mpfr.c | 90 ++++++++++++++++++++++++++------------------------
+ 1 files changed, 47 insertions(+), 43 deletions(-)
+
+commit 17e76fbdcb249c64d28b5c2e68bc9066b365eb21
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Sat Jul 4 00:16:01 2009 -0400
+
+ [mpfr] Added mpfr.set function
+
+ modules/mpfr/mpfr.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 55 insertions(+), 1 deletions(-)
+
+commit 7812a6eededd99df9e24e1937178be563a56e71d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 3 22:14:37 2009 -0400
+
+ Add module test to check for undefined symbols and assist the coverage tool
+
+ tests/javascript/modules.js | 29 +++++++++++++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
+
+commit 74de3a26e0e75dc8146b25d1bc7ef5bab092df85
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 3 22:08:44 2009 -0400
+
+ Fix profiling for modules
+
+ Makefile.am | 18 +++++++++++++-----
+ configure.ac | 35 ++++++++++++++++++++---------------
+ 2 files changed, 33 insertions(+), 20 deletions(-)
+
+commit 059d45c14ac1fe078d1935697e02435eb30a5883
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 3 21:39:52 2009 -0400
+
+ Add profiling output to gitignore
+
+ .gitignore | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 887666a521731cb820439a4821e946fcef3b4005
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 3 21:38:50 2009 -0400
+
+ [libseed] Repair bizarre indentation in Makefile
+
+ Makefile.am | 2 +-
+ libseed/Makefile.am | 20 ++++++++++----------
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+commit 62c77eb8d4dddc043cf584a2083539f63d3e83fa
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jul 3 21:32:08 2009 -0400
+
+ [gettext] On some systems, we need to explicitly include locale.h to get the LC_* consts
+
+ modules/gettext/gettext.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 57018389d9926914c389e98facffffa8450a0a40
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 13:47:52 2009 -0400
+
+ [mpfr] Added mpfr.out_str()
+
+ modules/mpfr/mpfr.c | 42 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 41 insertions(+), 1 deletions(-)
+
+commit 83745245f8021add925b3a779cd630922297a2f6
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 13:14:49 2009 -0400
+
+ [mpfr] Redid mpfr_add. Not sure it should be done this way.
+
+ modules/mpfr/mpfr.c | 80 +++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 files changed, 72 insertions(+), 8 deletions(-)
+
+commit 50ebd8774fda73e4f90a7cd3708c41e1d8977ffc
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 11:12:01 2009 -0400
+
+ [mpfr] Removed seed_mpfr_init2 since real constructor replaces it.
+
+ modules/mpfr/mpfr.c | 28 ----------------------------
+ 1 files changed, 0 insertions(+), 28 deletions(-)
+
+commit 35bbf203bcc3bff37aa9c4ff8576837f788b70fc
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jul 3 04:42:19 2009 -0400
+
+ Revert "[modules] Change *order* of link arguments by moving to AM_LDFLAGS"
+
+ This reverts commit 99ed7947d9b96333b93e628cf56da2cf29445a01.
+
+ We *still* have this problem.
+
+ modules/mpfr/Makefile.am | 2 +-
+ modules/readline/Makefile.am | 3 +--
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit a52f17f0a9d4b5bc6dcd2bb97218a5e4e323dcc9
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 02:32:28 2009 -0400
+
+ [mpfr] Minor fixes to mpfr module
+
+ modules/mpfr/mpfr.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 46d3d35ab601f6ceede89cca519aba012e1b6dfd
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 02:11:12 2009 -0400
+
+ [mpfr] Added attempts at constructors for mpfr types
+
+ modules/mpfr/mpfr.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 133 insertions(+), 3 deletions(-)
+
+commit 7acd9008ae3d901d02a3d745ed52c8a0d0761035
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 00:52:02 2009 -0400
+
+ [libseed] Added seed_value_is_object_of_class()
+
+ libseed/seed-api.c | 15 +++++++++++++++
+ libseed/seed.h | 1 +
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 1c2eb6bd0f55aa47594387fad35791da96b1f287
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Fri Jul 3 00:25:00 2009 -0400
+
+ [libseed] Added seed_value_is_string() and seed_value_is_number()
+
+ libseed/seed-api.c | 28 ++++++++++++++++++++++++++++
+ libseed/seed.h | 2 ++
+ 2 files changed, 30 insertions(+), 0 deletions(-)
+
+commit d153da7ca50fb5ddccc34e9da135fababbb80d99
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 22:11:26 2009 -0400
+
+ [mpfr] Renamed set and get precision to prec to be consistent with mpfr
+
+ modules/mpfr/mpfr.c | 20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 99ed7947d9b96333b93e628cf56da2cf29445a01
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 23:38:17 2009 -0400
+
+ [modules] Change *order* of link arguments by moving to AM_LDFLAGS
+
+ This fixes the eternal forced cleaning when readline (and now mpfr)
+ fail to build because their seed modules are named the same thing
+ as the libraries (and because we're not using pkg-config to find the
+ libraries).
+
+ modules/mpfr/Makefile.am | 2 +-
+ modules/readline/Makefile.am | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit fc5e7a3ba5709a68db75ee269a4fc95d994b1554
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 20:09:55 2009 -0400
+
+ [mpfr] Changes to the mpfr_module to make more sense
+
+ modules/mpfr/Makefile.am | 2 +
+ modules/mpfr/mpfr.c | 96 +++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 79 insertions(+), 19 deletions(-)
+
+commit d3a75783ac03281c8408cd1f9037a86127f1e891
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 17:08:10 2009 -0400
+
+ [mpfr] Added test mpfr_add binding. Fixed backwards from/to seed type functions
+
+ modules/mpfr/mpfr.c | 37 ++++++++++++++++++++++++++++++++++---
+ 1 files changed, 34 insertions(+), 3 deletions(-)
+
+commit 0c0f41d84d2ea976e51d6f135253f4f9ec43121c
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 16:14:59 2009 -0400
+
+ [mpfr] Finish integrating mpfr module into build system
+
+ configure.ac | 3 +--
+ modules/mpfr/Makefile.am | 2 +-
+ modules/mpfr/mpfr.c | 10 +++-------
+ 3 files changed, 5 insertions(+), 10 deletions(-)
+
+commit a0616eb8785cd07a33c20ab587b5466846f3e43d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 15:58:26 2009 -0400
+
+ [build] Stylistic updates and bug-fixes to module makefiles
+
+ modules/Multiprocessing/Makefile.am | 6 +++---
+ modules/cairo/Makefile.am | 4 ++--
+ modules/canvas/Makefile.am | 4 ++--
+ modules/example/Makefile.am | 2 +-
+ modules/gettext/Makefile.am | 2 +-
+ modules/libxml/Makefile.am | 2 +-
+ modules/os/Makefile.am | 10 +++++-----
+ modules/sandbox/Makefile.am | 2 +-
+ modules/sqlite/Makefile.am | 12 ++++++------
+ 9 files changed, 22 insertions(+), 22 deletions(-)
+
+commit 675321d80b0d710b3747de47ae7be573e420da97
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 12:29:35 2009 -0400
+
+ [mpfr] Start of mpfr module
+
+ configure.ac | 42 ++++++++++++++++++++++++++++++++
+ modules/Makefile.am | 2 +-
+ modules/mpfr/Makefile.am | 24 ++++++++++++++++++
+ modules/mpfr/mpfr.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 127 insertions(+), 1 deletions(-)
+
+commit 70a5a5339e0282e6d93f1285e25fd1749e730f26
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 11:57:54 2009 -0400
+
+ [libseed] Added to/from type functions for short/ushort
+
+ libseed/seed-types.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 85 insertions(+), 1 deletions(-)
+
+commit 2946295d9e5fd7e1f200c04897a6341a129731e6
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 11:05:50 2009 -0400
+
+ [gettext] Various bits of code cleanup
+
+ modules/gettext/gettext.c | 84 ++++++++++++++++++++++----------------------
+ 1 files changed, 42 insertions(+), 42 deletions(-)
+
+commit 6322cd3f3767d3c1c2a40ff7f1e288978d9f6e50
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 11:01:58 2009 -0400
+
+ [gettext] Added the enums from setlocale
+
+ It's not clear these belong here, as they're not strictly part of
+ gettext (they're in the stdclib), but that's where they logically
+ fit for the time being.
+
+ modules/gettext/gettext.c | 28 ++++++++++++++++++++++++++++
+ 1 files changed, 28 insertions(+), 0 deletions(-)
+
+commit 2a96d5fc390899e4bad0401fa6aed4c30938ad44
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 2 05:07:38 2009 -0400
+
+ [clutter-pad] Update spring example to recent Clutter API changes
+
+ examples/clutter-pad/examples/spring.js | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit f6dd1bc8902254444c4a9e0a5729f043bf26dca8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 2 04:55:28 2009 -0400
+
+ [gettext] Matt made up some functions, and build failed to warn about them (?)
+
+ modules/gettext/gettext.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 9bf91d0ebefa62815aa116f821610539c6eb4b61
+Author: Tim Horton <hortont424@gmail.com>
+Date: Thu Jul 2 04:50:35 2009 -0400
+
+ [tests] Update everything.js to match g-i changes
+
+ tests/javascript/everything.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 462e6de4a157adb27d319b8c95ed141945c2f64e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 04:16:19 2009 -0400
+
+ [build] Matt lost some quotes in make-functions.js earlier
+
+ doc/modules/make-functions.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6603afe7d8ea933484e5b15dd4f5cba677ac2804
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 04:11:24 2009 -0400
+
+ [build] Distribute Seed extension script as Seed.js.in
+
+ extensions/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3683483d9a9b0cc0d909926361a52fa757128ce1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 03:20:49 2009 -0400
+
+ Add all sorts of stuff to .gitignore
+
+ .gitignore | 34 +++++++++++++++++++++++++++++++++-
+ 1 files changed, 33 insertions(+), 1 deletions(-)
+
+commit 9d1f826b05856ca8e3f7a3b9e7d4883a3d059502
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 02:57:02 2009 -0400
+
+ [gettext] Fix up various indentation problems in gettext module
+
+ modules/gettext/gettext.c | 161 +++++++++++++++++++++++----------------------
+ 1 files changed, 82 insertions(+), 79 deletions(-)
+
+commit e01e9cdfd6fe51b4631b653de0ad278eb367e78e
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Thu Jul 2 02:42:33 2009 -0400
+
+ [gettext] Bind the remainder of the gettext functions
+
+ modules/gettext/gettext.c | 312 ++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 297 insertions(+), 15 deletions(-)
+
+commit a18b603ca8c82e0d4da7e9c7037f4d8fba4f249f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jul 2 00:32:14 2009 -0400
+
+ [gettext] Add textdomain binding, rename i18n->gettext for consistency
+
+ modules/gettext/gettext.c | 51 ++++++++++++++++++++++++++++++++++----------
+ 1 files changed, 39 insertions(+), 12 deletions(-)
+
+commit 37bb655d4baa753f863a819a67a4dd99f778515f
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 1 11:10:59 2009 -0400
+
+ [build] Use print instead of Seed.printf during doc build, as it doesn't depend on an installed version of seed
+
+ doc/modules/make-functions.js | 24 ++++++++++++------------
+ 1 files changed, 12 insertions(+), 12 deletions(-)
+
+commit b3a3479cfd299097371eb7c451e4d4303e0b3910
+Author: Matt ARSENAULT <arsenm2@rpi.edu>
+Date: Wed Jul 1 10:49:09 2009 -0400
+
+ Remove trailing whitespace all throughout examples/libseed, as it infuriates Git.
+
+ examples/HACKING | 4 +-
+ examples/actions.js | 4 +-
+ examples/async-quine.js | 4 +-
+ examples/cairo.js | 8 +-
+ examples/calculator.js | 2 +-
+ examples/clutter-0.9.js | 30 +-
+ examples/clutter-cogl-0.8.js | 30 +-
+ examples/clutter-cogl-0.9.js | 30 +-
+ examples/n-oscillator.js | 26 +-
+ examples/pango-fontset.js | 4 +-
+ examples/pango.js | 134 ++++----
+ libseed/seed-api.c | 80 +++---
+ libseed/seed-builtins.c | 99 ++++---
+ libseed/seed-builtins.h | 20 +-
+ libseed/seed-closure.c | 50 ++--
+ libseed/seed-closure.h | 22 +-
+ libseed/seed-debug.h | 20 +-
+ libseed/seed-engine.c | 82 +++---
+ libseed/seed-engine.h | 22 +-
+ libseed/seed-exceptions.c | 24 +-
+ libseed/seed-exceptions.h | 22 +-
+ libseed/seed-gtype.c | 106 +++---
+ libseed/seed-gtype.h | 20 +-
+ libseed/seed-importer.c | 256 +++++++-------
+ libseed/seed-private.h | 20 +-
+ libseed/seed-signals.c | 50 ++--
+ libseed/seed-signals.h | 22 +-
+ libseed/seed-structs.c | 18 +-
+ libseed/seed-structs.h | 20 +-
+ libseed/seed-types.c | 86 +++---
+ libseed/seed-types.h | 20 +-
+ libseed/seed.h | 38 +-
+ modules/Multiprocessing/bi.js | 2 +-
+ modules/Multiprocessing/fork.js | 4 +-
+ modules/Multiprocessing/multi.c | 2 +-
+ modules/cairo/seed-cairo-enums.c | 10 +-
+ modules/cairo/seed-cairo-image-surface.c | 18 +-
+ modules/cairo/seed-cairo-matrix.c | 88 +++---
+ modules/cairo/seed-cairo-matrix.h | 4 +-
+ modules/cairo/seed-cairo-pattern.c | 34 +-
+ modules/cairo/seed-cairo-pdf-surface.c | 24 +-
+ modules/cairo/seed-cairo-surface.c | 48 ++--
+ modules/cairo/seed-cairo.c | 358 ++++++++++----------
+ modules/canvas/seed-canvas.c | 72 ++--
+ modules/dbus/dbus-exports.c | 106 +++---
+ modules/dbus/dbus-values.c | 54 ++--
+ modules/dbus/module.c | 52 ++--
+ modules/gettext/gettext.c | 12 +-
+ modules/gtkbuilder/gtkbuilder.c | 14 +-
+ modules/libxml/libxml.c | 68 ++--
+ modules/os/os.c | 242 +++++++-------
+ modules/readline/seed-readline.c | 16 +-
+ modules/sandbox/sandbox.c | 30 +-
+ modules/sqlite/seed-sqlite.c | 4 +-
+ src/main.c | 4 +-
+ tests/c/api-types.c | 4 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/gdk-event.js | 2 +-
+ .../gtypes/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtypes/gtype-extraprop.js | 2 +-
+ tests/javascript/gtypes/gtype-self.js | 2 +-
+ tests/javascript/gtypes/gtype.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ tests/make-test.py | 2 +-
+ tests/run-tests.py | 10 +-
+ 67 files changed, 1347 insertions(+), 1326 deletions(-)
+
+commit 536c0bfa32413cbe323cb5c9d95bc98ea53d9c97
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jul 1 04:03:26 2009 -0400
+
+ [examples] Use implicitly created Clutter stage; fixes Clutter examples on platforms without multistage support
+
+ examples/clutter-0.8.js | 2 +-
+ examples/clutter-0.9.js | 2 +-
+ examples/clutter-cairo.js | 2 +-
+ examples/clutter-cogl-0.8.js | 2 +-
+ examples/clutter-cogl-0.9.js | 2 +-
+ examples/clutter-transitions/main.js | 2 +-
+ examples/opengl/triangle-actor.js | 2 +-
+ examples/pong/pong.js | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+commit d3002bd3e9809f25838f1fa1822afa1db70209c1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon Jun 29 03:25:57 2009 -0400
+
+ Remove various import_namespace calls that have been hanging around.
+
+ extensions/Seed.js.in | 6 +++---
+ tools/run-lint.js | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 36800fa11648026654c18ff9e38e023ad870967d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jun 26 17:31:44 2009 -0400
+
+ [libseed] When importing, search "." _last_
+
+ extensions/Seed.js.in | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit f4591162662e0671a92e240fbe2c283faa493c34
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jun 26 17:12:21 2009 -0400
+
+ [examples] Also forgot to remove same from Makefile.am. Apparently I've lost my mind...
+
+ examples/Makefile.am | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 4f7cacb99cd0b12ef1cf3f78f17ee3f3130dbda8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jun 26 17:09:07 2009 -0400
+
+ [examples] Forgot to remove same from configure.ac in last commit
+
+ configure.ac | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 39a587147b7835bc31309ee1215f8767fd80738d
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Jun 26 17:03:57 2009 -0400
+
+ [examples] Same Seed (now, for a time, same-gnome-clutter) now lives in
+ the gsoc-seed-games branch of gnome-games.
+
+ doc/index.html | 1 -
+ examples/HACKING | 5 +-
+ examples/same-seed/Makefile.am | 29 ----
+ examples/same-seed/bkg.svg | 95 -----------
+ examples/same-seed/blue.svg | 97 -----------
+ examples/same-seed/board.js | 338 ---------------------------------------
+ examples/same-seed/green.svg | 97 -----------
+ examples/same-seed/light.js | 122 --------------
+ examples/same-seed/main.js | 48 ------
+ examples/same-seed/red.svg | 97 -----------
+ examples/same-seed/same-seed.ui | 72 ---------
+ examples/same-seed/same.c | 296 ----------------------------------
+ examples/same-seed/score.js | 79 ---------
+ examples/same-seed/yellow.svg | 97 -----------
+ 14 files changed, 3 insertions(+), 1470 deletions(-)
+
+commit 950cccdefb33aef4b5ba2cfd928d7a0f0394d4d8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 24 18:13:17 2009 -0400
+
+ [gettext] Add a tiny gettext module that provides a binding to _()
+
+ This seems like a strange place for this to go, but I can't find
+ any other way to access gettext strings.
+
+ configure.ac | 10 ++++++++
+ modules/Makefile.am | 2 +-
+ modules/gettext/Makefile.am | 24 +++++++++++++++++++
+ modules/gettext/gettext.c | 52 +++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 87 insertions(+), 1 deletions(-)
+
+commit ca16639cc269e1075dcb485a5c33f87bc8ea5e12
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 24 02:12:01 2009 -0400
+
+ [patches] Clutter animatev patch and gobject-introspection patches landed upstream
+
+ patches/clutter-animatev-annotation.patch | 22 ----------------------
+ 1 files changed, 0 insertions(+), 22 deletions(-)
+
+commit 6acb6c0a7f4c1ad730bbe0c289b2dc586eec2ba3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue Jun 23 04:20:33 2009 -0400
+
+ [extensions] Include the path of the executed script in the default search path
+
+ extensions/Seed.js.in | 21 ++++++++++++++++++---
+ 1 files changed, 18 insertions(+), 3 deletions(-)
+
+commit 84c119ae565650740358b08dc8fe7d2c8faca837
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 19 22:55:51 2009 -0400
+
+ [build] Update to more recent shave
+
+ configure.ac | 2 +-
+ m4/shave.m4 | 118 +++++++++++++++++++++++++++++++++++-----------
+ scripts/shave-libtool.in | 46 +++++++++++++++++-
+ scripts/shave.in | 37 ++++++++++++++-
+ 4 files changed, 169 insertions(+), 34 deletions(-)
+
+commit e6728b422f97eae1b8154cee6bbfc55055b7013c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 19 22:40:01 2009 -0400
+
+ [dbus] Fix two small (stylistic) warnings in DBUS extension module
+
+ modules/dbus/dbus-exports.c | 2 +-
+ modules/dbus/util/dbus.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 823f39f8cde2fba97540826f73a95cd89324b79a
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 19 22:25:11 2009 -0400
+
+ [docs] Fix a large number of the GtkDoc warnings we get on build
+
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/seed-docs.sgml | 4 ++--
+ doc/reference/seed-sections.txt | 9 +++++++--
+ libseed/seed-exceptions.c | 2 +-
+ libseed/seed.h | 4 +++-
+ m4/libtool.m4 | 3 ---
+ 6 files changed, 14 insertions(+), 10 deletions(-)
+
+commit 551c9202b327267efb9f72e08e148faa85a06280
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 19 22:00:12 2009 -0400
+
+ [same-seed] Implement animation in C (testing) port
+
+ examples/same-seed/same.c | 75 ++++++++++++++++++++++++++++++++++++++++++---
+ 1 files changed, 70 insertions(+), 5 deletions(-)
+
+commit a0c3b943d2b8ccb7c07a45b3852d50e7329afc2c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jun 18 19:05:49 2009 -0400
+
+ Add patch to add "out" annotation to gtk_tree_model_get_value
+
+ patches/gir-repo-gtktreemodel-get-value.patch | 30 +++++++++++++++++++++++++
+ 1 files changed, 30 insertions(+), 0 deletions(-)
+
+commit 94a37cadc4d209948fef5d7799c1db31f8903687
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu Jun 18 02:52:18 2009 -0400
+
+ [same-seed] Preliminary C version, mostly for debugging purposes.
+
+ examples/same-seed/same.c | 231 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 231 insertions(+), 0 deletions(-)
+
+commit 7a908d8694450a56bffaea2dfc0b5389b3e6bb79
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Jun 15 21:03:18 2009 -0400
+
+ This patch landed upstream (in an expanded fashion).
+
+ patches/clutter-animatev-caching.patch | 90 --------------------------------
+ 1 files changed, 0 insertions(+), 90 deletions(-)
+
+commit a0298a4f36e7fd1799592fc436ba5c40361c17ed
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jun 14 14:21:33 2009 -0400
+
+ [same-seed] Update to recent Clutter changes
+
+ Something bizarre is still going on. In any case, this'll all get fixed soon,
+ as I'm almost to the point where I'm going to move this into the gnome-games
+ repository, and take a good hard look at the various bugs...
+
+ examples/same-seed/board.js | 5 +++--
+ examples/same-seed/light.js | 14 +++++++++-----
+ 2 files changed, 12 insertions(+), 7 deletions(-)
+
+commit 22ec7bb209d838b5bdd8a8742b7d83f9c0877167
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun Jun 14 13:54:42 2009 -0400
+
+ [clutter-cogl] Update 0.9 version of the example to match the fact that the COGL introspection data is now separate from that of Clutter
+
+ examples/clutter-cogl-0.9.js | 21 +++++++++++----------
+ 1 files changed, 11 insertions(+), 10 deletions(-)
+
+commit b951c6023bb2898dfddf877b8d0d61822ee94e76
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 12 18:43:34 2009 -0400
+
+ Update spring example to recent clutter API changes.
+
+ examples/clutter-pad/examples/spring.js | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 646f2c8878ee436644c457f444ecea3754fb6765
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Fri Jun 5 19:25:20 2009 -0400
+
+ New patch against clutter; removes some caching, a silly way to fix bug 1631
+
+ patches/clutter-animatev-caching.patch | 90 ++++++++++++++++++++++++++++++++
+ 1 files changed, 90 insertions(+), 0 deletions(-)
+
+commit 87220e8e64ad3804ceb8b2a69ca760505c1131c2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 3 21:32:17 2009 -0400
+
+ Extensions: Don't recreate the importer search path unless it doesn't exist or is empty.
+
+ extensions/Seed.js.in | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit b6b6402f8b0977d9fb237d6a114195f3d8f1463f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 3 20:44:49 2009 -0400
+
+ Revert "Tests: new test which tests various parts of the importer, including something which is currently broken. My email to Robb explaining it is attached."
+
+ This reverts commit d6de7e0060d6ae2eda59a52ca029af0114951e31.
+
+ configure.ac | 1 -
+ tests/javascript/Makefile.am | 3 +--
+ tests/javascript/importer-search-path.js | 7 -------
+ tests/javascript/searchpath/Makefile.am | 1 -
+ tests/javascript/searchpath/a.js | 9 ---------
+ tests/javascript/searchpath/b.js | 8 --------
+ 6 files changed, 1 insertions(+), 28 deletions(-)
+
+commit d6de7e0060d6ae2eda59a52ca029af0114951e31
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 3 20:39:17 2009 -0400
+
+ Tests: new test which tests various parts of the importer, including something which is currently broken. My email to Robb explaining it is attached.
+
+ create a directory, say, asdf
+
+ put two files in asdf:
+
+ asdf/a.js:
+
+ imports.searchPath.unshift("/home/hortont/Desktop/asdf");
+ Clutter = imports.gi.Clutter;
+ b = imports.b;
+
+ asdf/b.js:
+
+ Clutter = imports.gi.Clutter;
+ print("asdf");
+
+ go to the directory above asdf, then run
+
+ seed asdf/a.js
+
+ note that the print statement is never run... but if you don't import Clutter in both of them, it doesn't break.
+
+ configure.ac | 1 +
+ tests/javascript/Makefile.am | 3 ++-
+ tests/javascript/importer-search-path.js | 7 +++++++
+ tests/javascript/searchpath/Makefile.am | 1 +
+ tests/javascript/searchpath/a.js | 9 +++++++++
+ tests/javascript/searchpath/b.js | 8 ++++++++
+ 6 files changed, 28 insertions(+), 1 deletions(-)
+
+commit a206010b423b3d335df7c73192aad7275a0bbab3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed Jun 3 01:34:30 2009 -0400
+
+ Partially update README (we use Git, we need gnome-js-common, etc.)
+
+ README | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 0239b5004084565cedc22cf460c2f65021dba3a5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat May 30 18:44:04 2009 -0400
+
+ dont install threaded repl twice
+
+ examples/Makefile.am | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 3bd3b2282d860ff29c8c75839d0adf97c1770eea
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 10:13:09 2009 -0400
+
+ Update object-info test to latest introspection changes.
+
+ tests/javascript/object-info.js | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 609b2428af638a89636b60eb640ddfd498556659
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 29 05:57:34 2009 -0400
+
+ libseed: Fix struct-union-enumerate test
+
+ libseed/seed-importer.c | 19 +++++++++++++++++--
+ tests/javascript/structs/struct-union-enumerate.js | 2 +-
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+commit d75e22e723ce94f901295bd6edb54a65b9f9219e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 29 05:38:17 2009 -0400
+
+ examples: Cleanup actions example
+
+ examples/actions.js | 62 +++++++++++++++++++++-----------------------------
+ 1 files changed, 26 insertions(+), 36 deletions(-)
+
+commit db8c640fef0dc29d6ce2dac4519101264d91fd6a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:40:21 2009 -0400
+
+ More build fixes
+
+ doc/modules/gtkbuilder/Makefile.am | 4 ++--
+ doc/modules/readline/Makefile.am | 4 ++--
+ doc/modules/sandbox/Makefile.am | 4 ++--
+ doc/modules/sqlite/Makefile.am | 4 ++--
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 4323ba6f7a793bce156a4e5bb395414ac526ddfa
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:34:18 2009 -0400
+
+ Fix more relative paths.
+
+ doc/reference/Makefile.am | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 78631a0ec9e53c3beaf919c08e5bdec8a2f0a6f5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 29 05:30:30 2009 -0400
+
+ Fix printf in tests
+
+ tests/javascript/printf.js | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit eb2e927bdbbcbc18e161cae0346c67e5300d8141
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 29 05:13:35 2009 -0400
+
+ libseed: Propogate the GIArgInfo through the native closure privates
+
+ libseed/seed-closure.c | 6 +++++-
+ libseed/seed-closure.h | 2 ++
+ libseed/seed-types.c | 1 +
+ 3 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 98f826b22fdc83cc72118c74497fb9989330e779
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 29 05:08:07 2009 -0400
+
+ libseed: Propogate the GIArgInfo in to seed_gi_make_argument
+
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-structs.c | 6 +++---
+ libseed/seed-types.c | 4 +++-
+ libseed/seed-types.h | 1 +
+ 5 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 783ee52a18d26f9184a56c1c3463d1cf830fe264
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:27:07 2009 -0400
+
+ Build: oops; last commit should have used srcdir, not builddir.
+
+ doc/modules/gtkbuilder/Makefile.am | 2 +-
+ doc/modules/readline/Makefile.am | 2 +-
+ doc/modules/sandbox/Makefile.am | 2 +-
+ doc/modules/sqlite/Makefile.am | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit d70dd092b8975a3c699a4a676cabf924534b60a3
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:23:22 2009 -0400
+
+ Build: don't refer to files relatively; fixes build-in-different-dir.
+
+ doc/modules/gtkbuilder/Makefile.am | 2 +-
+ doc/modules/readline/Makefile.am | 2 +-
+ doc/modules/sandbox/Makefile.am | 2 +-
+ doc/modules/sqlite/Makefile.am | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 827b88c830283774eeea18aede40f65252c34da8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:14:28 2009 -0400
+
+ Build: don't write into the build-from dir, write into build-to.
+
+ doc/modules/gtkbuilder/Makefile.am | 2 +-
+ doc/modules/readline/Makefile.am | 2 +-
+ doc/modules/sandbox/Makefile.am | 2 +-
+ doc/modules/sqlite/Makefile.am | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit f6067c478553eb92e03dcd2c3bbf56876b1247b5
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:04:20 2009 -0400
+
+ Build: dist cairo module headers.
+
+ modules/cairo/Makefile.am | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 8aa5f1c09af3e32519e4027df71819aa681007b1
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 09:00:37 2009 -0400
+
+ Distribute dbus-exports.h
+
+ modules/dbus/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 5b8e240c427c891458d6d458265f3a035d2faef2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:56:47 2009 -0400
+
+ Build: dist sandbox.xml
+
+ doc/modules/gtkbuilder/Makefile.am | 3 ++-
+ doc/modules/sandbox/Makefile.am | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit f77029ebae2aa07bb4ff7686b4d6bcfd20d5e55b
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:50:03 2009 -0400
+
+ Build: readline.xml dist.
+
+ doc/modules/readline/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5bc98ab41ac4ed3671cc60ee59736faada74330f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:43:35 2009 -0400
+
+ Build: dist sqlite.xml
+
+ doc/modules/sqlite/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a40d0943b870d86e6ee3aba17a8d5720efc534ab
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:37:59 2009 -0400
+
+ Build: fix another file missing from dist.
+
+ doc/modules/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f4ed437134af34eb0c31cdc30355e90910fddb17
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:29:26 2009 -0400
+
+ Doc: printf is not global yet
+
+ doc/modules/make-functions.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit a1ef3fa3874a1443d3302b1f8a515373b264c5b7
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 29 08:14:56 2009 -0400
+
+ Build: Fix various missing things from EXTRA_DISTs
+
+ doc/modules/Makefile.am | 1 +
+ extensions/Makefile.am | 2 +-
+ modules/cairo/Makefile.am | 1 -
+ 3 files changed, 2 insertions(+), 2 deletions(-)
+
+commit b218b24953ff876670f2f6ca218c06d7aa9bb52a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 28 18:56:55 2009 -0400
+
+ Bump autotools version
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 11bed8dabf1dea3ca2c21008128e73fbadfd2551
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 09:44:24 2009 -0400
+
+ extensions: Whoops, put Seed.printf back
+
+ extensions/Clutter.js | 12 +++++++-----
+ extensions/Seed.js.in | 2 +-
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit c43e194fed29593a31f8be0f2d88abb8c8227de0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 06:09:23 2009 -0400
+
+ Update RELEASE file
+
+ ChangeLog | 2 +
+ RELEASE | 161 ++++++++++++++++++++++++++++---------------------------------
+ 2 files changed, 75 insertions(+), 88 deletions(-)
+
+commit cab81299c32ad1918c52c8b01e6d5f5d345e5841
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 05:47:18 2009 -0400
+
+ libseed: Conversion to/from date objects to time_t
+
+ ChangeLog | 1 +
+ libseed/seed-types.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-types.h | 8 +++++++
+ 3 files changed, 64 insertions(+), 0 deletions(-)
+
+commit 975b83c9a8e245c359eddd62967ec236ceaac014
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 04:41:38 2009 -0400
+
+ libseed: Move Seed.fork into os module
+
+ doc/runtime.html.in | 21 ---------------------
+ examples/gtkplug.js | 3 ++-
+ libseed/seed-builtins.c | 14 --------------
+ modules/os/os.c | 14 ++++++++++++++
+ tests/javascript/fork.js | 4 ++--
+ 5 files changed, 18 insertions(+), 38 deletions(-)
+
+commit 6d23b7c340419153dbffcbd56e5a12f6b82bc106
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 04:32:17 2009 -0400
+
+ find . -path ./.git -prune -o -type f -print0 | xargs -o perl -pi -e 's/Seed\.print/g'
+
+ doc/mapping/mapping.html.in | 10 +-
+ doc/modules/make-functions.js | 16 ++--
+ doc/modules/readline/readline.xml | 2 +-
+ doc/modules/sandbox/sandbox.xml | 2 +-
+ doc/modules/sqlite/sqlite.xml | 2 +-
+ doc/runtime.html.in | 38 +++++-----
+ doc/tutorial-standalone/1.js | 8 +-
+ doc/tutorial-standalone/tutorial.html.in | 32 ++++----
+ examples/Gnio-server.js | 4 +-
+ examples/Gnio.js | 2 +-
+ examples/actions.js | 6 +-
+ examples/async-quine.js | 2 +-
+ examples/broken/browser/browser-actions.js | 2 +-
+ examples/broken/browser/browser-tab.js | 2 +-
+ examples/broken/browser/main.js | 8 +-
+ examples/clutter-pad/main.js | 4 +-
+ examples/clutter-pad/test.js | 2 +-
+ examples/clutter-transitions/transition-library.js | 2 +-
+ examples/dbus/dbus-banshee.js | 4 +-
+ examples/dbus/dbus-consolekit.js | 4 +-
+ examples/dbus/dbus-networkmanager.js | 2 +-
+ examples/gconf.js | 2 +-
+ examples/glib/env.js | 4 +-
+ examples/glib/thread.js | 4 +-
+ examples/glib/timeout.js | 2 +-
+ examples/glib/timer.js | 2 +-
+ examples/json-reddit.js | 6 +-
+ examples/ls.js | 2 +-
+ examples/notify-test.js | 2 +-
+ examples/pango-fontset.js | 2 +-
+ examples/pango.js | 2 +-
+ examples/quine.js | 2 +-
+ examples/repl.js | 4 +-
+ examples/same-seed/board.js | 6 +-
+ examples/soup.js | 2 +-
+ examples/twitter/twitter.js | 2 +-
+ examples/xml/weather.js | 6 +-
+ examples/xml/xml-dom.js | 2 +-
+ examples/xml/xml-tree.js | 2 +-
+ examples/xml/xml-xpath.js | 2 +-
+ extensions/Seed.js.in | 8 +-
+ libseed/seed-builtins.c | 2 +-
+ libseed/seed-engine.c | 4 +-
+ modules/Multiprocessing/bi.js | 2 +-
+ modules/dbus/dbus.js | 2 +-
+ modules/sqlite/example.js | 2 +-
+ tests/javascript/argv.js | 2 +-
+ tests/javascript/builtin-argument-length.js | 42 +++++-----
+ tests/javascript/check-syntax.js | 12 ++--
+ tests/javascript/closure-finalization.js | 2 +-
+ tests/javascript/compare.js | 4 +-
+ tests/javascript/constructor-args.js | 6 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 80 ++++++++++----------
+ tests/javascript/fork.js | 4 +-
+ tests/javascript/function-info.js | 2 +-
+ tests/javascript/gdk-event.js | 8 +-
+ tests/javascript/gerror.js | 2 +-
+ tests/javascript/gtypes/gtype-extraprop.js | 2 +-
+ .../javascript/gtypes/gtype-property-construct.js | 2 +-
+ tests/javascript/gtypes/gtype-property.js | 4 +-
+ tests/javascript/gtypes/gtype-self.js | 2 +-
+ tests/javascript/gtypes/gtype-signal-args.js | 4 +-
+ tests/javascript/gtypes/gtype-signal.js | 4 +-
+ tests/javascript/gtypes/gtype-typerror.js | 2 +-
+ tests/javascript/gtypes/gtype.js | 8 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 2 +-
+ tests/javascript/json.js | 2 +-
+ tests/javascript/list-test.js | 6 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/object-info.js | 4 +-
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/print.js | 2 +-
+ tests/javascript/printf.js | 12 ++--
+ tests/javascript/printprint.js | 2 +-
+ tests/javascript/readline-bind.js | 4 +-
+ tests/javascript/readline.js | 2 +-
+ tests/javascript/signals/signal-connect.js | 6 +-
+ tests/javascript/signals/signal-disconnect.js | 2 +-
+ tests/javascript/signals/signal-expects.js | 2 +-
+ tests/javascript/signals/signal-invalid.js | 2 +-
+ tests/javascript/signals/signal-nofunc.js | 2 +-
+ tests/javascript/signals/signal-userdata.js | 2 +-
+ tests/javascript/signals/signal.js | 2 +-
+ tests/javascript/spawn.js | 2 +-
+ tests/javascript/sqlite.js | 2 +-
+ tests/javascript/structs/struct-constructor.js | 6 +-
+ tests/javascript/structs/struct-enumerate.js | 2 +-
+ tests/javascript/structs/struct-nested-set.js | 6 +-
+ tests/javascript/structs/struct-offsets.js | 4 +-
+ tests/javascript/structs/struct-set-member.js | 4 +-
+ tests/javascript/structs/struct-union-enumerate.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ tools/run-lint.js | 6 +-
+ 96 files changed, 261 insertions(+), 261 deletions(-)
+
+commit 405feab8bf95281cdf2bc80fe8524730aaf1c222
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 04:19:07 2009 -0400
+
+ Move Seed.print to the global object, as 'print', keep Seed.print for this release
+
+ libseed/seed-builtins.c | 9 ++++++++-
+ libseed/seed-builtins.h | 2 ++
+ libseed/seed-engine.c | 2 ++
+ 3 files changed, 12 insertions(+), 1 deletions(-)
+
+commit ce61b7ee195041524cafbe56b85fa075b691718e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 04:08:34 2009 -0400
+
+ More work on release ChangeLog
+
+ ChangeLog | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit ad46d5dfd1d429d58c4b3848d01fa124b911498e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 04:01:46 2009 -0400
+
+ libseed: seed_value_to_(int)(uint)(long)(ulong)(int64)(uint64) should not choke on boolean
+
+ libseed/seed-types.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 3b440058f07ebf37992d89367776ca438321924e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 27 03:58:43 2009 -0400
+
+ libseed: seed_value_to_boolean should permit JSValueIsNumber, and not just return FALSE
+
+ libseed/seed-types.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7fcf30dd0567aa1db5a35cb7f71a5a90fe477d56
+Author: Tim Horton <hortont424@gmail.com>
+Date: Wed May 27 03:57:21 2009 -0400
+
+ libseed: fix exception name spelling error
+
+ libseed/seed-engine.c | 4 ++--
+ m4/libtool.m4 | 3 +++
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit c45bfb66be620844ef40890f914df24628a6d412
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 15:42:08 2009 -0400
+
+ Add seed_value_to_format to API, converts an array of SeedValue based on a format string. Also add C test and docs
+
+ doc/reference/seed-sections.txt | 1 +
+ libseed/seed-api.c | 90 +++++++++++++++++++++++++++++++++++++++
+ libseed/seed.h | 4 ++
+ tests/c/api-types.c | 11 +++++
+ 4 files changed, 106 insertions(+), 0 deletions(-)
+
+commit 4bbbff52cc0f3b9069591b727f5229e98f579b01
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 14:56:45 2009 -0400
+
+ libseed: seed_gobject_equals and the .equals() method has been useless since toggle refs were added in november, so remove it
+
+ libseed/seed-engine.c | 27 ---------------------------
+ tests/javascript/compare.js | 4 ++--
+ 2 files changed, 2 insertions(+), 29 deletions(-)
+
+commit f2b7048a7459455bc136796f05a072a9afab3592
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 08:50:48 2009 -0400
+
+ dbus: Logging statements
+
+ modules/dbus/dbus-values.c | 250 ++++++++++++++++++++++----------------------
+ modules/dbus/module.c | 59 ++++++-----
+ 2 files changed, 154 insertions(+), 155 deletions(-)
+
+commit ef7342724d32afba2cee6bbf1fe57769e0f0aac1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 03:57:08 2009 -0400
+
+ extensions: Seed.js uses search path from @prefix@ now. Also queries gnome-js-common for moduledir. Seed depends on gnome-js-common now
+
+ configure.ac | 4 +-
+ extensions/Seed.js | 174 ------------------------------------------------
+ extensions/Seed.js.in | 174 ++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.c | 4 +-
+ libseed/seed-path.h.in | 2 +-
+ 5 files changed, 180 insertions(+), 178 deletions(-)
+
+commit 9aa7102b6accf366518b6d60f92d53bb08845263
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 03:32:48 2009 -0400
+
+ libseed: Fix include of Seed.js in non-standard prefix
+
+ configure.ac | 6 ++++++
+ libseed/Makefile.am | 3 ++-
+ libseed/seed-engine.c | 18 ++++++++----------
+ libseed/seed-path.h.in | 1 +
+ 4 files changed, 17 insertions(+), 11 deletions(-)
+
+commit 9bddb620e5d2bcf9e14fb397ff3267aef510cac4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 26 02:37:17 2009 -0400
+
+ Add a SEED_DEBUG_MODULE flag
+
+ libseed/Makefile.am | 2 +-
+ libseed/seed-debug.h | 3 ++-
+ libseed/seed-engine.c | 3 ++-
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 1a599fdb7e834e5b35a2e9fbb379c9976022086e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 25 16:42:00 2009 -0400
+
+ tests: Add test of the self parameter to init, and of passing additional properties to GObject constructors
+
+ tests/javascript/gtypes/Makefile.am | 2 ++
+ tests/javascript/gtypes/gtype-extraprop.js | 21 +++++++++++++++++++++
+ tests/javascript/gtypes/gtype-self.js | 21 +++++++++++++++++++++
+ 3 files changed, 44 insertions(+), 0 deletions(-)
+
+commit 6606d44fd9751ed135307a4a5c095c5fe9abea08
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 25 10:50:14 2009 -0400
+
+ libseed: Allow setting of non gobject properties in constructor
+
+ libseed/seed-engine.c | 41 +++++++++++++++++++++--------------------
+ 1 files changed, 21 insertions(+), 20 deletions(-)
+
+commit 6b59e379e771dd71201a585ebf6e2114a2d29879
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 25 08:27:43 2009 -0400
+
+ tests: struct-functions test should use new imports system
+
+ tests/javascript/structs/struct-functions.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0f74c3fbb0c872c5dec6d8c6d381bb49277ad8fc
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 25 06:53:57 2009 -0400
+
+ extensions: Clutter animation wrappers should save animate wrappers
+
+ extensions/Clutter.js | 26 +++++++++++++++++++++-----
+ 1 files changed, 21 insertions(+), 5 deletions(-)
+
+commit 17f44df8aa7ab04986e6e60ccb21ca1a11003c0e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 25 05:06:26 2009 -0400
+
+ libseed: Remove Seed.import_namespace. Use the new system.
+
+ libseed/seed-engine.c | 52 -------------------------------------------------
+ m4/libtool.m4 | 3 --
+ 2 files changed, 0 insertions(+), 55 deletions(-)
+
+commit fdf5d14209b6112da5a8a6ae69bc2206ba026bd5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 23 21:27:46 2009 -0400
+
+ Update examples and tests to import JSON now that it is a seperate module.
+
+ ChangeLog | 4 ++--
+ examples/json-reddit.js | 2 ++
+ examples/pango.js | 2 ++
+ tests/javascript/everything.js | 2 ++
+ tests/javascript/introspect.js | 2 ++
+ tests/javascript/json.js | 1 +
+ tests/javascript/signals/signal-userdata.js | 2 ++
+ tests/javascript/sqlite.js | 13 +++++++------
+ 8 files changed, 20 insertions(+), 8 deletions(-)
+
+commit fb4c9ead1caee9c363974ead3f98ee2216d3383c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 23 21:20:58 2009 -0400
+
+ extensions: Move JSON bits to gnome-js-common
+
+ extensions/Seed.js | 481 ----------------------------------------------------
+ 1 files changed, 0 insertions(+), 481 deletions(-)
+
+commit cd1dd4f20e8fa7e76b5d1ae04237e64ed3e2312e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 23 21:11:55 2009 -0400
+
+ libseed: seed_gobject_init_method_invoked should support non argv class arrays by copying
+
+ ChangeLog | 4 ++-
+ libseed/seed-engine.c | 63 ++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 60 insertions(+), 7 deletions(-)
+
+commit e7e80ea703391d970230b210f6298b2f3989644e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 23 20:21:34 2009 -0400
+
+ libseed: Pass this as an argument to constructors in addition to as this. Calling it self provides a quick solution to capturing this in closures.
+
+ libseed/seed-gtype.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit aae8f33031ba528a5605fc2287090c868b08d496
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 23 15:44:47 2009 -0400
+
+ GTKDoc index.html should not be in GIT
+
+ doc/reference/html/index.html | 66 -----------------------------------------
+ 1 files changed, 0 insertions(+), 66 deletions(-)
+
+commit 6f7c3e69c60bdb80912f449b8af9775fd93704e6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 17:26:18 2009 -0400
+
+ seed: Start working on ChangeLog for next release. Still one week left...this must be a record
+
+ ChangeLog | 19 +++++++++++++++++++
+ libseed/seed-importer.c | 1 -
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 4206f9afcd26b59e72f8d822c208e9a9e39ccfd7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 17:07:47 2009 -0400
+
+ libseed: Implement property enumeration for importer_dir class
+
+ libseed/seed-importer.c | 147 ++++++++++++++++++++++++++++------------------
+ 1 files changed, 89 insertions(+), 58 deletions(-)
+
+commit 569bd67da4b3de3f219730659629d53be38fc31e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 16:55:51 2009 -0400
+
+ libseed: Implement imports.Directory constructor.
+
+ libseed/seed-importer.c | 34 ++++++++++++++++++++++++++++++++++
+ 1 files changed, 34 insertions(+), 0 deletions(-)
+
+commit 07f62155d4ad00a43409f80934c130cf9345500f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 16:40:19 2009 -0400
+
+ Document seed_make_function
+
+ libseed/seed-api.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 943aab02e185cf1e4caa72bad8b4178425aa0d41
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 13:22:48 2009 -0400
+
+ libseed: Construct new JSObjectRefs for GObject wrappers in seed_gobject_constructor_invoked, so that it will be possible to append additional properties
+
+ libseed/seed-engine.c | 6 ++++++
+ libseed/seed-engine.h | 2 ++
+ libseed/seed-types.c | 8 +++++++-
+ 3 files changed, 15 insertions(+), 1 deletions(-)
+
+commit fd7178be8030892cffeb1fc257de47e6de3d5c51
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 13:18:49 2009 -0400
+
+ libseed: Separate the logic to make a wrapper for a given GObject type, out from the logic to make a wrapper for a specific object. This is necessary to be able to make the wrapper, before the call to g_object_newv, which will be required to see custom properties in init ha ndlers
+
+ libseed/seed-types.c | 41 ++++++++++++++++++++++++-----------------
+ libseed/seed-types.h | 2 ++
+ 2 files changed, 26 insertions(+), 17 deletions(-)
+
+commit 52e69504ae186aae9ed63a1d925bfeb46186e116
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 21 13:12:36 2009 -0400
+
+ libseed: Drop the seed_gobject_initialize handler, and instead add signals in seed_wrap_object.
+
+ libseed/seed-engine.c | 26 +-------------------------
+ libseed/seed-types.c | 4 +++-
+ 2 files changed, 4 insertions(+), 26 deletions(-)
+
+commit 5074387826cdc18935e74d6242f16f6651fec3dc
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri May 22 19:26:23 2009 -0400
+
+ Update imports in sqlite example.
+
+ doc/reference/html/index.html | 6 +++---
+ m4/libtool.m4 | 3 +++
+ modules/sqlite/example.js | 4 +++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+commit dbccc6990cc823a4c5cd6e85d15d09c97a2832e4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 21 10:38:50 2009 -0400
+
+ Load default extension script in all global contexts, even in imports.
+
+ libseed/seed-engine.c | 5 ++---
+ libseed/seed-engine.h | 2 ++
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit cde1d0798f8eb0c9e3ecbbcc51fb3846bebb3a5e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 23:21:20 2009 -0400
+
+ gtkbuilder: If connect_object is passed to the connect func, use g_object_watch_closure to ensure lifetime
+
+ modules/gtkbuilder/gtkbuilder.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 4d55413de8db6f20f78af5e92730065e45893d19
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 22:57:28 2009 -0400
+
+ docs: Update docs index to point at new docbook docs
+
+ doc/index.html | 15 ++-------------
+ 1 files changed, 2 insertions(+), 13 deletions(-)
+
+commit efe10ed158b941bce7f14717637c60056cb9db68
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 22:51:44 2009 -0400
+
+ docs: Docbookify sandbox module documentation.
+
+ configure.ac | 1 -
+ doc/modules/Makefile.am | 2 +-
+ doc/modules/book.xml | 1 +
+ doc/modules/sandbox/Makefile.am | 15 ++++++--
+ doc/modules/sandbox/sandbox.html.in | 66 -----------------------------------
+ doc/modules/sandbox/sandbox.js | 19 ++++++++++
+ doc/modules/sandbox/sandbox.xml | 44 +++++++++++++++++++++++
+ 7 files changed, 76 insertions(+), 72 deletions(-)
+
+commit 432a7af563f91abd55585aff85e727afdddb235a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 22:36:17 2009 -0400
+
+ docs: Document the one function in the gtkbuilder module, and also provide an example
+
+ doc/modules/gtkbuilder/Makefile.am | 6 ++++--
+ doc/modules/gtkbuilder/example.js | 24 ++++++++++++++++++++++++
+ doc/modules/gtkbuilder/example.ui | 24 ++++++++++++++++++++++++
+ doc/modules/gtkbuilder/gtkbuilder.js | 7 ++++++-
+ doc/modules/gtkbuilder/gtkbuilder.xml | 8 +++-----
+ 5 files changed, 61 insertions(+), 8 deletions(-)
+
+commit 06c57d03d383283026ca00353b2b648d1cd8f3f4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 22:22:18 2009 -0400
+
+ Add docbook for gtkbuilder module. Pretty sparse...
+
+ configure.ac | 1 +
+ doc/modules/Makefile.am | 4 +-
+ doc/modules/book.xml | 1 +
+ doc/modules/gtkbuilder/Makefile.am | 12 ++++++++++
+ doc/modules/gtkbuilder/gtkbuilder.js | 5 ++++
+ doc/modules/gtkbuilder/gtkbuilder.xml | 38 +++++++++++++++++++++++++++++++++
+ 6 files changed, 59 insertions(+), 2 deletions(-)
+
+commit 0aab273bdb295febb68e76d07433ddd4283f9ef6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 22:11:34 2009 -0400
+
+ modules: Add GtkBuilder module for handling gtkbuilder signal connection
+
+ configure.ac | 38 ++++++++++++++++++
+ libseed/seed.h | 7 ++-
+ modules/Makefile.am | 2 +-
+ modules/gtkbuilder/Makefile.am | 27 +++++++++++++
+ modules/gtkbuilder/gtkbuilder.c | 81 +++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 152 insertions(+), 3 deletions(-)
+
+commit c3cc2cb4a0cc924c13db59194b94c7b3999d7bde
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 17:31:07 2009 -0400
+
+ cairo: Implement Cairo PDF surfaces
+
+ modules/cairo/Makefile.am | 1 +
+ modules/cairo/seed-cairo-pdf-surface.c | 120 ++++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo-pdf-surface.h | 9 +++
+ modules/cairo/seed-cairo-surface.c | 2 +
+ modules/cairo/seed-cairo.c | 6 +-
+ 5 files changed, 135 insertions(+), 3 deletions(-)
+
+commit 6c75cebb7d3892a4a22373d7fde0a4b61513f543
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 17:14:31 2009 -0400
+
+ cairo: Implement some more cairo_t methods.
+ Implement cairo_mask
+ Implement cairo_pop_group
+ Overload cairo_set_source and cairo_set_source_surface
+ Overload cairo_mask and cairo_mask_surface.
+
+ modules/cairo/seed-cairo.c | 67 ++++++++++++++++++++++++++++++++++---------
+ 1 files changed, 53 insertions(+), 14 deletions(-)
+
+commit 31b783239a3f4145f6d1061e2f6ff4711455921c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 20 02:48:17 2009 -0400
+
+ libseed: Constructor sometimes steals a ref to non INITIALLY_UNOWNED objects
+
+ libseed/seed-engine.c | 10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+commit b2b61f4683cd5f5b9d2422c04192ad15485a121b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 19 19:17:01 2009 -0400
+
+ doc: Module docs will now build without seed installed
+
+ doc/modules/Makefile.am | 2 +-
+ doc/modules/readline/Makefile.am | 4 ++--
+ doc/modules/sqlite/Makefile.am | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+commit d9d77aab4bfaaa29fd090339cf32f3454adfa493
+Author: Luis Medinas <lmedinas@gnome.org>
+Date: Tue May 19 23:01:17 2009 +0100
+
+ Fix dbus-banshee example.
+
+ examples/dbus/dbus-banshee.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b092fd611998340bced17be49f19544f9031d097
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 19 11:27:28 2009 -0400
+
+ Use env to find seed, not absolute path.
+
+ doc/modules/make-functions.js | 2 +-
+ examples/cairo.js | 2 +-
+ examples/dbus/dbus-banshee.js | 2 +-
+ examples/dbus/dbus-consolekit.js | 2 +-
+ examples/dbus/dbus-networkmanager.js | 2 +-
+ examples/gtktextview.js | 2 +-
+ examples/xml/xml-dom.js | 2 +-
+ examples/xml/xml-tree.js | 2 +-
+ examples/xml/xml-xpath.js | 2 +-
+ tests/javascript/signals/signal-invalid.js | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
+
+commit eacea92416403210cec9552338b579bf945728b2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 18 22:30:23 2009 -0400
+
+ docs: Docbookify sqlite documentation
+
+ configure.ac | 1 -
+ doc/modules/Makefile.am | 5 ++-
+ doc/modules/book.xml | 3 +-
+ doc/modules/readline/Makefile.am | 1 +
+ doc/modules/readline/readline.xml | 2 +-
+ doc/modules/sqlite/Makefile.am | 19 ++++++++--
+ doc/modules/sqlite/sqlite.html.in | 68 -------------------------------------
+ doc/modules/sqlite/sqlite.js | 21 +++++++++++
+ doc/modules/sqlite/sqlite.xml | 58 +++++++++++++++++++++++++++++++
+ 9 files changed, 102 insertions(+), 76 deletions(-)
+
+commit 7499bb49e8180293d71f28b180d52eddd9dc34bc
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 18 19:42:55 2009 -0400
+
+ Fix generation of readline docs
+
+ doc/modules/readline/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 4c0167b52c7b41176b8089b0b9a119c3a4385417
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 18 19:21:34 2009 -0400
+
+ docs: Add docbook rewrite of readline docs
+
+ configure.ac | 1 -
+ doc/modules/Makefile.am | 14 ++++++++++
+ doc/modules/book.xml | 15 ++++++++++
+ doc/modules/readline/Makefile.am | 17 +++++++++---
+ doc/modules/readline/readline.html.in | 41 -----------------------------
+ doc/modules/readline/readline.js | 27 +++++++++++++++++++
+ doc/modules/readline/readline.xml | 46 +++++++++++++++++++++++++++++++++
+ 7 files changed, 115 insertions(+), 46 deletions(-)
+
+commit 687c5318e76c9f39eeb55f04604e0e751ab7aaa9
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 18 18:41:27 2009 -0400
+
+ docs: Add make functions helper script for generating module documentation
+
+ doc/modules/make-functions.js | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+commit d91f397f852b089013df60113e264251c79a3053
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 18 18:36:42 2009 -0400
+
+ docs: Reorganize module docs to prepare for docbook rewrite
+
+ configure.ac | 17 ++++--
+ doc/modules/Makefile.am | 6 +--
+ doc/modules/canvas.html.in | 34 ----------
+ doc/modules/canvas/Makefile.am | 5 ++
+ doc/modules/canvas/canvas.html.in | 34 ++++++++++
+ doc/modules/multiprocessing.html.in | 23 -------
+ doc/modules/multiprocessing/Makefile.am | 5 ++
+ .../multiprocessing/multiprocessing.html.in | 23 +++++++
+ doc/modules/readline.html.in | 41 ------------
+ doc/modules/readline/Makefile.am | 5 ++
+ doc/modules/readline/readline.html.in | 41 ++++++++++++
+ doc/modules/sandbox.html.in | 66 -------------------
+ doc/modules/sandbox/Makefile.am | 5 ++
+ doc/modules/sandbox/sandbox.html.in | 66 +++++++++++++++++++
+ doc/modules/sqlite.html.in | 68 --------------------
+ doc/modules/sqlite/Makefile.am | 5 ++
+ doc/modules/sqlite/sqlite.html.in | 68 ++++++++++++++++++++
+ 17 files changed, 270 insertions(+), 242 deletions(-)
+
+commit 47ecad360e0999ae1fad0869d65b04c30a1df1e8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon May 18 05:11:57 2009 -0400
+
+ clutterpad: springs example motion frequency @ 60Hz doesn't break things anymore
+
+ examples/clutter-pad/examples/spring.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e26b52162b72df5a0240d8c4d67b6fef3e1557d4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon May 18 05:11:24 2009 -0400
+
+ gtkplug: example doesn't require gio import
+
+ examples/gtkplug.js | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit c8631fcad452cd6ec35e940018c088d500c1b886
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Mon May 18 04:57:35 2009 -0400
+
+ Build: install modules into libdir instead of exec_prefix/lib, more appropriate on 64 bit systems (fixes bug 583024)
+
+ modules/Multiprocessing/Makefile.am | 2 +-
+ modules/cairo/Makefile.am | 2 +-
+ modules/canvas/Makefile.am | 2 +-
+ modules/dbus/Makefile.am | 2 +-
+ modules/example/Makefile.am | 2 +-
+ modules/libxml/Makefile.am | 2 +-
+ modules/os/Makefile.am | 2 +-
+ modules/readline/Makefile.am | 2 +-
+ modules/sandbox/Makefile.am | 2 +-
+ modules/sqlite/Makefile.am | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 97f9fa23d020eab42a0a9eecab2decba106caeae
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 17 22:36:01 2009 -0400
+
+ Make the documentation a bit more...hierarchal
+
+ doc/reference/html/index.html | 10 ++++++++-
+ doc/reference/seed-docs.sgml | 42 +++++++++++++++++++++++++++-------------
+ 2 files changed, 37 insertions(+), 15 deletions(-)
+
+commit 4e97202b9c9d0955fcfb51e799671d2cde798e81
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun May 17 21:46:29 2009 -0400
+
+ Build: Use gnome-autogen.
+
+ autogen.sh | 40 +++++++++-------------------------------
+ 1 files changed, 9 insertions(+), 31 deletions(-)
+
+commit 6818afd36a0f290467c3c75c052cdb0730333850
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 17 20:02:49 2009 -0400
+
+ Dbus: implement service side DBus stuff, still needs some work...
+
+ libseed/seed-api.c | 17 ++
+ libseed/seed.h | 1 +
+ modules/dbus/dbus-exports.c | 343 ++++++++++++++++++++++++++++++++++++++++++-
+ modules/dbus/dbus-values.h | 2 +
+ modules/dbus/module.c | 5 +-
+ modules/dbus/util/dbus.c | 8 +-
+ 6 files changed, 371 insertions(+), 5 deletions(-)
+
+commit 40c1d749e344ea84ac937652d0ac986b662471f1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 17 00:58:08 2009 -0400
+
+ DBus: Start implementing DBus exports
+
+ modules/dbus/Makefile.am | 3 +-
+ modules/dbus/dbus-exports.c | 403 +++++++++++++++++++++++++++++++++++++++++++
+ modules/dbus/dbus-exports.h | 17 ++
+ 3 files changed, 422 insertions(+), 1 deletions(-)
+
+commit e414914c20d5f1895157799236ec4a4288e625c4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun May 17 18:57:11 2009 -0400
+
+ Turtle: Don't install seed_turtle to bindir.
+
+ examples/turtle/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 64ae0b84dcd36e072a5d33f9281f7abe6625b17a
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat May 16 19:37:24 2009 -0400
+
+ clutter-pad: add new cairo example to Makefile.
+
+ examples/clutter-pad/examples/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 11c460eb0a0b59e6b551dc8f33e01242dac788ac
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Sat May 16 15:41:12 2009 +0000
+
+ clutter-pad: add clutter-cairo example
+
+ examples/clutter-pad/examples/cairo.js | 52 ++++++++++++++++++++++++++++++++
+ 1 files changed, 52 insertions(+), 0 deletions(-)
+
+commit e9ed8a25213bd8ababff6deaa4f9d321bb8d2a37
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Sat May 16 15:38:50 2009 +0000
+
+ fix seed_cairo_rotate argument count
+
+ modules/cairo/seed-cairo.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3e41323cefd25ae67128ee0a020ede421499583b
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Sat May 16 15:40:36 2009 +0000
+
+ add cairo.Context.steal and cairo.Context.destroy to seed_cairo
+
+ modules/cairo/seed-cairo.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 38 insertions(+), 0 deletions(-)
+
+commit ce1548b990e4e86949a30d027292f8cf61233a44
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Sat May 16 12:38:14 2009 +0000
+
+ update clutter-cairo.js sample to clutter 0.9
+
+ examples/clutter-cairo.js | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+commit f7849cb5dd0c00ee8248ce78771cbe6628a1a07a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 16 07:15:41 2009 -0400
+
+ examples: Add simple cairo example
+
+ examples/Makefile.am | 2 ++
+ examples/cairo.js | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+), 0 deletions(-)
+
+commit f722432b0e799fc129a7d8520b8552d50054f8ad
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 23:07:18 2009 -0400
+
+ Patches: update Clutter patch to match head
+
+ patches/clutter-animatev-annotation.patch | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 4515ec61c20c6613f298bb81c0b4d7aeff0516cc
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 22:57:01 2009 -0400
+
+ Cairo stuff
+
+ configure.ac | 3 +++
+ modules/cairo/Makefile.am | 2 ++
+ modules/cairo/seed-cairo.c | 29 +++++++++++++++++++++++++++++
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit d9e0a9bc75dd44a6d42ed2f3a708ab797f9ec535
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 16:47:37 2009 -0400
+
+ cairo: Implement cairo.get_source and cairo.set_source
+
+ modules/cairo/seed-cairo-pattern.c | 5 ++-
+ modules/cairo/seed-cairo-surface.c | 5 ++-
+ modules/cairo/seed-cairo.c | 54 ++++++++++++++++++++++++++++++++++--
+ 3 files changed, 59 insertions(+), 5 deletions(-)
+
+commit 43fd471210f7dd79673e897d553fa91df1deec70
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 16:35:03 2009 -0400
+
+ cairo: Implement pattern.add_color_stop_rgb and rgba
+
+ modules/cairo/seed-cairo-pattern.c | 62 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 62 insertions(+), 0 deletions(-)
+
+commit 59786cd0d8606d9d8ec2a2da4a893f653ccc128f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 16:19:05 2009 -0400
+
+ cairo: Implement cairo.LinearGradient and cairo.RadialGradient
+
+ modules/cairo/seed-cairo-pattern.c | 62 +++++++++++++++++++++++++++++++++--
+ modules/cairo/seed-cairo-pattern.h | 2 +-
+ 2 files changed, 59 insertions(+), 5 deletions(-)
+
+commit 7222a322b2300cb8272c1ff31dd09c194845fd8a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 16:11:12 2009 -0400
+
+ cairo: Standardize the class naming to be just 'Class' and not 'CairoClass'
+
+ modules/cairo/seed-cairo-image-surface.c | 2 +-
+ modules/cairo/seed-cairo-surface.c | 2 +-
+ modules/cairo/seed-cairo.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 4c53e9cd0bace34580c045fb33372262431e2dcd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 16:10:02 2009 -0400
+
+ cairo: Add Pattern class
+
+ modules/cairo/Makefile.am | 1 +
+ modules/cairo/seed-cairo-pattern.c | 77 ++++++++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo-pattern.h | 21 ++++++++++
+ modules/cairo/seed-cairo.c | 4 +-
+ 4 files changed, 102 insertions(+), 1 deletions(-)
+
+commit 1cee72cc9696148fad12d0491682ef6d4284ee67
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 15:29:22 2009 -0400
+
+ cairo: Add CAIRO_STATUS enum, and cairo_status_to_string
+
+ libseed/seed.h | 12 ++++----
+ modules/cairo/seed-cairo-enums.c | 60 ++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 63 insertions(+), 9 deletions(-)
+
+commit f8cca80b2e939e5bdac4d863894b8c3e7e0e37cb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 14:29:54 2009 -0400
+
+ cairo: More cairo_t properties
+
+ modules/cairo/seed-cairo-image-surface.c | 4 ++++
+ modules/cairo/seed-cairo-surface.c | 4 ++--
+ modules/cairo/seed-cairo.c | 24 +++++++++++-------------
+ 3 files changed, 17 insertions(+), 15 deletions(-)
+
+commit 513df488c82a9af46d4c3e57bf00ff035250e830
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 14:20:05 2009 -0400
+
+ cairo: Implement surface.write_to_png
+
+ modules/cairo/seed-cairo-surface.c | 28 ++++++++++++++++++++++++++++
+ 1 files changed, 28 insertions(+), 0 deletions(-)
+
+commit 59989f03c6fed38987d5f9029553386ea92d8e00
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 14:15:59 2009 -0400
+
+ cairo: Implement the remaining matrix functions (transform_point/transform_distance)
+
+ modules/cairo/seed-cairo-matrix.c | 67 +++++++++++++++++++++++++++++++++++++
+ 1 files changed, 67 insertions(+), 0 deletions(-)
+
+commit e4d6c703fffb0388ff2b8aaacc57e4ef2c157ce7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 14:13:11 2009 -0400
+
+ cairo: Implement matrix init/translate/scale/rotate funcs
+
+ modules/cairo/seed-cairo-matrix.c | 183 ++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 179 insertions(+), 4 deletions(-)
+
+commit c1562d31209d1ef5c88aecefd1b8240ddd163ced
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 13:59:26 2009 -0400
+
+ cairo: Move matrix code in to seed-cairo-matrix.c so additional functions can be added, and it can be used by the soon to be seed-cairo-pattern.c
+
+ modules/cairo/Makefile.am | 1 +
+ modules/cairo/seed-cairo-matrix.c | 58 +++++++++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo-matrix.h | 14 +++++++++
+ modules/cairo/seed-cairo.c | 37 ++---------------------
+ 4 files changed, 76 insertions(+), 34 deletions(-)
+
+commit 97e22a0a5ee3184da20f74cf0eb6321aaf83af11
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 13:49:01 2009 -0400
+
+ cairo: Implement the matrix getter/setters, and the additional transformation methods
+
+ modules/cairo/seed-cairo.c | 132 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 132 insertions(+), 0 deletions(-)
+
+commit 9a38e5c73f5d8b9048c135b324b6757cba8aaf4a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 13:41:28 2009 -0400
+
+ Implement matrix getters/setters
+
+ modules/cairo/seed-cairo.c | 103 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 103 insertions(+), 0 deletions(-)
+
+commit 53649c818c8a4d7d7ab92b015c17463a141f84db
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 13:27:02 2009 -0400
+
+ cairo: Move some context setters/getters in to properties
+
+ modules/cairo/seed-cairo.c | 213 ++++++++++++++++----------------------------
+ 1 files changed, 75 insertions(+), 138 deletions(-)
+
+commit b0bc6e5f5b1d3d9246b292ca8b3a6a4eb0eec808
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 13:12:06 2009 -0400
+
+ cairo: seed-cairo-surface should use properties where possible
+
+ modules/cairo/seed-cairo-image-surface.c | 3 +-
+ modules/cairo/seed-cairo-surface.c | 185 +++++++++++++++---------------
+ 2 files changed, 95 insertions(+), 93 deletions(-)
+
+commit d3977ded138a67ead8f70bd53a51671b9b378090
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 12:51:38 2009 -0400
+
+ canvas: Switch to property getter/setters for CairoImageSurface
+
+ modules/cairo/seed-cairo-image-surface.c | 82 ++++++++++++++----------------
+ 1 files changed, 38 insertions(+), 44 deletions(-)
+
+commit a2131bce03cee34ce198fd85932aa7cdaf446f02
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 18:00:41 2009 -0400
+
+ Build: fix install permissions for some scripts (repl.js wants to be +x) so that OpenSUSE package doesn't complain, fixes bug #582584
+
+ examples/Makefile.am | 2 +-
+ extensions/Seed.js | 2 --
+ 2 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 948a69d7b600e71b527f7ae9e1664b31b8d00e3b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 17:42:01 2009 -0400
+
+ ClutterPad: remove random whitespace
+
+ examples/clutter-pad/examples/box2d.js | 3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+commit 9af1a888692f65ba110638ec60b859db6cf3cfba
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Thu May 14 14:19:31 2009 +0000
+
+ clutter-pad: test and fix duplicate context creation on execute
+
+ examples/clutter-pad/main.js | 9 ++++-----
+ examples/clutter-pad/test.js | 27 +++++++++++++++++++++++++++
+ 2 files changed, 31 insertions(+), 5 deletions(-)
+
+commit e616fac4f939d96d204081314a70b3d922f01816
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 10:02:34 2009 -0400
+
+ clutter-pad: Add ClutterBox2D example
+
+ examples/clutter-pad/Makefile.am | 6 ++-
+ examples/clutter-pad/examples/Makefile.am | 6 ++-
+ examples/clutter-pad/examples/box2d.js | 64 +++++++++++++++++++++++++++++
+ examples/clutter-pad/redhand.png | Bin 0 -> 3605 bytes
+ 4 files changed, 72 insertions(+), 4 deletions(-)
+
+commit 4b5fcd31be2a67943209557b237e0e523f58003f
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Thu May 14 08:45:20 2009 -0400
+
+ examples: Some clutter-pad cleanups
+
+ .../clutter-pad/examples/animated-rectangle.js | 1 -
+ examples/clutter-pad/examples/spring.js | 2 -
+ examples/clutter-pad/main.js | 5 +-
+ modules/cairo/seed-cairo.c | 202 +++++++++++++-------
+ 4 files changed, 138 insertions(+), 72 deletions(-)
+
+commit 4e136e050605a9966f1b5198594cfbd76ff1c9e3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 08:13:19 2009 -0400
+
+ cairo: Bind the cairo path functions
+
+ modules/cairo/seed-cairo.c | 370 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 370 insertions(+), 0 deletions(-)
+
+commit 2c4779090b9a26cbe642847db50da57d019a0a46
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 07:53:16 2009 -0400
+
+ cairo: Implement the rest of the cairo_t methods (not including the path ones)
+
+ modules/cairo/seed-cairo.c | 460 ++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 383 insertions(+), 77 deletions(-)
+
+commit f01c875c8ad6fe4234aac41e4bc4425519611bf7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 07:10:40 2009 -0400
+
+ cairo: get/set line_width/miter_limit/operator/tolerance. clip_preserve. reset_clip
+
+ modules/cairo/seed-cairo.c | 207 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 207 insertions(+), 0 deletions(-)
+
+commit c2a49f5d9b799e550da0ebb23034023aa72e3ff2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 07:01:18 2009 -0400
+
+ cairo: get/set fill_rule/line_cap/line_join
+
+ modules/cairo/seed-cairo.c | 118 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 118 insertions(+), 0 deletions(-)
+
+commit bdfba213a6cb4529fe30de772aeb7980240c3acf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 06:55:00 2009 -0400
+
+ cairo: More cairo.context, more enums, more breakfast
+
+ modules/cairo/seed-cairo-enums.c | 41 +++++++++++++++++-
+ modules/cairo/seed-cairo.c | 90 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 130 insertions(+), 1 deletions(-)
+
+commit fc8594290b523771315bd00f4f30ec7844671843
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 06:08:29 2009 -0400
+
+ cairo: Implement more of cairo context
+
+ modules/cairo/seed-cairo-enums.c | 9 ++-
+ modules/cairo/seed-cairo.c | 151 ++++++++++++++++++++++++++++++++++----
+ 2 files changed, 144 insertions(+), 16 deletions(-)
+
+commit 81c1d2a1016dacb2b894ff96f4470ef05d9231fd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 05:08:32 2009 -0400
+
+ cairo: Start implementing some cairo context methods
+
+ modules/cairo/seed-cairo.c | 123 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 123 insertions(+), 0 deletions(-)
+
+commit 9179689cfc4eedbe08c8b74c6e29eca3ce267d98
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 05:05:06 2009 -0400
+
+ Pango: Persist (in ~/.pangojsrc, needs to find a better home) your pango.js layout EXCEPT FOR COLORS (struct bug?)
+
+ examples/pango.js | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 54 insertions(+), 2 deletions(-)
+
+commit 7448c43afb6f340d533c5966eac2d2281935143b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:55:07 2009 -0400
+
+ cairo: Hack around WebKit GC bug for now
+
+ modules/cairo/seed-cairo.c | 22 ++++++++++++++++------
+ 1 files changed, 16 insertions(+), 6 deletions(-)
+
+commit 0e8bd80beecd858ac35d5a64c4fe7a536d1a8e62
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:46:53 2009 -0400
+
+ libseed: No need for G_MODULE_BIND_LAZY when importing modules
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f3061db7b8d4d454d96ff2fb0709959d575fee1f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:44:06 2009 -0400
+
+ cairo: Some code reorg
+
+ modules/cairo/seed-cairo-image-surface.c | 1 +
+ modules/cairo/seed-cairo-image-surface.h | 1 -
+ modules/cairo/seed-cairo.c | 9 ++++-----
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+commit 9e7766ce51dfb098abd534bb0d153cc801e2af1b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:33:53 2009 -0400
+
+ cairo: Fix some warnings while I wait for WebKit to build
+
+ modules/cairo/Makefile.am | 1 +
+ modules/cairo/seed-cairo-image-surface.c | 6 +++---
+ modules/cairo/seed-cairo-image-surface.h | 1 +
+ modules/cairo/seed-cairo-surface.c | 3 ++-
+ modules/cairo/seed-cairo.c | 12 ++++++++----
+ modules/os/os.c | 4 ++--
+ 6 files changed, 17 insertions(+), 10 deletions(-)
+
+commit b373123acfc732473d631f886b4712aa35f1b7ed
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:17:07 2009 -0400
+
+ cairo: Implement skeleton cairo.Context class + constructor
+
+ modules/cairo/seed-cairo-image-surface.c | 2 +-
+ modules/cairo/seed-cairo-surface.c | 17 ++++---
+ modules/cairo/seed-cairo.c | 80 ++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo.h | 4 +-
+ 4 files changed, 93 insertions(+), 10 deletions(-)
+
+commit d9ccd897c4e225385b1d410be7883430b5ffbf5e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 04:10:08 2009 -0400
+
+ ClutterPad: Spring example, similar to Processing.
+
+ examples/clutter-pad/examples/Makefile.am | 6 +-
+ examples/clutter-pad/examples/spring.js | 92 +++++++++++++++++++++++++++++
+ 2 files changed, 96 insertions(+), 2 deletions(-)
+
+commit 59c1a36e47aeab872f5ae290f6165b2fe050e922
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 04:00:33 2009 -0400
+
+ cairo: Define cairo_format_t enum
+
+ modules/cairo/seed-cairo-enums.c | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 9fd6990d7dc2f7c611c7e8873ab462ec7d0c5aaf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 03:58:46 2009 -0400
+
+ cairo: Start defining cairo enums
+
+ modules/cairo/Makefile.am | 3 ++-
+ modules/cairo/seed-cairo-enums.c | 18 ++++++++++++++++++
+ modules/cairo/seed-cairo-enums.h | 5 +++++
+ modules/cairo/seed-cairo.c | 1 +
+ 4 files changed, 26 insertions(+), 1 deletions(-)
+
+commit bb4e7c57704f6ee75bfa2ee9ef7a5eb6d47c9893
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 03:52:21 2009 -0400
+
+ cairo: seed_object_to_cairo_surface should take an exception
+
+ modules/cairo/seed-cairo-image-surface.c | 8 +++---
+ modules/cairo/seed-cairo-surface.c | 33 +++++++++++++++--------------
+ modules/cairo/seed-cairo-surface.h | 2 +-
+ 3 files changed, 22 insertions(+), 21 deletions(-)
+
+commit e2601bc01ac76fca4813f6d029f594156b21da48
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 03:47:47 2009 -0400
+
+ cairo: Implement cairo_image_surface_t bindings
+
+ modules/cairo/Makefile.am | 3 +-
+ modules/cairo/seed-cairo-image-surface.c | 134 ++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo-image-surface.h | 9 ++
+ modules/cairo/seed-cairo-surface.c | 12 ++-
+ modules/cairo/seed-cairo-surface.h | 4 +-
+ 5 files changed, 158 insertions(+), 4 deletions(-)
+
+commit b8ecabf1e86efd372ba48e2462f2e4385d33553d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 03:27:19 2009 -0400
+
+ Implement cairo_surface_t bindings
+
+ configure.ac | 20 ++
+ libseed/seed-api.c | 6 +
+ libseed/seed.h | 3 +
+ modules/Makefile.am | 2 +-
+ modules/cairo/Makefile.am | 26 +++
+ modules/cairo/seed-cairo-surface.c | 350 ++++++++++++++++++++++++++++++++++++
+ modules/cairo/seed-cairo-surface.h | 9 +
+ modules/cairo/seed-cairo.c | 33 ++++
+ modules/cairo/seed-cairo.h | 13 ++
+ modules/os/os.c | 4 +-
+ 10 files changed, 463 insertions(+), 3 deletions(-)
+
+commit eca8717930fa4ec409ed3503b1453fd5a45ecd2d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 03:22:03 2009 -0400
+
+ ClutterPad: editor should use fixed-width font.
+
+ examples/clutter-pad/clutter-pad.ui | 5 ++++-
+ .../clutter-pad/examples/animated-rectangle.js | 6 +++---
+ examples/clutter-pad/main.js | 2 ++
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 005cb0afd0a4d02b5bcb864bb9cbcc26266dc4a5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 14 03:11:50 2009 -0400
+
+ ClutterPad: fix indentation of animated-rectangle example.
+
+ .../clutter-pad/examples/animated-rectangle.js | 35 ++++++++++---------
+ 1 files changed, 18 insertions(+), 17 deletions(-)
+
+commit 1760f33ec3f5ccd572ca2a8f66e2dbc813cebf82
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 14 01:21:00 2009 -0400
+
+ libseed: Update Seed.js to include gnome-js-common module directory in default search path
+
+ extensions/Seed.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a1750f5a1551fc5561cf4b3a61712b578ef298b5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 23:55:27 2009 -0400
+
+ examples: Update clutter using examples to not require [GOject.TYPE_*...in animatev calls
+
+ examples/clutter-0.9.js | 28 +++---
+ examples/same-seed/light.js | 212 +++++++++++++++++++++---------------------
+ examples/same-seed/score.js | 10 +-
+ extensions/Clutter.js | 32 +++---
+ 4 files changed, 142 insertions(+), 140 deletions(-)
+
+commit ff83d4a17766d0402ed6810f9572e1cb0f7d74eb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 23:33:19 2009 -0400
+
+ libseed: Add GObject.__property_type, for looking up pproperty types, and use this in Clutter.Actor.animatev, so you no longer have to pass [GObject.TYPE_BLA, bla]
+
+ .../clutter-pad/examples/animated-rectangle.js | 10 +++---
+ extensions/Clutter.js | 4 +-
+ libseed/seed-engine.c | 36 +++++++++++++++++--
+ 3 files changed, 39 insertions(+), 11 deletions(-)
+
+commit 092057ed8d939f2f682f9b63aa9b0329e75f5344
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 22:59:35 2009 -0400
+
+ Add 'Gst.js' with Gst.Element.prototype.link_many
+
+ examples/n-oscillator.js | 139 +++++++++++++++++++++++-----------------------
+ extensions/Gst.js | 8 +++
+ extensions/Makefile.am | 2 +-
+ 3 files changed, 78 insertions(+), 71 deletions(-)
+
+commit 7ba47f1f7a09b87f3261bfa4259e7875d2ec0f1c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 22:04:01 2009 -0400
+
+ doc: Add weather example to example index
+
+ doc/index.html | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 994aa22f2e5442d905ae5081999c52a7193143a5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 22:01:27 2009 -0400
+
+ seed: Add cluttter-pad.ui to POTFILES.skip
+
+ po/POTFILES.skip | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 8b3e98da75bc75b374ce7e7551c33bb0bed4b875
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 21:58:09 2009 -0400
+
+ tests: Remove obsolete namespace-exception test
+
+ tests/javascript/Makefile.am | 1 -
+ tests/javascript/namespace-exception-test.js | 23 -----------------------
+ 2 files changed, 0 insertions(+), 24 deletions(-)
+
+commit f32547d61ae91e35ccab233c1d080d1e9e9c7089
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 21:52:30 2009 -0400
+
+ xml: sample.xml is now in the XML examples folder
+
+ modules/libxml/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 02d648416472f92be870b7784ff2e8d82107c353
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:45:29 2009 -0400
+
+ Weather: Can pass zipcode on command line
+
+ examples/xml/weather.js | 23 +++++++++++++++++++++--
+ 1 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 9be1bcfc284968ff890b94da82744880404809fc
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:30:41 2009 -0400
+
+ Weather: add to Makefile.am
+
+ examples/xml/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 20124e709deb8f68404e4eb073e6b2d1c50596e5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:30:09 2009 -0400
+
+ Weather: should be in xml folder.
+
+ examples/libxml-weather.js | 22 ----------------------
+ examples/xml/weather.js | 22 ++++++++++++++++++++++
+ 2 files changed, 22 insertions(+), 22 deletions(-)
+
+commit 731c01e9645e1174adce147317f2d65f92356fd2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:29:41 2009 -0400
+
+ Weather: Now works, prints temperature in Colchester. More soon.
+
+ examples/libxml-weather.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 0c0f8aea5aabdc7d4823a9bb8e1172468d1f6efd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 21:40:43 2009 -0400
+
+ clutter-pad: Make the clutter-pad example a little shinier
+
+ doc/reference/html/index.html | 3 --
+ .../clutter-pad/examples/animated-rectangle.js | 33 ++++++++++++-------
+ 2 files changed, 21 insertions(+), 15 deletions(-)
+
+commit a42e5988e522fc586e6630ddec404744c90f51e0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 21:16:09 2009 -0400
+
+ xml: Fix crash in seed_xml_xpath_register_ns
+
+ modules/libxml/libxml.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ffdb8dbd2f41eea274b1da6c5fe00ad41d748e31
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 21:09:11 2009 -0400
+
+ seed: Update ChangeLog
+
+ ChangeLog | 22 +++++++++++++---------
+ 1 files changed, 13 insertions(+), 9 deletions(-)
+
+commit 12f847ffbcdad02979a12ba0cc71b915100df14b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:05:15 2009 -0400
+
+ Weather: initial import of Yahoo Weather XML example.
+
+ examples/libxml-weather.js | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit ab31a816b2327a83cb6d3afcd983c96b06efbd70
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 21:01:50 2009 -0400
+
+ libxml: Someone forgot a Makefile.am
+
+ examples/xml/Makefile.am | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 30bc28df9e9807970861a6ee913554519739d37b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 20:55:57 2009 -0400
+
+ seed: Bump version number
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8b8630cfa6501d1d689b6921779725805a4dbdd9
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 20:09:03 2009 -0400
+
+ xml: Bind xpath.rxpathRegisterNs
+
+ modules/libxml/libxml.c | 34 ++++++++++++++++++++++++++++++++--
+ 1 files changed, 32 insertions(+), 2 deletions(-)
+
+commit a63bd90e8422c6608f75ad1eccfd990f405873fc
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 18:29:19 2009 -0400
+
+ ClutterPad: Keyboard accelerators. Should be able to do these from GtkBuilder?
+
+ examples/clutter-pad/main.js | 18 ++++++++++++++++--
+ 1 files changed, 16 insertions(+), 2 deletions(-)
+
+commit ba6d8c235222ffe37f5472283d19c93ed9687017
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 18:16:14 2009 -0400
+
+ ClutterPad: Reset sandboxed context each time the stage is reset
+
+ examples/clutter-pad/main.js | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit f2adcd4207a7de64ca9e2064fb2911592bb3ccb2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 18:03:53 2009 -0400
+
+ Pango: Don't fail to clear actor selection if it's clicked twice
+
+ examples/pango.js | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 04826575a22199a8199dd68582e47eb1d9c2a723
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 17:35:10 2009 -0400
+
+ ClutterPad: Use actions in preparation for keybindings.
+
+ examples/clutter-pad/clutter-pad.ui | 28 ++++++++++++++++++++++------
+ examples/clutter-pad/main.js | 8 ++++----
+ 2 files changed, 26 insertions(+), 10 deletions(-)
+
+commit 90285092de9e5ecd00fe9f7ebf41224c03abf243
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 17:22:09 2009 -0400
+
+ Examples: Update HACKING to include xml examples and the fact that clutter-pad is in its own folder
+
+ examples/HACKING | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit c0a34285933bb02785a1afea49ba3df805d2270d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 17:15:52 2009 -0400
+
+ ClutterPad: Stage default bg color is black
+
+ .../clutter-pad/examples/animated-rectangle.js | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit adc90184677655fea4ffbd7affba34d870d1b62e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 17:10:24 2009 -0400
+
+ ClutterPad: Fix ability to close file chooser dialogs without a crash
+
+ examples/clutter-pad/main.js | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit f26a9e601812e626f6928a4afee47e659ce54d52
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 16:58:13 2009 -0400
+
+ ClutterPad: Expand stage reset to include cursor state
+
+ examples/clutter-pad/main.js | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit dbfc53636a899bd6843df1b2fb26ced1625db2e1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 16:53:52 2009 -0400
+
+ ClutterPad: Don't destroy GtkBuilt-file dialogs, because they don't come back.
+
+ examples/clutter-pad/main.js | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 4e181ce4cf99f3f71a37dcc8513d4db4c0d80c88
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 16:50:18 2009 -0400
+
+ ClutterPad: Reset stage background color, default to black
+
+ examples/clutter-pad/main.js | 19 +++++++++++++++----
+ 1 files changed, 15 insertions(+), 4 deletions(-)
+
+commit fb6a17eb2b95df6c7b6091ca971e92394d783bbb
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 16:31:13 2009 -0400
+
+ Documentation: sort example list
+
+ doc/index.html | 58 ++++++++++++++++++++++++++++----------------------------
+ 1 files changed, 29 insertions(+), 29 deletions(-)
+
+commit 38b0d3c606d22e1cd7c8e569f818933adc51fbf7
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 16:26:11 2009 -0400
+
+ Documentation: ClutterPad is in its own folder; also of note, it shows off GtkBuilder significantly
+
+ doc/index.html | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1cc7555614faeb5d886a7fd25e5838e3109aace7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 15:52:59 2009 -0400
+
+ examples: Add three xml module examples. xml-dom, xml-tree, and xml-xpath.
+
+ configure.ac | 1 +
+ doc/index.html | 10 +++++++---
+ examples/Makefile.am | 1 +
+ examples/xml/sample.xml | 12 ++++++++++++
+ examples/xml/xml-dom.js | 16 ++++++++++++++++
+ examples/xml/xml-tree.js | 17 +++++++++++++++++
+ examples/xml/xml-xpath.js | 7 +++++++
+ modules/libxml/sample.xml | 12 ------------
+ 8 files changed, 61 insertions(+), 15 deletions(-)
+
+commit 04ed48bd6c83540bec53a79f0aa0f41547a0768b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 15:20:42 2009 -0400
+
+ dbus: Add support for Synchronous property reading/writing
+
+ modules/dbus/dbus.js | 30 ++++++++++++++++++++++++++++++
+ 1 files changed, 30 insertions(+), 0 deletions(-)
+
+commit 53e407002086b58c8319c11e3278007b1b17d1e7
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 11:06:44 2009 -0400
+
+ Beginnings of 0.7 changelog.
+
+ ChangeLog | 36 ++++++++++++++++++++++++++++++++++--
+ 1 files changed, 34 insertions(+), 2 deletions(-)
+
+commit 38524c70a13a736617db2380ef1d9399f895ba5b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 10:37:59 2009 -0400
+
+ ClutterPad: Extraneous imports.
+
+ examples/clutter-pad/main.js | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 86644a18a6de71ed1120be29979aff94b8892f8c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 10:36:39 2009 -0400
+
+ ClutterPad: Use GtkBuilder for open/save dialogs.
+
+ examples/clutter-pad/clutter-pad.ui | 112 +++++++++++++++++++++++++++++++++++
+ examples/clutter-pad/main.js | 30 ++++------
+ 2 files changed, 123 insertions(+), 19 deletions(-)
+
+commit 92e63f6f30d1568f0915aa5a3ee156c38d120c25
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 10:20:37 2009 -0400
+
+ ClutterPad: update Makefile to add GtkBuilder file
+
+ examples/clutter-pad/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit e892ca33c18d1a5da431f6c96857031f7c6eb1e8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 10:18:54 2009 -0400
+
+ ClutterPad: Mostly fully functional under GtkBuilder UI.
+
+ examples/clutter-pad/clutter-pad.ui | 9 +-
+ examples/clutter-pad/main.js | 258 +++++++++++------------------------
+ 2 files changed, 91 insertions(+), 176 deletions(-)
+
+commit 714fc1826211453b084b8ffc62aa834899beb4d9
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 09:46:47 2009 -0400
+
+ ClutterPad: Apparently we get a consistent segfault just trying to connect signals
+
+ examples/clutter-pad/main.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3a70e185fd9d254ccdc8610b6a000510752b8d71
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 09:46:27 2009 -0400
+
+ ClutterPad: Beginnings of GtkBuilder signal connection.
+
+ examples/clutter-pad/clutter-pad.ui | 6 +++---
+ examples/clutter-pad/main.js | 18 ++++++++++++++++++
+ 2 files changed, 21 insertions(+), 3 deletions(-)
+
+commit f470468c9a9bdbaef75eed578b7c0143edfb4dc9
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 09:39:51 2009 -0400
+
+ ClutterPad: Scrolled windows
+
+ examples/clutter-pad/clutter-pad.ui | 24 ++++++++++++++++++------
+ examples/clutter-pad/main.js | 10 +++++-----
+ 2 files changed, 23 insertions(+), 11 deletions(-)
+
+commit 9c5458ace64feff04165c46da012464d07c9f9e1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 09:33:43 2009 -0400
+
+ ClutterPad: Beginnings of GtkBuilder port.
+
+ examples/clutter-pad/Makefile.am | 11 ++
+ examples/clutter-pad/clutter-pad.js | 239 ---------------------------------
+ examples/clutter-pad/clutter-pad.ui | 121 +++++++++++++++++
+ examples/clutter-pad/main.js | 253 +++++++++++++++++++++++++++++++++++
+ 4 files changed, 385 insertions(+), 239 deletions(-)
+
+commit e308ba7e301b39cc1948dc917b5dfe337c20d9d0
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:54:36 2009 -0400
+
+ ClutterPad: Move into separate subdir, in preparation for splitting into multiple files
+
+ configure.ac | 3 +-
+ examples/COPYING | 1 +
+ examples/Makefile.am | 4 +-
+ examples/clutter-pad-examples/Makefile.am | 11 -
+ .../clutter-pad-examples/animated-rectangle.js | 18 --
+ examples/clutter-pad-examples/pink-stage.js | 7 -
+ examples/clutter-pad.js | 239 --------------------
+ examples/clutter-pad/clutter-pad.js | 239 ++++++++++++++++++++
+ examples/clutter-pad/examples/Makefile.am | 11 +
+ .../clutter-pad/examples/animated-rectangle.js | 18 ++
+ examples/clutter-pad/examples/pink-stage.js | 7 +
+ 11 files changed, 279 insertions(+), 279 deletions(-)
+
+commit d69a2d775f7093a36b181a605c8eab86fff12513
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:48:03 2009 -0400
+
+ ClutterPad: Animated rectangle example
+
+ examples/clutter-pad-examples/Makefile.am | 4 ++--
+ .../clutter-pad-examples/animated-rectangle.js | 18 ++++++++++++++++++
+ examples/clutter-pad-examples/blue-stage.js | 7 -------
+ 3 files changed, 20 insertions(+), 9 deletions(-)
+
+commit 653779521ce91faab979da1141f933739448b2ac
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:46:57 2009 -0400
+
+ ClutterPad: Update template to include GObject, so animations work
+
+ examples/clutter-pad.js | 13 +++++++------
+ 1 files changed, 7 insertions(+), 6 deletions(-)
+
+commit 5daa027c275ae0db93530b5036d0281200976cb7
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:42:02 2009 -0400
+
+ ClutterPad: Remove actors from stage each evaluation.
+
+ examples/clutter-pad.js | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit af0e191b11562e09621c9bd38d19e8618f183329
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:38:59 2009 -0400
+
+ ClutterPad: Give default "template" on New file.
+
+ examples/clutter-pad.js | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit e3d674dc7e77e5026a5fae56c14fb06d962f95ae
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:37:05 2009 -0400
+
+ ClutterPad: Only show javascript files in examples dropdown.
+
+ examples/clutter-pad.js | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 9b32bbf8ceaa5213bae8c051b633de23beddc320
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 08:29:57 2009 -0400
+
+ ClutterPad: Implement new/open/save file, redo UI, start examples collection.
+
+ configure.ac | 1 +
+ examples/Makefile.am | 1 +
+ examples/clutter-pad-examples/Makefile.am | 11 ++
+ examples/clutter-pad-examples/blue-stage.js | 7 +
+ examples/clutter-pad-examples/pink-stage.js | 7 +
+ examples/clutter-pad.js | 213 ++++++++++++++++++++++-----
+ 6 files changed, 201 insertions(+), 39 deletions(-)
+
+commit bb793acb6307d0365edd94b5a004ef8a184eaa5d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 07:36:43 2009 -0400
+
+ Clutter-Shaders: Shaders are a C, not a JavaScript
+
+ examples/clutter-shader/ShaderEditor.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit af95683ecfe2c86aa24b572ea25acd2fcf8476e0
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 06:15:04 2009 -0400
+
+ Build: Update build system to match test reorganization.
+
+ configure.ac | 3 +++
+ tests/javascript/Makefile.am | 26 +++-----------------------
+ tests/javascript/gtypes/Makefile.am | 9 +++++++++
+ tests/javascript/signals/Makefile.am | 9 +++++++++
+ tests/javascript/structs/Makefile.am | 9 +++++++++
+ 5 files changed, 33 insertions(+), 23 deletions(-)
+
+commit d48f73c4f9692ed0cde61af36d0648e9651b574e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 06:05:51 2009 -0400
+
+ Tests: run-tests script should only output filename, not full path
+
+ tests/run-tests.py | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 538606ce3bcd86a33d0b30b84ccecafee257b34d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 06:05:33 2009 -0400
+
+ Tests: Move three obvious sets of related tests into subdirectories
+
+ tests/javascript/gtype-class-init-exception.js | 23 --------------
+ tests/javascript/gtype-property-construct.js | 30 ------------------
+ tests/javascript/gtype-property.js | 31 ------------------
+ tests/javascript/gtype-signal-args.js | 29 -----------------
+ tests/javascript/gtype-signal.js | 24 --------------
+ tests/javascript/gtype-typerror.js | 17 ----------
+ tests/javascript/gtype.js | 33 --------------------
+ .../gtypes/gtype-class-init-exception.js | 23 ++++++++++++++
+ .../javascript/gtypes/gtype-property-construct.js | 30 ++++++++++++++++++
+ tests/javascript/gtypes/gtype-property.js | 31 ++++++++++++++++++
+ tests/javascript/gtypes/gtype-signal-args.js | 29 +++++++++++++++++
+ tests/javascript/gtypes/gtype-signal.js | 24 ++++++++++++++
+ tests/javascript/gtypes/gtype-typerror.js | 17 ++++++++++
+ tests/javascript/gtypes/gtype.js | 33 ++++++++++++++++++++
+ tests/javascript/signal-connect.js | 21 ------------
+ tests/javascript/signal-disconnect.js | 18 -----------
+ tests/javascript/signal-exception.js | 13 --------
+ tests/javascript/signal-expects.js | 17 ----------
+ tests/javascript/signal-invalid.js | 10 ------
+ tests/javascript/signal-nofunc.js | 15 ---------
+ tests/javascript/signal-userdata.js | 17 ----------
+ tests/javascript/signal.js | 18 -----------
+ tests/javascript/signals/signal-connect.js | 21 ++++++++++++
+ tests/javascript/signals/signal-disconnect.js | 18 +++++++++++
+ tests/javascript/signals/signal-exception.js | 13 ++++++++
+ tests/javascript/signals/signal-expects.js | 17 ++++++++++
+ tests/javascript/signals/signal-invalid.js | 10 ++++++
+ tests/javascript/signals/signal-nofunc.js | 15 +++++++++
+ tests/javascript/signals/signal-userdata.js | 17 ++++++++++
+ tests/javascript/signals/signal.js | 18 +++++++++++
+ tests/javascript/struct-constructor.js | 13 --------
+ tests/javascript/struct-enumerate.js | 13 --------
+ tests/javascript/struct-functions.js | 11 ------
+ tests/javascript/struct-nested-set.js | 18 -----------
+ tests/javascript/struct-offsets.js | 13 --------
+ tests/javascript/struct-set-member.js | 12 -------
+ tests/javascript/struct-union-enumerate.js | 22 -------------
+ tests/javascript/structs/struct-constructor.js | 13 ++++++++
+ tests/javascript/structs/struct-enumerate.js | 13 ++++++++
+ tests/javascript/structs/struct-functions.js | 11 ++++++
+ tests/javascript/structs/struct-nested-set.js | 18 +++++++++++
+ tests/javascript/structs/struct-offsets.js | 13 ++++++++
+ tests/javascript/structs/struct-set-member.js | 12 +++++++
+ tests/javascript/structs/struct-union-enumerate.js | 22 +++++++++++++
+ 44 files changed, 418 insertions(+), 418 deletions(-)
+
+commit 251445e616332d8afbe8d5fc148cb14e64c62a28
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:57:26 2009 -0400
+
+ Tests: Run tests multiple times if strange Popen error happens.
+
+ tests/run-tests.py | 67 ++++++++++++++++++++++++++++------------------------
+ 1 files changed, 36 insertions(+), 31 deletions(-)
+
+commit 36f67c22dfc97aeb92cc44dd85ce77bb64fdb79f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:49:41 2009 -0400
+
+ Clean up some C-side warnings.
+
+ libseed/seed-signals.c | 2 +-
+ modules/dbus/util/dbus.c | 5 +++--
+ modules/libxml/libxml.c | 6 +++---
+ 3 files changed, 7 insertions(+), 6 deletions(-)
+
+commit 3016e8aeeb239d9e1dec0f7f666ff07ea7c8f20f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:44:54 2009 -0400
+
+ Build: Distribute release notes.
+
+ Makefile.am | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 145ec11a38576b9711f81e03a1b1e599c330459e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:43:39 2009 -0400
+
+ Build: Distribute the overall documentation index.
+
+ doc/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 421cdce4d14493ac7fa66a73309409517b096a13
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:41:01 2009 -0400
+
+ Build: Release checker should use current version number, not 0.5
+
+ tools/check-release.sh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6b1db2daa7965f825eeb61ad7408735f35f0a9bd
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:39:04 2009 -0400
+
+ Build: Add dbus/utils to configure.ac
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 370f16deac6b1caef5bf7723bdb92aa3c6f0739d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:36:08 2009 -0400
+
+ Build: Make sure to distribute the headers in modules/dbus/util
+
+ modules/dbus/Makefile.am | 2 ++
+ modules/dbus/util/Makefile.am | 5 +++++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit e77314e8b2e9cc7c2b35477f30503f450682b98e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:33:10 2009 -0400
+
+ Build: Add various missing files to EXTRA_DIST.
+
+ doc/modules/Makefile.am | 2 +-
+ examples/clutter-shader/Makefile.am | 2 ++
+ modules/dbus/Makefile.am | 5 ++++-
+ modules/libxml/Makefile.am | 3 ++-
+ 4 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 0ae8a0f07e23de6bc7682beeb3bfeed6014e73c2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:26:20 2009 -0400
+
+ Examples: DBUS examples are no longer toplevel
+
+ examples/Makefile.am | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit c152a46536eccaf765f55be61c8f03df325e2742
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 05:24:42 2009 -0400
+
+ Documentation: Don't distribute the nonexistent seed.types file
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bbe9aefa9f45bb4f7aee19fb53d3ab7b93ab5eb5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:53:28 2009 -0400
+
+ Pango: Steal keyboard focus
+
+ examples/pango.js | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit bc7191fd2e65fbe7019830752efeb736c033c2b3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:49:58 2009 -0400
+
+ Pango: Much cleanup, commenting, etc.
+
+ examples/pango.js | 143 ++++++++++++++++++++++++++---------------------------
+ 1 files changed, 71 insertions(+), 72 deletions(-)
+
+commit 785b2e6b8041185a6a17c4a11338cb5ec2e0d013
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:26:24 2009 -0400
+
+ Pango: Consistency in naming; these are actors, not widgets.
+
+ examples/pango.js | 46 +++++++++++++++++++++++-----------------------
+ 1 files changed, 23 insertions(+), 23 deletions(-)
+
+commit a791678aff95950ede97889189f691781be22aed
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:25:10 2009 -0400
+
+ Pango: New button should be last; raise selected actor.
+
+ examples/pango.js | 12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 6d98aeafe963831c50e8afde07f52527ae5be363
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:21:55 2009 -0400
+
+ Pango: Implement delete and clear all; default intro text
+
+ examples/pango.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 files changed, 51 insertions(+), 6 deletions(-)
+
+commit 3fbd5f233f9c75ac28f7b055e4f5a90fbde287b3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 04:07:16 2009 -0400
+
+ Pango: Implement in-place editing and color selection.
+
+ examples/pango.js | 45 ++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 38 insertions(+), 7 deletions(-)
+
+commit 424b97dde4e04ebf68ac2f6078adb8ed6754158b
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 03:01:24 2009 -0400
+
+ Pango: Fix save/load with float font sizes.
+
+ examples/pango.js | 14 ++++++++------
+ 1 files changed, 8 insertions(+), 6 deletions(-)
+
+commit f256b49720591ca0333c2e55f7752988f3d11402
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:54:06 2009 -0400
+
+ Pango: Use a slider for font size.
+
+ examples/pango.js | 26 ++++++++++++++++----------
+ 1 files changed, 16 insertions(+), 10 deletions(-)
+
+commit e2caec7e71191c8bec5d06f6391774c31c7d212a
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:43:40 2009 -0400
+
+ Pango: Remove old, dead code from the first revision.
+
+ examples/pango.js | 79 -----------------------------------------------------
+ 1 files changed, 0 insertions(+), 79 deletions(-)
+
+commit b82623c80d7354985d82693a1f0c3b43beebab98
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:43:03 2009 -0400
+
+ Pango: Implement committing font face + size properties.
+
+ examples/pango.js | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 21da2baa7401ff6b34409c76c7e0fd982edf29e9
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:36:25 2009 -0400
+
+ Pango: Implement font selector and loading of font face + size.
+
+ examples/pango.js | 81 +++++++++++++++++++++++++----------------------------
+ 1 files changed, 38 insertions(+), 43 deletions(-)
+
+commit 210a41fa9729d4b141be52c47fed4e62433148da
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:27:59 2009 -0400
+
+ Pango: Implement loading/saving text property.
+
+ examples/pango.js | 20 +++++++++++++++++---
+ 1 files changed, 17 insertions(+), 3 deletions(-)
+
+commit 24c4f6e52ed021b0bccba8be0dc9072c6a3aa342
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 02:23:05 2009 -0400
+
+ Pango: Implement draggable actors.
+
+ examples/pango.js | 81 ++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 68 insertions(+), 13 deletions(-)
+
+commit 5836610f6409e7560f65106b6f73c7e642558144
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 02:18:54 2009 -0400
+
+ examples: Some cleanup to the DBus examples, shorten the code of the NetworkManager one a good bit
+
+ examples/dbus/dbus-banshee.js | 23 +++++++++++------------
+ examples/dbus/dbus-consolekit.js | 11 ++++++-----
+ examples/dbus/dbus-networkmanager.js | 29 ++++++++++++-----------------
+ 3 files changed, 29 insertions(+), 34 deletions(-)
+
+commit 21d8a683f3c3f333e997091dc382f1d1927b8df0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 02:10:17 2009 -0400
+
+ examples: Install dbus examples
+
+ examples/dbus/Makefile.am | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 9779c339d3d0943c43746f1a030de00eb737a218
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 02:09:23 2009 -0400
+
+ examples: Add a network manager dbus example
+
+ doc/index.html | 2 +
+ examples/dbus/dbus-networkmanager.js | 98 +++
+ examples/dbus/networkManagerIfaces.js | 1049 +++++++++++++++++++++++++++++++++
+ 3 files changed, 1149 insertions(+), 0 deletions(-)
+
+commit 5768cc60593e15abad22d8b0b950c824756c8e39
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 02:03:27 2009 -0400
+
+ dbus: Need to set length property on 'array' return values, or make them real arrays, but that is a task for later
+
+ modules/dbus/dbus-values.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 0c11fe066d54727da1b174ee537fe2f9e909f7c3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 01:13:19 2009 -0400
+
+ examples: Move dbus examples in to folder
+
+ configure.ac | 1 +
+ examples/Makefile.am | 3 +-
+ examples/dbus-banshee.js | 56 -------------------------------------
+ examples/dbus-consolekit.js | 57 --------------------------------------
+ examples/dbus/dbus-banshee.js | 56 +++++++++++++++++++++++++++++++++++++
+ examples/dbus/dbus-consolekit.js | 57 ++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 115 insertions(+), 115 deletions(-)
+
+commit 2d22388e318c7bb5ecd0df4f2b2d85d07bcc62a8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 01:32:42 2009 -0400
+
+ Testing: More os.path.join in run-tests.py, so tests should work on Windows
+
+ tests/run-tests.py | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c8ad62896c6729d63cd29777a50917a8d0f66a70
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 01:28:06 2009 -0400
+
+ Testing: Test script should recursively scan javascript subdir for tests, for organizational purposes.
+
+ tests/run-tests.py | 96 ++++++++++++++++++++++++++-------------------------
+ 1 files changed, 49 insertions(+), 47 deletions(-)
+
+commit 52f85a828777e932191cc0f70d325e15da9c27c2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 01:09:27 2009 -0400
+
+ xml: Bind xmlParseMemory as xml.parseString
+
+ doc/index.html | 2 +-
+ modules/libxml/libxml.c | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+), 1 deletions(-)
+
+commit e808359befd5c20292822fe5f3752bfd342faa40
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 01:03:16 2009 -0400
+
+ doc: Add libxml module to the documentation index
+
+ doc/index.html | 4 ++++
+ doc/reference/html/index.html | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit ea5486539f4db8646cc8cfeca08bf89e4ab38558
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:59:28 2009 -0400
+
+ Add URL to Seed documentation on gnome.org to docs
+
+ doc/reference/seed-docs.sgml | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f397068d94b69da227fad96530ffb8f98a1ce0f4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:57:34 2009 -0400
+
+ libseed: Add tests for getting invalid signals, and for disconnecting signals
+
+ libseed/seed-signals.c | 5 +----
+ tests/javascript/Makefile.am | 2 ++
+ tests/javascript/signal-disconnect.js | 18 ++++++++++++++++++
+ tests/javascript/signal-invalid.js | 10 ++++++++++
+ 4 files changed, 31 insertions(+), 4 deletions(-)
+
+commit 2eb16d32ebdbdcbafbe3dfd8c4c37668af6b364c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:50:27 2009 -0400
+
+ tests: Add test for connecting non functions to signals
+
+ tests/javascript/Makefile.am | 1 +
+ tests/javascript/signal-nofunc.js | 15 +++++++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 00a5865da3bdcbb3d7288fed9c97ee8d82c33216
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:47:45 2009 -0400
+
+ libseed: seed_signal_holder_get_property should return NULL if signal_name is not a signal, which will forward the get propert request to JSC
+
+ libseed/seed-signals.c | 15 +++++++++++++--
+ 1 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 52165b4fb62009e6d5835823eee6c662e26f36cb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:41:33 2009 -0400
+
+ libseed: Signal holder class should use prototypes and static functions to save memory and construction time
+
+ libseed/seed-signals.c | 30 +++++++++---------------------
+ 1 files changed, 9 insertions(+), 21 deletions(-)
+
+commit aaadfeab5191f9b70bf93d093e9eaa77917f4a24
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:38:50 2009 -0400
+
+ libseed: Implement signal disconnection
+
+ libseed/seed-signals.c | 76 +++++++++++++++++++++++++++++++++++------------
+ libseed/seed-signals.h | 12 ++++----
+ 2 files changed, 62 insertions(+), 26 deletions(-)
+
+commit 774cc2f5e705a2333cc12d8d3a550ced6c8251e3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:27:14 2009 -0400
+
+ libseed: Attempting to connect a signal to something which is not a function should throw a signal at CONNECTION time
+
+ libseed/seed-signals.c | 21 +++++++++++++++++++++
+ 1 files changed, 21 insertions(+), 0 deletions(-)
+
+commit 417207799fddecc82a3206d0956fac66b5f93ad3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 13 00:19:42 2009 -0400
+
+ Reorganize documentation some more, add a new section for SeedContext, add some more functions, etc...
+
+ doc/reference/html/index.html | 3 +
+ doc/reference/seed-docs.sgml | 1 +
+ doc/reference/seed-sections.txt | 36 +++++++++-----
+ doc/reference/tmpl/seed-unused.sgml | 48 ++++++++++++++++++
+ doc/reference/tmpl/seed.sgml | 90 -----------------------------------
+ 5 files changed, 75 insertions(+), 103 deletions(-)
+
+commit b5091d847bd043d0f8fd9991865413d55e212e0c
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Wed May 13 00:12:29 2009 -0400
+
+ Clutter-Shader: More or less a rewrite.
+
+ Now with more GObject, a picture of Bob of the correct size (smaller tarball, too), much cleaner overall. No more unused tab view, etc.
+
+ examples/clutter-shader/ShaderEditor.js | 48 ++++++++++++++++++
+ examples/clutter-shader/ShaderView.js | 81 +++++++++++++++++--------------
+ examples/clutter-shader/bob.jpg | Bin 59229 -> 26580 bytes
+ examples/clutter-shader/default.glsl | 2 +-
+ examples/clutter-shader/main.js | 51 +++++++-------------
+ 5 files changed, 110 insertions(+), 72 deletions(-)
+
+commit 0b632e6a2252658aa7e64e1518856c606b1b2a2b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 22:15:22 2009 -0400
+
+ doc: Clean up the GTK-doc a lot, split things in to chapters, etc...
+
+ doc/reference/html/index.html | 20 ++-
+ doc/reference/seed-docs.sgml | 11 +-
+ doc/reference/seed-sections.txt | 73 +++++----
+ doc/reference/tmpl/seed.sgml | 311 ---------------------------------------
+ 4 files changed, 64 insertions(+), 351 deletions(-)
+
+commit 693b6d3f7ce2703ad36a743c0c8d5c67d6402ce2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 21:57:53 2009 -0400
+
+ doc: Some reorganization of seed-sections.txt
+
+ doc/reference/seed-sections.txt | 12 +++++
+ doc/reference/tmpl/seed.sgml | 94 +++++++++++++++++++++++++++++++++++++++
+ libseed/seed-api.c | 2 +-
+ 3 files changed, 107 insertions(+), 1 deletions(-)
+
+commit 93abfdf3ce803bc04d0ad92d6a86706546f606c3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 21:47:06 2009 -0400
+
+ docs: Fix GTK-doc build by not passing --rebuild-types to gtkdoc-scan
+
+ doc/reference/Makefile.am | 6 +++---
+ doc/reference/tmpl/seed.sgml | 1 +
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 4d24a1b844bbcd887f0366e971b450528bc869c8
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 21:36:04 2009 -0400
+
+ libseed: Document the API additions since last release
+
+ libseed/seed-api.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 47 insertions(+), 0 deletions(-)
+
+commit d72d301298c0b2e74fea7dcb25bf55efbc1c966c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 15:15:00 2009 -0400
+
+ xml: Implement node.getAttribute
+
+ modules/libxml/xml.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 8185b18125b663a67ec7b345c5c7de2de27144d1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 15:12:15 2009 -0400
+
+ xml: Implement node.getElementsByTagName
+
+ modules/libxml/xml.js | 13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+commit bb30aa1ad3847b0254b01e18fa83660ef4bbc20d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 15:04:31 2009 -0400
+
+ xml: Expose xml._nodeProto
+
+ modules/libxml/libxml.c | 13 +++++++++++--
+ 1 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 14d0cb1adb24c6115d6e49224002bb6552ed56ea
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 14:55:30 2009 -0400
+
+ libseed: Add seed_object_get_prototype to the public API
+
+ libseed/seed-api.c | 6 ++++++
+ libseed/seed.h | 3 +++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit e5b873cc20187421bc2ccd6020c97ff5748e2960
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 14:52:39 2009 -0400
+
+ xml: Add an xml.js extension which will implement things like getElementsByTagName, etc...
+
+ modules/libxml/Makefile.am | 3 +++
+ modules/libxml/libxml.c | 3 +++
+ modules/libxml/xml.js | 1 +
+ 3 files changed, 7 insertions(+), 0 deletions(-)
+
+commit f74c53673542ebb8fdf0f803cfc3a241d2c28e63
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 13:02:24 2009 -0400
+
+ XPathContext objects should keep their respective XMLDocument object alive
+
+ modules/libxml/libxml.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 4bf65a4d18a7b62a5112b41afe7f71cd8ef794a2
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 04:24:57 2009 -0400
+
+ Update examples' Makefile.am, sort it, etc.
+
+ examples/Makefile.am | 86 ++++++++++++++++++++++++++------------------------
+ 1 files changed, 45 insertions(+), 41 deletions(-)
+
+commit 7e294570b577b125eedd0385f69e067ea514d869
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 04:19:56 2009 -0400
+
+ Another %d->%zd size_t fix.
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5e4af4250c36c4505b0e3f14082b5918ae4b10a1
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 04:16:38 2009 -0400
+
+ Clutter-Cogl: Beginnings of a 0.9 port.
+
+ Unfortunately, we don't seem to have cogl_set_source_color*, so it doesn't work yet.
+
+ examples/clutter-cogl-0.8.js | 126 ++++++++++++++++++++++++++++++++++++++++++
+ examples/clutter-cogl-0.9.js | 109 ++++++++++++++++++++++++++++++++++++
+ examples/clutter-cogl.js | 126 ------------------------------------------
+ 3 files changed, 235 insertions(+), 126 deletions(-)
+
+commit 01299d7014a57296215c358b147bb91e0a78413f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 03:43:22 2009 -0400
+
+ examples: DBus-consolekit example should still use async calls
+
+ examples/dbus-consolekit.js | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 8c8d7f54ee37f8bdfef49f6f8bf20b59e01d8057
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 03:42:10 2009 -0400
+
+ DBus: Add support for synchronous calls
+
+ examples/dbus-consolekit.js | 8 +------
+ modules/dbus/dbus.js | 51 +++++++++++++++++++++++++++++++++++++++++++
+ modules/dbus/module.c | 10 +++++---
+ 3 files changed, 58 insertions(+), 11 deletions(-)
+
+commit d87053c6267b6a61a7702a90fb0be15dc3542a49
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 03:27:15 2009 -0400
+
+ Examples: GObject subclass' init function no longer takes 'klass' argument
+
+ examples/browser/BrowserStatusbar.js | 2 +-
+ examples/browser/BrowserTab.js | 2 +-
+ examples/browser/BrowserToolbar.js | 2 +-
+ examples/browser/BrowserView.js | 2 +-
+ examples/browser/TabbedBrowser.js | 2 +-
+ examples/n-oscillator.js | 2 +-
+ examples/pango.js | 8 ++++----
+ examples/pong/pong.js | 6 +++---
+ examples/same-seed/board.js | 2 +-
+ examples/same-seed/light.js | 2 +-
+ examples/same-seed/score.js | 2 +-
+ 11 files changed, 16 insertions(+), 16 deletions(-)
+
+commit 483918bc6a63d150e1fc33cf4bc49bb436661e43
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 03:20:16 2009 -0400
+
+ xml: XPath works
+
+ modules/libxml/libxml.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 46 insertions(+), 1 deletions(-)
+
+commit 7a8592c6f74d40e92b38ba9d6f0c18822bfea1d7
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 03:15:42 2009 -0400
+
+ Browser: It makes more sense to determine preferences in the preferences file.
+
+ examples/browser/BrowserSettings.js | 9 +++++++++
+ examples/browser/main.js | 9 ---------
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+commit bc9747fdc9774e481814d48ed438640fa05c53f4
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 03:09:56 2009 -0400
+
+ N-Oscillator: Use float property, not int. Breaking our chord!
+
+ examples/n-oscillator.js | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit acc576b5e2568ad862b5b0483f8872b0349177e6
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 03:04:25 2009 -0400
+
+ Update copying file (LO doesn't live here anymore)
+
+ examples/COPYING | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit dfcf32149db007b75eb22aa49363243394a5c0c3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 03:03:21 2009 -0400
+
+ Update HACKING file to be consistent with current state of examples
+
+ examples/HACKING | 13 +++++++++++--
+ 1 files changed, 11 insertions(+), 2 deletions(-)
+
+commit c22a796a09fb43b0fcab46c7997b40a4a8e68da3
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 02:59:19 2009 -0400
+
+ GtkTextView: Don't forget to quit when the window is closed.
+
+ examples/gtktextview.js | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 375666499901018c3ffd679626f9b36c591f97ac
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Tue May 12 02:49:42 2009 -0400
+
+ N-Oscillator: Rewrite, with just one global pipeline.
+
+ examples/n-oscillator.js | 160 +++++++++++++++++++++++++--------------------
+ 1 files changed, 89 insertions(+), 71 deletions(-)
+
+commit 4fffcc242989f088c599aefd20938f0c048a6421
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 02:45:00 2009 -0400
+
+ xml: Move xpathNewContext to XMLDocument class. Also add XMLXPathContext.eval
+
+ modules/libxml/libxml.c | 56 +++++++++++++++++++++++++++++++---------------
+ 1 files changed, 38 insertions(+), 18 deletions(-)
+
+commit 2c4abd31f3820b07fdd3d6e79404b5254923bfe0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 02:35:33 2009 -0400
+
+ xml: Add XMLXPathObj class
+
+ modules/libxml/libxml.c | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 74567373ddf0ea586d514e11ef924b4d5ad19ffd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 02:31:43 2009 -0400
+
+ xml: Implement xml.xpathNewContext
+
+ modules/libxml/libxml.c | 51 +++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 49 insertions(+), 2 deletions(-)
+
+commit 0d3c66d7dd64834620483d8f505e006d31e9e5e2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 02:02:18 2009 -0400
+
+ Add some attributes to the test XML file
+
+ modules/libxml/libxml.c | 2 +-
+ modules/libxml/sample.xml | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 573b53ac94907e010a0746269ac0a42018c68837
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 01:57:05 2009 -0400
+
+ xml: Implement XML attributes
+
+ modules/libxml/libxml.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 55 insertions(+), 0 deletions(-)
+
+commit 224a63b36fde6776aa49e62fe2aabd667aa9916a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 00:24:19 2009 -0400
+
+ xml: Insure that an xmlDocPtr wrapper stays around as long as any of it's xmlNodePtr children
+
+ modules/libxml/libxml.c | 12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit bc84a7badd50e460512a4f37d86bf1379d8fb88a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 00:18:35 2009 -0400
+
+ xml: Fix a crash with not zeroing node privates. Implement the remaining accessors for simple xmlnode/docptr manipulation. and remove some code duplication between node/doc
+
+ modules/libxml/libxml.c | 60 +++++++++++++++++++++++++++++++++++-----------
+ 1 files changed, 45 insertions(+), 15 deletions(-)
+
+commit 12eae07b7395df34ace9064befac1df0683e51dd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 12 00:06:25 2009 -0400
+
+ xml: node.children should only be the first child, not an array
+
+ modules/libxml/libxml.c | 35 +++++------------------------------
+ 1 files changed, 5 insertions(+), 30 deletions(-)
+
+commit 306e4f489245fc016c87ce916dadff563bed5ecf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 23:58:30 2009 -0400
+
+ XML module is pretty usable now for basic DOM navigation. Mirrors the python API to a large extent
+
+ modules/libxml/libxml.c | 210 +++++++++++++++++++++++++++++++++++++++++++--
+ modules/libxml/sample.xml | 12 +++
+ 2 files changed, 214 insertions(+), 8 deletions(-)
+
+commit 35574121acf7e15190004b78bc51ff78f8e75c94
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 23:22:48 2009 -0400
+
+ Implement a skeleton XMLDocument class and xml.parseFile
+
+ modules/libxml/Makefile.am | 4 ++-
+ modules/libxml/libxml.c | 84 ++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 84 insertions(+), 4 deletions(-)
+
+commit 21d38589febfa4d6007cf7ddf9978d0ee43df05a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 23:08:26 2009 -0400
+
+ Initial commit of libxml module
+
+ configure.ac | 18 ++++++++++++++++++
+ libseed/seed-builtins.c | 6 +++---
+ modules/Makefile.am | 2 +-
+ modules/libxml/Makefile.am | 25 +++++++++++++++++++++++++
+ modules/libxml/libxml.c | 8 ++++++++
+ tests/javascript/printprint.js | 2 +-
+ 6 files changed, 56 insertions(+), 5 deletions(-)
+
+commit 8d93fc2dc3b546e15b4a7254bb75dd560e452abb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 21:21:18 2009 -0400
+
+ Add dbus2js.py helper script (from hp) for generating JavaScript interface descriptions from introspection XML
+
+ modules/dbus/Makefile.am | 2 +
+ modules/dbus/dbus2js.py | 218 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 220 insertions(+), 0 deletions(-)
+
+commit f0b3c86a4293162e33c3e645828acd88cb31254a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 20:13:33 2009 -0400
+
+ Update init method calls in examples
+
+ examples/accelgroup.js | 2 +-
+ examples/actions.js | 2 +-
+ examples/browser/main.js | 2 +-
+ examples/calculator.js | 2 +-
+ examples/clutter-0.8.js | 2 +-
+ examples/clutter-cairo.js | 2 +-
+ examples/clutter-pad.js | 4 ++--
+ examples/clutter-shader/main.js | 4 ++--
+ examples/clutter-transitions/main.js | 2 +-
+ examples/gconf.js | 2 +-
+ examples/gtkplug.js | 4 ++--
+ examples/gtktreeview.js | 2 +-
+ examples/json-packing.js | 2 +-
+ examples/n-oscillator.js | 4 ++--
+ examples/notify-test.js | 2 +-
+ examples/pango.js | 4 ++--
+ examples/pong/pong.js | 2 +-
+ examples/poppler.js | 2 +-
+ examples/same-seed/main.js | 6 +++---
+ examples/threaded-repl.js | 2 +-
+ examples/twitter/twitter.js | 2 +-
+ examples/video.js | 4 ++--
+ examples/vte-test.js | 2 +-
+ 23 files changed, 31 insertions(+), 31 deletions(-)
+
+commit 1e1d075988f281af3240c769e414a6b1c9a51b5d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 20:11:33 2009 -0400
+
+ Replace .init(null, null) with .init(Seed.argv) in tests
+
+ tests/javascript/array-gtype.js | 2 +-
+ tests/javascript/closure-finalization.js | 2 +-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/constructor-args.js | 2 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/gdk-event.js | 2 +-
+ tests/javascript/gobject-scope.js | 2 +-
+ tests/javascript/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtype-property-construct.js | 2 +-
+ tests/javascript/gtype-property.js | 2 +-
+ tests/javascript/gtype-signal-args.js | 2 +-
+ tests/javascript/gtype-signal.js | 2 +-
+ tests/javascript/gtype.js | 2 +-
+ tests/javascript/gvalue-argument.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 2 +-
+ tests/javascript/list-test.js | 2 +-
+ tests/javascript/native-closure-exception.js | 2 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/property-benchmark.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/signal-connect.js | 2 +-
+ tests/javascript/signal-exception.js | 2 +-
+ tests/javascript/signal-expects.js | 2 +-
+ tests/javascript/signal-userdata.js | 2 +-
+ tests/javascript/signal.js | 2 +-
+ tests/javascript/struct-functions.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ 30 files changed, 30 insertions(+), 30 deletions(-)
+
+commit 73c585297248c8254bce3c0417228f788960a166
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 20:07:41 2009 -0400
+
+ Implement the ability to pass Seed.argv to init methods
+
+ examples/clutter-0.9.js | 2 +-
+ examples/clutter-cogl.js | 2 +-
+ examples/repl.js | 5 ++-
+ libseed/seed-builtins.c | 4 --
+ libseed/seed-builtins.h | 7 ++++
+ libseed/seed-engine.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.h | 1 +
+ libseed/seed-importer.c | 14 +++++++--
+ libseed/seed-types.c | 1 +
+ 9 files changed, 98 insertions(+), 11 deletions(-)
+
+commit 4d5fa622d9eb6c9dfd4296adff4c8018aae6a4f5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 18:29:14 2009 -0400
+
+ Add ConsoleKit DBus example
+
+ doc/index.html | 3 +-
+ examples/Makefile.am | 2 +
+ examples/dbus-consolekit.js | 57 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 61 insertions(+), 1 deletions(-)
+
+commit 1652795a8f07eb6551b47ae2fe4e486688159fdf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 18:11:13 2009 -0400
+
+ libseed: Update signal marshaller to use the new machinery for warning about exceptions in closures. Also update test.
+
+ libseed/seed-signals.c | 7 ++-----
+ tests/javascript/signal-exception.js | 2 +-
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+commit d48988b558f4bfe0e2eb700eac3dce2ec31653ae
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 18:06:47 2009 -0400
+
+ DBus: Implement conversion of DBus errors to JavaScript exceptions in async call replies
+
+ modules/dbus/module.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit d920decdb335095cc9a5073df03f60c3253a8276
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 18:02:54 2009 -0400
+
+ Update closure exception warning to make use of description field
+
+ libseed/seed-closure.c | 2 +-
+ modules/dbus/module.c | 3 +--
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 5d2b56fbe889bcb31b63a9ffce7a725ca432add3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:58:37 2009 -0400
+
+ Change DBus module to use the new API
+
+ modules/dbus/module.c | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 72c991b5f191b6d5ae1d75936a87217292012ca6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:55:26 2009 -0400
+
+ Change seed_make_gclosure to seed_closure_new in the API and add a description parameter. Change calls in libseed to use the new function
+
+ libseed/seed-closure.c | 7 ++++++-
+ libseed/seed-closure.h | 10 +++++-----
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-types.c | 2 +-
+ libseed/seed.h | 7 ++++---
+ 5 files changed, 17 insertions(+), 11 deletions(-)
+
+commit 5158c61ab6ca40a06c765ca03fcd540708c0e709
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:50:52 2009 -0400
+
+ Warnings for async callbacks in DBus module
+
+ modules/dbus/dbus.js | 3 +--
+ modules/dbus/module.c | 3 +++
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit a2363a8f63ec5f6351cac5a420a2cab3c13d0190
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:44:48 2009 -0400
+
+ Implement seed_closure_warn_exception, for dealing with unhandled exceptions in closures.
+
+ doc/reference/Makefile.am | 2 +-
+ libseed/seed-closure.c | 17 +++++++++++++++++
+ libseed/seed-closure.h | 5 +++++
+ libseed/seed.h | 3 +++
+ 4 files changed, 26 insertions(+), 1 deletions(-)
+
+commit abc5094ea9a221b954e04e1051266f530c62c492
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:24:44 2009 -0400
+
+ Some style updates to documentation
+
+ doc/index.html | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 14e421156e46158f573fe3fe5be1226f847c5ce0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:22:09 2009 -0400
+
+ Update documentation index
+
+ doc/index.html | 12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 7355d21231b6944369ecb28e45927a93c31774b4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:19:22 2009 -0400
+
+ Add documentation for sandbox module
+
+ configure.ac | 1 +
+ doc/modules/Makefile.am | 4 +-
+ doc/modules/sandbox.html.in | 66 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 69 insertions(+), 2 deletions(-)
+
+commit 29c920f03a2c6e12afa8cea26bb685cbc72a8b26
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 17:01:24 2009 -0400
+
+ Update exmaple index in documentation
+
+ doc/index.html | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 0c1f7826e0c9e66b98adddbc1af8149d1fcff4c4
+Author: Johan Euphrosine <proppy@aminche.com>
+Date: Mon May 11 16:56:08 2009 -0400
+
+ Add clutter-pad example
+
+ examples/Makefile.am | 2 +
+ examples/clutter-pad.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 94 insertions(+), 0 deletions(-)
+
+commit 608572c7ceb778338d5ddca736a344636cbcc283
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 16:49:32 2009 -0400
+
+ Calling any JSCore method requiring a context from within an object finalization handler is invalid. As a result the sandbox module needs to be manually memory managed (with a destroy method). Closes BGO #582120
+
+ modules/sandbox/sandbox.c | 41 +++++++++++++++++++++++++++++++----------
+ 1 files changed, 31 insertions(+), 10 deletions(-)
+
+commit 76dcc30e895ae0472980d6fd147b9bd1c23ed548
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 16:31:37 2009 -0400
+
+ Implement conversion of GObject constructors to type as '[gobject_constructor TypeGoesHere]'
+
+ libseed/seed-engine.c | 27 +++++++++++++++++++++++++--
+ 1 files changed, 25 insertions(+), 2 deletions(-)
+
+commit d4f30551d570153a9153cb9e14821d436a7e653b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 02:20:06 2009 -0400
+
+ REPL: Assignment regex should not print assignments of the form a=('b')
+
+ examples/repl.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a214dc2f75493f8beb9d28bcc8309c8d80113797
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 02:18:15 2009 -0400
+
+ Some simplifications to the REPL assignment regex
+
+ examples/repl.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 45f6834e6b3d30ac6a64784f721f5d56f7880628
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 11 02:06:33 2009 -0400
+
+ REPL: Avoid printing out the results of simple assignments. Also do not print out things that return undefined
+
+ examples/repl.js | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit f62a02f9846886fafc13a1188b2d9e95f759ba68
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sun May 10 18:03:02 2009 -0400
+
+ Pango Example: Begin a rewrite; this time, I'll actually finish it
+
+ examples/broken/pango.js | 194 -----------------------------------
+ examples/pango.js | 252 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 252 insertions(+), 194 deletions(-)
+
+commit a538ffbda75d12f8b049f4dab7e6dcf05a36e988
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 10 03:23:13 2009 -0400
+
+ Fix GLib warning in seed_value_from_gvalue
+
+ libseed/seed-types.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit d2829e140beb0a29c2e5231369e31f6b05aa691a
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun May 10 03:13:52 2009 -0400
+
+ Same Seed: clutter-gtk seems to be broken; revert from GtkBuilder UI to pure Clutter for now
+
+ examples/same-seed/main.js | 21 ++++-----------------
+ 1 files changed, 4 insertions(+), 17 deletions(-)
+
+commit f3c2c72ff10b456681bc185bdb72b5259f64020f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 10 02:47:08 2009 -0400
+
+ Port some of the serverside dbus.js stuff away to JSCore compatible JavaScript
+
+ modules/dbus/dbus.js | 46 ++++++++++++++++++++++++----------------------
+ 1 files changed, 24 insertions(+), 22 deletions(-)
+
+commit 24556762de5e203dd4b7e268028e429bfeda8151
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 10 02:24:25 2009 -0400
+
+ Unprotecting functions in closure invalidation should use global context rather than creating a new context, because this can potentially happen at times where JSCore does not want us creating a new context (i.e. GC wrapper->remove toggle ref->invalidate closure)
+
+ libseed/seed-closure.c | 11 ++++-------
+ 1 files changed, 4 insertions(+), 7 deletions(-)
+
+commit c5989fa40def2190d2e789e48a7e92cdf2398f1f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 10 00:55:21 2009 -0400
+
+ Remove erroneous debugging statement from dbus.js
+
+ modules/dbus/dbus.js | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit eabccebae1021392f4b29a228f261906c5d1f5fc
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun May 10 00:54:14 2009 -0400
+
+ Add an example of dbus signal connection to dbus-banshee example
+
+ examples/dbus-banshee.js | 31 ++++++++++++++++++++++++++++---
+ libseed/seed-closure.c | 6 +-----
+ libseed/seed-closure.h | 3 ---
+ libseed/seed-signals.c | 2 +-
+ 4 files changed, 30 insertions(+), 12 deletions(-)
+
+commit be9e819c826e4030fa931acad305f712e28cc102
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 23:56:10 2009 -0400
+
+ Make dbus-banshee example take a file as an argument
+
+ examples/dbus-banshee.js | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 70899251e4f82a7bf7db8c5fe691425823c8b94a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 23:55:01 2009 -0400
+
+ Make dbus-banshee example take a file as an argument
+
+ examples/dbus-banshee.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a9ed1ce65a4887142a3926094147d04b2c5f6559
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 23:52:42 2009 -0400
+
+ Add dbus example
+
+ examples/Makefile.am | 2 ++
+ examples/dbus-banshee.js | 30 ++++++++++++++++++++++++++++++
+ libseed/seed-closure.c | 2 +-
+ modules/dbus/dbus-values.c | 2 +-
+ modules/dbus/dbus.js | 1 +
+ modules/dbus/module.c | 9 ++++++---
+ 6 files changed, 41 insertions(+), 5 deletions(-)
+
+commit a55824bdb0dbba65e4e2672daac470f4da79188e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 22:49:07 2009 -0400
+
+ Fix DBus module build
+
+ configure.ac | 3 +++
+ modules/dbus/Makefile.am | 1 +
+ modules/dbus/dbus.js | 3 ++-
+ modules/dbus/util/log.h | 1 +
+ 4 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 7f49aa1d1cb32273f2e0a6c4287f4a033b000ee3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 22:26:10 2009 -0400
+
+ Stop mangling this object when importer includes JS files
+
+ libseed/seed-importer.c | 6 ++--
+ modules/dbus/Makefile.am | 2 +-
+ modules/dbus/dbus.js | 47 +++++++++++++++++++++++++++++++--------------
+ modules/dbus/lang.js | 33 +++++++++----------------------
+ 4 files changed, 46 insertions(+), 42 deletions(-)
+
+commit 16309730541277e60af37dfa89576d65a2b89210
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:29:20 2009 -0400
+
+ Replace all the lets with vars in dbus.js...and cross fingers
+
+ modules/dbus/dbus.js | 136 +++++++++++++++++++++++++-------------------------
+ 1 files changed, 68 insertions(+), 68 deletions(-)
+
+commit 7db832dd1425dc2cab8124af945aca386c6fd086
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:27:19 2009 -0400
+
+ Add lang.js from GJS modules
+
+ modules/dbus/Makefile.am | 2 +-
+ modules/dbus/lang.js | 112 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 113 insertions(+), 1 deletions(-)
+
+commit de0d1f348d0a376c466abaca44bd89a60fd4554a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:26:20 2009 -0400
+
+ Add dbus.js from GJS dbus bindings
+
+ modules/dbus/Makefile.am | 3 +
+ modules/dbus/dbus.js | 584 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 587 insertions(+), 0 deletions(-)
+
+commit d0dcc4006346d40f909c6e735afe1f83a1b5ce27
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:23:00 2009 -0400
+
+ Implement the rest of the DBus Bus class
+
+ modules/dbus/module.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 44 insertions(+), 2 deletions(-)
+
+commit 09a8e2da53b73e9bef52b95972ff72d93d4c2d45
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:09:19 2009 -0400
+
+ Implement unique_name_getter and seed_js_dbus_start_service
+
+ modules/dbus/module.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 61 insertions(+), 0 deletions(-)
+
+commit 292a0d7cc05a0041bc8bd4dfc4bdd9d904b14d1c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 21:01:43 2009 -0400
+
+ Implement seed_js_dbus_watch_name
+
+ modules/dbus/module.c | 84 +++++++++++++++++++++++++++++++++++++++++++++---
+ 1 files changed, 78 insertions(+), 6 deletions(-)
+
+commit 7184e181b028be5d5bf0153a52a4ebe839b35cd5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 20:54:04 2009 -0400
+
+ Implement on_name_appeared and on_name_vanished handlers
+
+ modules/dbus/module.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 97 insertions(+), 0 deletions(-)
+
+commit 79789a3455630b630137df0ab09f7d107460adaa
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 20:49:00 2009 -0400
+
+ Implement seed_js_dbus_release_name_by_id
+
+ modules/dbus/module.c | 27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit 83d58ca210fa691631e764153a2942b2c7c9321d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:53:44 2009 -0400
+
+ Implement seed_js_dbus_acquire_name
+
+ modules/dbus/module.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 100 insertions(+), 0 deletions(-)
+
+commit 7470ca852345ed81cbab68ceccc052972ddcbdde
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:46:00 2009 -0400
+
+ Implement on_name_acquire and on_name_lost handlers
+
+ libseed/seed.h | 2 +-
+ modules/dbus/module.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 73 insertions(+), 1 deletions(-)
+
+commit 83a03a57db8bb1e37eeb13dcc64713c8676d5288
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:38:25 2009 -0400
+
+ Implement seed_js_dbus_call
+
+ modules/dbus/module.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 42 insertions(+), 0 deletions(-)
+
+commit b09ea6d2c2ffe92dcf6e171d12c92fac7a0f5118
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:33:58 2009 -0400
+
+ Implement seed_js_dbus_emit_signal
+
+ modules/dbus/module.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 69 insertions(+), 0 deletions(-)
+
+commit 5bb512ea42369fa44f84d06749425351dcae8856
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:28:27 2009 -0400
+
+ Style fixes
+
+ modules/dbus/module.c | 1090 +++++++++++++++++++++++++------------------------
+ 1 files changed, 556 insertions(+), 534 deletions(-)
+
+commit 378bda3c88600c408be2882a420fca37cf76683a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:28:13 2009 -0400
+
+ Implement seed_js_dbus_unwatch_signal
+
+ modules/dbus/module.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 62 insertions(+), 0 deletions(-)
+
+commit e8561fb04393874b8c6a9d0d13fe09608efa5158
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:23:35 2009 -0400
+
+ Implement seeD_js_dbus_unwatch_signal_by_id
+
+ modules/dbus/module.c | 26 ++++++++++++++++++++++++++
+ 1 files changed, 26 insertions(+), 0 deletions(-)
+
+commit c00ff342a790c39e4e9ac9d303f5b8d85224cf8f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:21:04 2009 -0400
+
+ Implement seed_js_dbus_watch_signal
+
+ modules/dbus/module.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 56 insertions(+), 0 deletions(-)
+
+commit e8dcfc43bdc3d934ee228253149b4f2dc869ad6e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 19:10:46 2009 -0400
+
+ Add some of the signal handler machinery to DBus module...also clean up a lot of warnings
+
+ libseed/seed-api.c | 6 +
+ libseed/seed.h | 1 +
+ modules/dbus/Makefile.am | 1 +
+ modules/dbus/dbus-values.c | 2 +-
+ modules/dbus/module.c | 225 +++++++++++++++++++++++++++++++++++++++++++-
+ 5 files changed, 233 insertions(+), 2 deletions(-)
+
+commit 091fab2d419e78b349fb2884aedb5da8fb809a15
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Sat May 9 18:59:41 2009 -0400
+
+ Same Seed: Use GtkBuilder to create the interface
+
+ Still need to get libgames-support working, but this is a start. Also, we get a segfault after clicking "new game" twice in what looks like a memory-related WebKit function (something for Robb to take a peek at, hopefully).
+
+ examples/same-seed/board.js | 10 ++++------
+ examples/same-seed/main.js | 36 +++++++++++++++++-------------------
+ 2 files changed, 21 insertions(+), 25 deletions(-)
+
+commit 6c0f1a252b81f688c2aaa838182d2ab508f9cc74
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 18:41:35 2009 -0400
+
+ Implement the async call machinery in DBus module
+
+ modules/dbus/module.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 83 insertions(+), 1 deletions(-)
+
+commit 4caea71acf3741bf40ba54734b7e121586863dc5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 18:23:45 2009 -0400
+
+ Add seed_closure_invoke_with_context to the PI
+
+ libseed/seed-closure.c | 16 +++++++++++++
+ libseed/seed-closure.h | 2 +
+ libseed/seed.h | 3 ++
+ modules/dbus/module.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 78 insertions(+), 0 deletions(-)
+
+commit 646d18065bf3681ccc7b439689e76b45a73d70c7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 18:16:01 2009 -0400
+
+ Add seed_make_gclosure, seed_closure_get_callable and seed_closure_invoke to the API
+
+ libseed/seed-closure.c | 18 ++++++++++++++++++
+ libseed/seed-closure.h | 8 +++++++-
+ libseed/seed.h | 10 ++++++++++
+ 3 files changed, 35 insertions(+), 1 deletions(-)
+
+commit ffd8b44c7f65bf7f42694818608f29ac5403dbe6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 18:07:47 2009 -0400
+
+ Rework some of the GClosure logic to remove some code duplication
+
+ libseed/seed-closure.c | 40 ++++++++++++++++++++++++++++++++--------
+ libseed/seed-closure.h | 9 +++++++--
+ libseed/seed-signals.c | 43 +++----------------------------------------
+ 3 files changed, 42 insertions(+), 50 deletions(-)
+
+commit d7f083d8f653f333501b58765ad1460db0aaff1b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 17:46:09 2009 -0400
+
+ Start implementing the method call machinery for DBus module
+
+ modules/dbus/module.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 190 insertions(+), 0 deletions(-)
+
+commit e151d404cd51a9971f40e7da6d9d33735ce97e75
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 17:05:21 2009 -0400
+
+ Add get_bus_type_from_object
+
+ modules/dbus/module.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit e84dd23d0281e48445edc3bef46d6b18edc75cd9
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 16:59:22 2009 -0400
+
+ Add missing file to DBus module
+
+ modules/dbus/util/log.h | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c175d9ae18f22eed2c147fecbdf1a6bf7be78651
+Author: Tim Horton <hortont@hortont.com>
+Date: Sat May 9 16:47:35 2009 -0400
+
+ Update readme (add dbus as an optional dependency)
+
+ README | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 25b222d0a72e424d6a8b05cb99b379a8a1ca2332
+Author: Tim Horton <hortont@hortont.com>
+Date: Sat May 9 16:45:09 2009 -0400
+
+ Update INSTALL.osx (the package name is pkgconfig, not pkg-config)
+
+ INSTALL.osx | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+commit e1ec439910def2b4d9b1d3aaca540df0311d7e55
+Author: Tim Horton <hortont@hortont.com>
+Date: Sat May 9 16:31:13 2009 -0400
+
+ More size_t printf fixes in dbus + readline modules.
+
+ modules/dbus/module.c | 2 +-
+ modules/readline/seed-readline.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d07f1d33914c0686a691de0d37279ddc8c8bda09
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 01:18:40 2009 -0400
+
+ Finish port of dbus-values.c...
+
+ libseed/seed-api.c | 9 ++
+ libseed/seed.h | 7 +-
+ modules/dbus/Makefile.am | 3 +-
+ modules/dbus/dbus-values.c | 291 ++++++++++++++++++++------------------------
+ modules/dbus/dbus-values.h | 40 ++++++
+ 5 files changed, 189 insertions(+), 161 deletions(-)
+
+commit 2a99e51d6f69e5e302fb346eb3a81cb06aa50134
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 00:31:55 2009 -0400
+
+ Work on porting dbus-values.c from GJS dbus bindings
+
+ modules/dbus/dbus-values.c | 977 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 977 insertions(+), 0 deletions(-)
+
+commit fa25ef382a87a5416527bc498f4061353dc1d87c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 8 22:27:44 2009 -0400
+
+ More work on dbus branch
+
+ libseed/seed-types.c | 18 ++++++++++++++++++
+ libseed/seed-types.h | 6 ++++++
+ libseed/seed.h | 6 ++++++
+ 3 files changed, 30 insertions(+), 0 deletions(-)
+
+commit a322be29b8dedb5cef0204f2f650a98643f3c64c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 7 23:53:29 2009 -0400
+
+ A little more DBus module
+
+ modules/dbus/Makefile.am | 15 ++++++++-----
+ modules/dbus/module.c | 50 +++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 58 insertions(+), 7 deletions(-)
+
+commit 61d504d0d9bfe939a9f2d065d0c1fd1eced9dce8
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 7 23:27:35 2009 -0400
+
+ Start implementing DBus module
+
+ configure.ac | 16 +-
+ modules/Makefile.am | 2 +-
+ modules/dbus/Makefile.am | 31 +
+ modules/dbus/module.c | 69 +
+ modules/dbus/util/dbus-private.h | 55 +
+ modules/dbus/util/dbus-proxy.c | 666 +++++++++
+ modules/dbus/util/dbus-proxy.h | 74 +
+ modules/dbus/util/dbus-signals.c | 1318 +++++++++++++++++
+ modules/dbus/util/dbus.c | 3020 ++++++++++++++++++++++++++++++++++++++
+ modules/dbus/util/dbus.h | 216 +++
+ 10 files changed, 5465 insertions(+), 2 deletions(-)
+
+commit a19712102e5390ad2cd06a62dacf3d3827b8ba17
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat May 9 00:42:34 2009 -0400
+
+ Add seed_value_get_type and seed_object_copy_property_names to the API
+
+ libseed/seed-api.c | 36 ++++++++++++++++++++++++++++++++++++
+ libseed/seed.h | 4 ++++
+ 2 files changed, 40 insertions(+), 0 deletions(-)
+
+commit 8ef42078909b9b4e5f8b915992f597f9910eea3b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 8 23:53:56 2009 -0400
+
+ Fix segfault introduced in the argv changes with NULL argv
+
+ libseed/seed-builtins.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit aadfff24c3dc2e36958e60d20ac336d527322937
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 8 23:50:32 2009 -0400
+
+ GI_TYPE_TAG_VOID functions should return undefined, not null
+
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-types.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7adb2a4e54da8347583218cc015eeede0e2550d3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri May 8 21:02:19 2009 -0400
+
+ Add seed_make_undefined to the API
+
+ libseed/seed-api.c | 6 ++++++
+ libseed/seed.h | 1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 35b5a81526f60979241c9dc07b5d97e83056cadc
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:59:57 2009 -0400
+
+ Same Seed: More single-timeline cleanup.
+
+ examples/same-seed/board.js | 12 +++++-------
+ 1 files changed, 5 insertions(+), 7 deletions(-)
+
+commit 30ebe185c571ac3669b0d0a16c5b0fbcc5d174e8
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:57:06 2009 -0400
+
+ Same Seed: More transitioning to single-timeline animation; this time, the main block animation
+
+ examples/same-seed/board.js | 18 +++++-------------
+ examples/same-seed/light.js | 6 +-----
+ 2 files changed, 6 insertions(+), 18 deletions(-)
+
+commit ba1d103653fb1a3391b967f4211619e5a9ed6148
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:52:20 2009 -0400
+
+ Same Seed: Update closing animation to use a single timeline
+
+ examples/same-seed/board.js | 6 +++++-
+ examples/same-seed/light.js | 15 ++++++---------
+ 2 files changed, 11 insertions(+), 10 deletions(-)
+
+commit fee20fc2c75f67822582d5e4f2e316608e4c0db0
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:39:03 2009 -0400
+
+ Clutter added animate_with_timelinev, so we should have an extension for that as well.
+
+ extensions/Clutter.js | 12 ++++++++++++
+ patches/clutter-animatev-annotation.patch | 11 ++++++++++-
+ 2 files changed, 22 insertions(+), 1 deletions(-)
+
+commit 5c00d2575024994bb904d988bc9b678f9879f0a5
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:21:28 2009 -0400
+
+ Fix many anonymous JS functions that just call *.main_quit to just connect to that function instead.
+
+ doc/tutorial-standalone/tutorial.html.in | 4 ++--
+ examples/clutter-0.8.js | 2 +-
+ examples/clutter-0.9.js | 2 +-
+ examples/clutter-transitions/main.js | 2 +-
+ examples/pong/pong.js | 2 +-
+ examples/same-seed/board.js | 2 +-
+ 6 files changed, 7 insertions(+), 7 deletions(-)
+
+commit e031c6b23d0fdfd486bb892ce4eb97665fc90033
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:11:33 2009 -0400
+
+ Same Seed: Fix crazy Clutter signal warnings from getting thrown.
+
+ examples/same-seed/board.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2b9c64b79ac697ee61de99620bf0010166a274a0
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 22:09:21 2009 -0400
+
+ Same Seed: Don't remove tiles until button_release_event, not button_press_event.
+
+ examples/same-seed/board.js | 4 ++--
+ examples/same-seed/light.js | 1 -
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 9f925b756e4407a0f2402b9848b628b8fe935d8c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 7 21:13:34 2009 -0400
+
+ Pango fontset example isn't really broken, but need to use C allocator for Pango.FontDescription.
+
+ examples/Makefile.am | 2 ++
+ examples/broken/pango-fontset.js | 18 ------------------
+ examples/pango-fontset.js | 16 ++++++++++++++++
+ 3 files changed, 18 insertions(+), 18 deletions(-)
+
+commit f2a8b60ba3341bb6db34704dbd7720428cadfd2d
+Author: Maciej Piechotka <uzytkownik2@gmail.com>
+Date: Thu May 7 22:41:28 2009 +0200
+
+ Added missing FFI CFLAGS and LDFLAGS. Fix AC_SUBST of FFI_LDFLAGS
+
+ configure.ac | 2 +-
+ modules/readline/Makefile.am | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit f2cec5dacdd29ffaeb635d9f33a514782b5faf99
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 7 04:19:51 2009 -0400
+
+ Improve multiline support in REPL
+
+ examples/repl.js | 20 ++++++++++----------
+ modules/readline/seed-readline.c | 31 ++++++++++++++++++++++++++++++-
+ 2 files changed, 40 insertions(+), 11 deletions(-)
+
+commit 2dc9413eff28100343395fc6bca18e8baea6ae1d
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 04:19:19 2009 -0400
+
+ Connecting signals to introspected functions by name works now; update some examples to use cleaner style for main_quit.
+
+ examples/browser/main.js | 2 +-
+ examples/calculator.js | 2 +-
+ examples/gtkplug.js | 2 +-
+ examples/poppler.js | 2 +-
+ examples/same-seed/main.js | 6 +++---
+ 5 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 04a23f6220ce350310eb99c6bdc326b81ed06e9f
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 03:55:08 2009 -0400
+
+ Update tests to API change (simple_evaluate has a exception property now).
+
+ tests/c/api-closure.c | 2 +-
+ tests/c/api-js-signal-from-c.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit e8dc85aedf5d4d2eb39c93ff05340c6fc0ff1bcb
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 03:52:52 2009 -0400
+
+ Somewhere in the build system reorg, checking for the existence of readline.h was broken. Now fixed.
+
+ configure.ac | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 0d0b521bae92a58828635511a70a77e46ce0a82e
+Author: Tim Horton <hortont@svn.gnome.org>
+Date: Thu May 7 03:43:55 2009 -0400
+
+ Use %zd instead of %d for printf with size_t types
+
+ libseed/seed-builtins.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ee0207fad1efb26fbd1d48e9a2ac811fb761dbd5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu May 7 03:50:01 2009 -0400
+
+ Make the repl use the sandbox module, so as to not expose the repl's globals inside the repl
+
+ examples/repl.js | 11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 38a11de0a90aabe236acf1d27f08bfd7ae5299c7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 21:20:16 2009 -0400
+
+ Add sandbox module, allows creation of sandboxed JS contexts, with a global object which you can manipulate. It is also possible to fill the global object with the default seed globals
+
+ libseed/seed-api.c | 8 ++-
+ libseed/seed.h | 2 +-
+ modules/sandbox/sandbox.c | 92 ++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 96 insertions(+), 6 deletions(-)
+
+commit 322b65617b1576d142d6c74e0cedbad4ccf7df99
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 21:02:13 2009 -0400
+
+ Add skeleton sandbox module
+
+ configure.ac | 1 +
+ modules/Makefile.am | 2 +-
+ modules/sandbox/Makefile.am | 22 ++++++++++++++++++++++
+ modules/sandbox/sandbox.c | 8 ++++++++
+ 4 files changed, 32 insertions(+), 1 deletions(-)
+
+commit c0ec7e6ca382506eaed3f5ea19c0aa5559111384
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 20:57:49 2009 -0400
+
+ Install the multiline repl to /seed and change the repl script in main.c to import this
+
+ examples/Makefile.am | 3 +++
+ src/main.c | 5 +----
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit ddffb0b0b8009d74ddb0e356d01fd26bf53c5893
+Author: Vincent Untz <vuntz@gnome.org>
+Date: Wed May 6 16:51:47 2009 -0400
+
+ Fill in missing return values in a few Seed canvas functions
+
+ modules/canvas/seed-canvas.c | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 5fb3cbaa7d87caecd86d96129d4edf699cb16572
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 15:19:49 2009 -0400
+
+ Newline twice should escape from multiline REPL
+
+ examples/repl.js | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 22409bd9473b099d63c7c250401f9d9df6721176
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 15:06:49 2009 -0400
+
+ Implement a more complete multiline repl using Seed.check_syntax
+
+ examples/repl.js | 25 ++++---------------------
+ modules/readline/seed-readline.c | 16 ++++++++++++++++
+ 2 files changed, 20 insertions(+), 21 deletions(-)
+
+commit a96c30066a2cc54d0e7d88cf2f9cd4e7d2254389
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed May 6 14:26:59 2009 -0400
+
+ Add beginnings of multiline editing support to REPL
+
+ examples/repl.js | 30 ++++++++++++++++++++++++++++++
+ modules/readline/seed-readline.c | 17 +++++++++++++++++
+ 2 files changed, 47 insertions(+), 0 deletions(-)
+
+commit d4a95144c71393f2d6b788658648ee7ce3715348
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue May 5 18:20:54 2009 -0400
+
+ Make a new JSCore class which wraps the argv array, so Seed.argv is always up to date
+
+ libseed/seed-builtins.c | 85 +++++++++++++++++++++++++++++++++-------------
+ 1 files changed, 61 insertions(+), 24 deletions(-)
+
+commit 9f89a9d5a063fef382e433d21089525544bac4e0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon May 4 18:39:24 2009 -0400
+
+ Distinguish between [null] and undefined in seed_Value_to_string. Format numbers with "%.15g"
+
+ libseed/seed-types.c | 9 ++++++---
+ tests/javascript/check-syntax.js | 2 +-
+ tests/javascript/everything.js | 3 ++-
+ 3 files changed, 9 insertions(+), 5 deletions(-)
+
+commit 1d3a678af7d02f917aa971e761d1a1ad4e2bbcce
+Author: Tim Horton <hortont@hortont.com>
+Date: Sat May 2 00:39:39 2009 -0400
+
+ Don't install NEWS, as we don't use it, and thus it's empty.
+
+ Makefile.am | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 9bee035c69f92087d179cd45c489d014f6d977e7
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 17:25:29 2009 -0400
+
+ Add animatev annotation patch required for Same Seed to run
+
+ patches/clutter-animatev-annotation.patch | 13 +
+ patches/clutter-animatev-with-annotation.patch | 325 ------------------------
+ patches/clutter-color-out-annotation.patch | 13 -
+ 3 files changed, 13 insertions(+), 338 deletions(-)
+
+commit 81ce36acb2039b829d130cc4a11a54b89a60a722
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 17:22:38 2009 -0400
+
+ Same Seed doesn't actually require GtkClutter
+
+ examples/same-seed/main.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 62489037e8e09cc536f204dbc558f687c61618d0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 01:10:35 2009 -0400
+
+ Style fixes in mapping documentation
+
+ doc/mapping/mapping.html.in | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 3cfd3234ce61ce746f9797618595a8395137c991
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 01:04:06 2009 -0400
+
+ Update mapping documentation to be twice as colorful, and by that I mean more consistently colorful
+
+ doc/mapping/mapping.html.in | 52 +++++++++++++++++++++---------------------
+ doc/style.css | 15 ++++++++++++
+ 2 files changed, 41 insertions(+), 26 deletions(-)
+
+commit f51bc57f17b4c8c578bacc948316574d40d5f551
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 00:40:23 2009 -0400
+
+ Some style and cleanup in tutorial code samples
+
+ doc/tutorial-standalone/1.js | 17 +++------
+ doc/tutorial-standalone/2.js | 44 +++++++++-----------------
+ doc/tutorial-standalone/3.js | 71 ++++++++++++++---------------------------
+ 3 files changed, 45 insertions(+), 87 deletions(-)
+
+commit 370906b450db44cbe74e289b57dddcb61a17a6c4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 00:35:17 2009 -0400
+
+ Update style in browser tutorial docs
+
+ doc/tutorial-standalone/tutorial.html.in | 85 ++++++++++--------------------
+ 1 files changed, 28 insertions(+), 57 deletions(-)
+
+commit c0bfbcc8e0d0ca49f73d90f5a268feb540645a5d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 00:31:12 2009 -0400
+
+ Update style in runtime documentation. Also update to use new signal installation format
+
+ doc/runtime.html.in | 67 ++++++++++++++++----------------------------------
+ 1 files changed, 22 insertions(+), 45 deletions(-)
+
+commit 862ea290ddb6c6ee8867dfe2cc8ad766b308a7ec
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 30 00:14:34 2009 -0400
+
+ Replace %Zd with %zd, and the %l in %lg is not necessary
+
+ libseed/seed-builtins.c | 10 +++++-----
+ libseed/seed-engine.c | 4 ++--
+ libseed/seed-gtype.c | 10 +++++-----
+ libseed/seed-signals.c | 6 +++---
+ libseed/seed-types.c | 2 +-
+ 5 files changed, 16 insertions(+), 16 deletions(-)
+
+commit b4ff50beb374ed4403b5cc8973580a34a8f416fd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 23:45:24 2009 -0400
+
+ Change seed_value_to_string to use %lg, and update all the tests
+
+ libseed/seed-types.c | 2 +-
+ tests/javascript/builtin-argument-length.js | 2 +-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 3 +--
+ tests/javascript/gdk-event.js | 2 +-
+ tests/javascript/gtype-property-construct.js | 2 +-
+ tests/javascript/gtype-property.js | 2 +-
+ tests/javascript/readline-bind.js | 2 +-
+ tests/javascript/readline.js | 2 +-
+ tests/javascript/signal-connect.js | 2 +-
+ tests/javascript/struct-constructor.js | 2 +-
+ tests/javascript/struct-nested-set.js | 2 +-
+ tests/javascript/struct-offsets.js | 2 +-
+ tests/javascript/struct-set-member.js | 2 +-
+ 15 files changed, 15 insertions(+), 16 deletions(-)
+
+commit ef96263eb5f2d75f665afe356ba2dcb6cbea3b08
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 17:40:02 2009 -0400
+
+ Fix some more seed_make_exception format strings
+
+ libseed/seed-exceptions.c | 2 +-
+ libseed/seed-signals.c | 34 ++++++++++++++++------------------
+ libseed/seed-types.c | 7 ++-----
+ 3 files changed, 19 insertions(+), 24 deletions(-)
+
+commit fde8b28afa4dd34d02498831eb8d203b7e1c6630
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 17:33:50 2009 -0400
+
+ Update modules to use pformat strings for exceptions
+
+ libseed/seed.h | 2 +-
+ modules/os/os.c | 4 +---
+ modules/readline/seed-readline.c | 16 ++++++----------
+ modules/sqlite/seed-sqlite.c | 3 ++-
+ 4 files changed, 10 insertions(+), 15 deletions(-)
+
+commit 49f98b91c8ac7f92b5d872268e12249ef72fc67b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 17:28:40 2009 -0400
+
+ Make seed_make_exception take a format string, and convert all the calls in libseed to use format strings rather than formatting them before calling
+
+ configure.ac | 2 +-
+ libseed/seed-builtins.c | 59 +++++++++++++++++---------------------------
+ libseed/seed-engine.c | 40 +++++++++++++----------------
+ libseed/seed-exceptions.c | 16 ++++++++++--
+ libseed/seed-exceptions.h | 5 ++-
+ libseed/seed-gtype.c | 37 +++++++++++----------------
+ libseed/seed-importer.c | 8 ++----
+ libseed/seed-structs.c | 8 ++----
+ libseed/seed.h | 2 +-
+ 9 files changed, 80 insertions(+), 97 deletions(-)
+
+commit 6804bcab53a1d632f679f9ae9f4209848ec4fccb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 13:33:35 2009 -0400
+
+ Add enum-mapping.png to Makefile
+
+ doc/mapping/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit c5dfbecd7b230206348cad0c5cbc32ac8fa2b120
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 12:36:14 2009 -0400
+
+ Add GtkTextView example to Makefile
+
+ examples/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit a3b35270ccedb9d7bd53962480e5682afd2ff524
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 11:10:40 2009 -0400
+
+ Add readline-bind to tests Makefile.am
+
+ tests/javascript/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1e3b997a15280da268c7d810127a27e25b213db0
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 29 03:34:41 2009 -0400
+
+ Removed introspect.js from Makefile, as it's been removed itself.
+
+ examples/Makefile.am | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 714b6f888c3d723bbe354a367deedb728318bc7c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 29 01:49:04 2009 -0400
+
+ Update changelog
+
+ ChangeLog | 20 +++++++
+ examples/twitter/twitter.js | 130 ++++++++++++++++++++----------------------
+ modules/os/os.c | 3 +-
+ 3 files changed, 84 insertions(+), 69 deletions(-)
+
+commit db29d4b69fdad8ed4e7b89b8f941b72746b3f2c4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 19:49:06 2009 -0400
+
+ Implement os.access and assosciated modes
+
+ modules/os/os.c | 35 ++++++++++++++++++++++++++++++++++-
+ 1 files changed, 34 insertions(+), 1 deletions(-)
+
+commit 64a30d269dfc4eda04e91f12ded7ed6627f534e1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 17:47:50 2009 -0400
+
+ Update timeout.js to include the priority argument now required for GLib.timeout_add
+
+ examples/glib/timeout.js | 6 ++----
+ 1 files changed, 2 insertions(+), 4 deletions(-)
+
+commit a73eb070cbd601a4f212ad5bc7bd90f7a1f823e6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 17:27:25 2009 -0400
+
+ Update style and imports on the OpenGL example
+
+ examples/opengl/glut-teapot.js | 41 ++--
+ examples/opengl/seed-gears.js | 396 ++++++++++++++++++-------------------
+ examples/opengl/triangle-actor.js | 34 ++--
+ libseed/seed-importer.c | 6 +-
+ 4 files changed, 233 insertions(+), 244 deletions(-)
+
+commit 33236526dca506b8e75d838682b59df3b8a7a76a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:07:53 2009 -0400
+
+ Update vte-test example style, and remove old Gtk.main_quit hack
+
+ examples/soup.js | 2 +-
+ examples/vte-test.js | 42 +++++++++++++++++++-----------------------
+ 2 files changed, 20 insertions(+), 24 deletions(-)
+
+commit 8ba45bc2f599e6c877345fb710f3fef3545e758b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:04:58 2009 -0400
+
+ Update repl example style
+
+ examples/repl.js | 9 +++------
+ 1 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 37eaa4036ca2faba6ff0eac4b103155ebb3306fb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:04:36 2009 -0400
+
+ Update notify-test example style
+
+ examples/notify-test.js | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 368bb59cc540a07d827da9678990e77486c4c219
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:04:08 2009 -0400
+
+ Update style in n-oscillator example
+
+ examples/n-oscillator.js | 131 ++++++++++++++++++++++------------------------
+ 1 files changed, 62 insertions(+), 69 deletions(-)
+
+commit 77f8791aeb4e81cd7a2c11616827cc79702514eb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:02:56 2009 -0400
+
+ Update style in ls example
+
+ examples/ls.js | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 183d310c2ca8f784ec93ef3d3d700c12aebe3a0f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:02:41 2009 -0400
+
+ Update style in json-reddit example
+
+ examples/json-reddit.js | 17 ++++++++---------
+ 1 files changed, 8 insertions(+), 9 deletions(-)
+
+commit fadefee25906b2097849416c295a8bdebdf83eb5
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:02:21 2009 -0400
+
+ Fix no longer useful Gtk.main_quit hack in json-packing.js
+
+ examples/json-packing.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d9bde09433516365d77ecaa8996e3d9150572012
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:01:48 2009 -0400
+
+ Remove introspect.js example, it is silly because we now have GIRs for GIRepository
+
+ examples/introspect.js | 11 -----------
+ 1 files changed, 0 insertions(+), 11 deletions(-)
+
+commit 6094f8ebd549d8100d1290ada625a7ac78aa05f6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 16:01:18 2009 -0400
+
+ Fix the GLib warnings in gtktreeview example
+
+ examples/gtktreeview.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 5d4f430aaad49a76ae15d0c472be6cdd78cea9c1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:59:59 2009 -0400
+
+ Update style on gtkplug example
+
+ examples/gtkplug.js | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 7833b171a4d73b863e158df8378bf2c327119c73
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:59:39 2009 -0400
+
+ Gnio server example should use new imports system
+
+ examples/Gnio-server.js | 10 ++++------
+ 1 files changed, 4 insertions(+), 6 deletions(-)
+
+commit 8cae0b1c47bf3edf47734cda44d1a949af47b946
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:59:09 2009 -0400
+
+ Gnio example should use new imports system
+
+ examples/Gnio.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit a1d0d2b62e1da482773bdafc316e1bd251b27b51
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:58:46 2009 -0400
+
+ Update gdkpixbufloader example style
+
+ examples/gdkpixbufloader.js | 34 +++++++++++++++-------------------
+ 1 files changed, 15 insertions(+), 19 deletions(-)
+
+commit b4b3440322287b6c3a9d13ae40b317b6f1840439
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:57:53 2009 -0400
+
+ GConf example should use new imports system
+
+ examples/gconf.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 99c1054062554e1a6cc66f3facff6699ff130e2a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:56:34 2009 -0400
+
+ Make clutter-cogl example work again.
+
+ Required updating the timeout_add call, which now is timeout_add_full in the gir, so requires a priority argument.
+ Also requires changing Clutter.cogl_double_to_fixed to Clutter.double_to_fixed
+
+ examples/clutter-cogl.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 65db152f10c6312384cb3d702d63e249f3c5ff3f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:52:18 2009 -0400
+
+ Update clutter-cogl example to new style...it still doesn't work
+
+ examples/clutter-cogl.js | 31 ++++++++++++-------------------
+ 1 files changed, 12 insertions(+), 19 deletions(-)
+
+commit 98b45af1c72da26f36a53d50d7ac60528f07c72d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:49:48 2009 -0400
+
+ Update clutter-cairo example to use the new imports system, and update style
+
+ examples/clutter-cairo.js | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 47ab7d271682b3e550e2723e71a5d1ddc4e428c3
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:48:18 2009 -0400
+
+ Update style in clutter-0.9 example
+
+ examples/clutter-0.9.js | 36 ++++++++++++++----------------------
+ 1 files changed, 14 insertions(+), 22 deletions(-)
+
+commit 9c87fd821c647496931a05d8a470d99936fcd76e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:46:37 2009 -0400
+
+ Update style in clutter-0.8 example
+
+ examples/clutter-0.8.js | 18 ++++++------------
+ 1 files changed, 6 insertions(+), 12 deletions(-)
+
+commit 6578ba567184c60ac2d1852e2df602cb88ccf05a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:45:17 2009 -0400
+
+ Update style in calculator example, and remove Gtk.main_quit hack
+
+ examples/calculator.js | 43 +++++++++++++++----------------------------
+ 1 files changed, 15 insertions(+), 28 deletions(-)
+
+commit 2ff2b1b858e6736093682ed01ecbb5272b7854d0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:42:18 2009 -0400
+
+ Update style in async-quine example
+
+ examples/async-quine.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 79a7a7476bb5902f85ebee05fcd2c401d206218c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:41:41 2009 -0400
+
+ Update actions example to use more reasonable indentation, drop use of with, drop the Gtk.main_quit hack that is not necessary
+
+ examples/actions.js | 98 +++++++++++++++++++++++++++-----------------------
+ 1 files changed, 53 insertions(+), 45 deletions(-)
+
+commit ee922caef45a1055f187253bb00c1613ec4b8d7b
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 15:31:59 2009 -0400
+
+ Update accelgroup example to use more...modern seed
+
+ examples/accelgroup.js | 30 +++++++++++-------------------
+ 1 files changed, 11 insertions(+), 19 deletions(-)
+
+commit 8f6084c7f2eea8db6ec3982459ffa3140bc3b7f0
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 13:41:51 2009 -0400
+
+ Clean up formatting for a lot of the examples
+
+ examples/Gnio-server.js | 24 +++---
+ examples/accelgroup.js | 30 ++++----
+ examples/actions.js | 90 +++++++++++-----------
+ examples/async-quine.js | 14 ++--
+ examples/calculator.js | 148 +++++++++++++++++-----------------
+ examples/clutter-0.8.js | 154 ++++++++++++++++++------------------
+ examples/clutter-0.9.js | 160 +++++++++++++++++++-------------------
+ examples/clutter-cogl.js | 148 +++++++++++++++++-----------------
+ examples/gdkpixbufloader.js | 38 +++++-----
+ examples/gtkplug.js | 14 ++--
+ examples/json-packing.js | 32 ++++----
+ examples/ls.js | 6 +-
+ examples/notify-test.js | 3 +-
+ examples/poppler.js | 184 +++++++++++++++++++++---------------------
+ examples/repl.js | 18 ++--
+ 15 files changed, 532 insertions(+), 531 deletions(-)
+
+commit 87cef48930ac2ce9f6b6207f82f46ddb11c0568e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 12:59:17 2009 -0400
+
+ Bump version to 0.5.5
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e51eb6abe7409440edf013031238be9b429b4581
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 12:56:53 2009 -0400
+
+ Check for O_DSYNC, O_RSYNC, O_DIRECT, and O_NOATIME as they do not exist on non GNU c library platforms
+
+ modules/os/os.c | 12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+commit f6b9ccea62a345665150609067ab004281f14c84
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 12:52:49 2009 -0400
+
+ Make OS module build conditional
+
+ configure.ac | 11 +++++++++++
+ modules/os/Makefile.am | 3 +++
+ 2 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 3c6e33e7c0d30e5b76ccb186141dba9026fbbc0e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 12:44:34 2009 -0400
+
+ Fix OS module build on OSX. OSX has a monolithic C library, and does not have pty.h
+
+ config.h.in | 3 +++
+ configure.ac | 2 ++
+ modules/os/os.c | 5 +++++
+ 3 files changed, 10 insertions(+), 0 deletions(-)
+
+commit df538f89ffe205d0757e8d1d802aead1a40a3ff8
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 28 12:34:05 2009 -0400
+
+ Fix OSX build
+
+ configure.ac | 11 ++++++---
+ examples/browser/BrowserView.js | 2 +-
+ examples/vte-test.js | 40 +++++++++++++++++++-------------------
+ 3 files changed, 28 insertions(+), 25 deletions(-)
+
+commit 8172c689e3d283496bf90a4206a09d1bb4cca5b4
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon Apr 27 23:24:07 2009 -0400
+
+ Remove Makefile.in.in from GIT, it should not be there
+
+ po/Makefile.in.in | 217 -----------------------------------------------------
+ 1 files changed, 0 insertions(+), 217 deletions(-)
+
+commit 3e9758b06cedfe00c3e0e605603f0f2bba98eb61
+Author: Maciej Piechotka <uzytkownik2@gmail.com>
+Date: Mon Apr 27 23:23:12 2009 -0400
+
+ Remove -O3 from configure.ac
+
+ configure.ac | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit e423fc593afb6c19d7c5f8841e7ee99fbb0ecb35
+Author: Maciej Piechotka <uzytkownik2@gmail.com>
+Date: Mon Apr 27 23:19:28 2009 -0400
+
+ - Move the pkg-config checks in modules from files to configure.ac
+ - Fix the ffi checks.
+ - Change -I../../ to -I@top_srcdir@ to support out-of-tree compilation
+ - Remove hard-coded -O3 optimization flag
+ - Add missing AC_AMFLAGS which is correct way of handling additional m4 di
+ - Make configure fail if required dependencies for a module are not available, instead of silently dropping it.
+ - Removed 'ugly' linking to .libs dirs in order to use libtool
+
+ Makefile.am | 2 +
+ configure.ac | 113 ++++++++++++++++------------------
+ examples/turtle/Makefile.am | 17 +++---
+ libseed/Makefile.am | 20 +++++-
+ modules/Multiprocessing/Makefile.am | 32 ++++------
+ modules/canvas/Makefile.am | 33 ++++------
+ modules/example/Makefile.am | 24 +++----
+ modules/os/Makefile.am | 31 ++++------
+ modules/readline/Makefile.am | 28 ++++-----
+ modules/sqlite/Makefile.am | 34 +++++------
+ src/Makefile.am | 32 +++++-----
+ tests/c/Makefile.am | 12 +++-
+ 12 files changed, 178 insertions(+), 200 deletions(-)
+
+commit df1ac9c5cd3bc5ba6cfe09d177419c53f9070626
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon Apr 27 17:09:50 2009 -0400
+
+ Revert "Revert "Fix checking for libffi""
+
+ This reverts commit 5d4d99016decfdf65b0cb8e973b48444e0cb2a15.
+
+ configure.ac | 11 ++++++-----
+ libseed/Makefile.am | 4 ++--
+ src/Makefile.am | 2 +-
+ 3 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 5d4d99016decfdf65b0cb8e973b48444e0cb2a15
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon Apr 27 17:09:36 2009 -0400
+
+ Revert "Fix checking for libffi"
+
+ This reverts commit 3e89e1d856f478bc9df948b79c0529c9c3b874bb.
+
+ configure.ac | 11 +++++------
+ libseed/Makefile.am | 4 ++--
+ src/Makefile.am | 2 +-
+ 3 files changed, 8 insertions(+), 9 deletions(-)
+
+commit 3e89e1d856f478bc9df948b79c0529c9c3b874bb
+Author: Maciej Piechotka <uzytkownik2@gmail.com>
+Date: Sun Apr 26 01:43:37 2009 -0400
+
+ Fix checking for libffi
+
+ configure.ac | 11 ++++++-----
+ libseed/Makefile.am | 4 ++--
+ src/Makefile.am | 2 +-
+ 3 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 20bf627becb6bad570d471e4cc891267ef92029a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 01:41:22 2009 -0400
+
+ Revert "Use FFI_LDADD instead of FFI_LIBS"
+
+ This reverts commit 0095b6d727b64bdd52a3308ff2fa33c0cb4ace6c.
+
+ configure.ac | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 0095b6d727b64bdd52a3308ff2fa33c0cb4ace6c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 01:31:57 2009 -0400
+
+ Use FFI_LDADD instead of FFI_LIBS
+
+ configure.ac | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 7abe93f67e3e8b166160860a168466f55eeb0fef
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:47:05 2009 -0400
+
+ Add an index of examples to the documentation site
+
+ doc/index.html | 77 +++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 37 insertions(+), 40 deletions(-)
+
+commit cdfc21e44d50c0a15db1ec1328dc87ba2e54c6a6
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:39:59 2009 -0400
+
+ Add an index of examples to the documentation index
+
+ doc/index.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 47 insertions(+), 0 deletions(-)
+
+commit 31afe2f2180d8bd7f39d1afe43f64e202a451293
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:23:21 2009 -0400
+
+ Update module documentation to use new imports system
+
+ doc/index.html | 2 +-
+ doc/modules/canvas.html.in | 2 +-
+ doc/modules/multiprocessing.html.in | 2 +-
+ doc/modules/readline.html.in | 2 +-
+ doc/modules/sqlite.html.in | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+commit fd11efc39826b1238b9cd5dfe96624f6455d9011
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:20:32 2009 -0400
+
+ Add the native module documentation to the documentation index
+
+ doc/index.html | 23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+commit 6c97c7604e2608105d4a48e83afd452580068bbf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:14:35 2009 -0400
+
+ Add the documentation index site to GIT
+
+ doc/index.html | 32 ++++++++++++++++++++++++++++++++
+ 1 files changed, 32 insertions(+), 0 deletions(-)
+
+commit d37e1fd27fe343c2530cef80a037241a14cfc086
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sun Apr 26 00:09:03 2009 -0400
+
+ Fix build
+
+ doc/Makefile.am | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 95a0ad67a741c1c26be0fd78124689f6b3f75860
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat Apr 25 17:14:30 2009 -0400
+
+ Fix typo in mapping documentation. Gtk.Main->Gtk.main
+
+ doc/mapping/mapping.html.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5c3ffe567c9ab2b62d06dce811df665608e5adfa
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat Apr 25 16:49:26 2009 -0400
+
+ Add a section on GObjects to the mapping documentation, covers constructors, methods and static methods, the property lookup chain, and signals
+
+ doc/mapping/mapping.html.in | 91 ++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 86 insertions(+), 5 deletions(-)
+
+commit 3289e20c12b54594434c9614d46bf17ec92821b1
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat Apr 25 16:05:29 2009 -0400
+
+ Add a section on structs and unions to the mapping documentation. Also discuss constants briefly, and make a note on enum validation.
+
+ doc/mapping/mapping.html.in | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 226b085ee068994bc7f3ecbd28f38d5c3dbffe17
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat Apr 25 15:53:27 2009 -0400
+
+ Properly map named constructors of structs, i.e. soup_date_new_from_now now maps to 'new Soup.Date.from_now' instead of 'Soup.Date.new_from_now'
+
+ libseed/seed-importer.c | 16 ++++++-
+ m4/intltool.m4 | 64 +++++++++++++++---------
+ m4/libtool.m4 | 128 ++++++++++++++++++++++++++++++++---------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 ++++----
+ m4/ltversion.m4 | 10 ++--
+ po/Makefile.in.in | 4 +-
+ 7 files changed, 161 insertions(+), 83 deletions(-)
+
+commit 066b57ac90721617763d75f7d7d815d86bf25796
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Sat Apr 25 15:08:40 2009 -0400
+
+ Start writing the mapping documentation
+
+ configure.ac | 4 ++-
+ doc/Makefile.am | 2 +-
+ doc/mapping.html.in | 27 -----------------
+ doc/mapping/Makefile.am | 10 ++++++
+ doc/mapping/enum-mapping.png | Bin 0 -> 10652 bytes
+ doc/mapping/mapping.html.in | 64 ++++++++++++++++++++++++++++++++++++++++++
+ doc/style.css | 13 ++++++++-
+ 7 files changed, 90 insertions(+), 30 deletions(-)
+
+commit 2eccde091bb5df84ff1da1b4d2bd0a9c633f188c
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Apr 24 19:57:28 2009 -0400
+
+ Add DOAP file describing Seed.
+
+ seed.doap | 25 +++++++++++++++++++++++++
+ 1 files changed, 25 insertions(+), 0 deletions(-)
+
+commit f19fd914c49badbadfdd48010e666345b0073717
+Author: Tim Horton <hortont@hortont.com>
+Date: Fri Apr 24 05:28:56 2009 -0400
+
+ Update transitions to work
+
+ examples/browser/main.js | 4 -
+ examples/clutter-transitions/main.js | 7 +
+ examples/clutter-transitions/transition-library.js | 3 -
+ examples/same-seed/main.js | 2 +-
+ m4/intltool.m4 | 64 ++++------
+ m4/libtool.m4 | 128 ++++++--------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 ++--
+ m4/ltversion.m4 | 10 +-
+ po/Makefile.in.in | 4 +-
+ 10 files changed, 90 insertions(+), 154 deletions(-)
+
+commit d3bc63792c10addeef813d7c2deabcd2f2bc322d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 24 03:16:57 2009 -0400
+
+ Fix small typo in GtkTextView example
+
+ examples/gtktextview.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8e97448f5a04b235457541407f49ec5a7f5065aa
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 24 03:02:52 2009 -0400
+
+ Add a GtkTextView example
+
+ examples/gtktextview.js | 19 +++++++++++++++++++
+ 1 files changed, 19 insertions(+), 0 deletions(-)
+
+commit b091b1bbd4ccbd36614ae661e258e2a94e307090
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 23:17:14 2009 -0400
+
+ Switch signal definition to use array of "signals" on GType definition.
+
+ libseed/seed-gtype.c | 85 ++++++++++++++++++++++++----
+ tests/javascript/Makefile.am | 1 -
+ tests/javascript/gtype-signal-args.js | 14 +---
+ tests/javascript/gtype-signal-exception.js | 42 --------------
+ tests/javascript/gtype-signal.js | 18 +-----
+ 5 files changed, 82 insertions(+), 78 deletions(-)
+
+commit c582e4ccc37b7bbf905e7cf56f4130bd1ce4911c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 17:41:09 2009 -0400
+
+ Update c-module.js test to use the new imports system
+
+ tests/javascript/c-module.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2ebc9e50f8549062f9a1895fa26997463f6078af
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 17:40:35 2009 -0400
+
+ Rename readline_bind test to readline-bind, to keep convention
+
+ tests/javascript/readline-bind.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit d0113b18407552a044d4163bdaf0079575bb0afd
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 17:39:35 2009 -0400
+
+ Add gtype-property-construct.js test. Tests installing construction properties
+
+ libseed/seed-gtype.c | 35 ++++++++++++++++++++++++++
+ tests/javascript/Makefile.am | 1 +
+ tests/javascript/gtype-property-construct.js | 30 ++++++++++++++++++++++
+ tests/javascript/gtype-property.js | 5 +--
+ tests/javascript/readline_bind.js | 9 ------
+ 5 files changed, 68 insertions(+), 12 deletions(-)
+
+commit d2fe9686717db07354797ffcc6da70d384f8ff34
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 02:14:50 2009 -0400
+
+ Switch GType creation to have "init" mean "constructor" not "instance init", this is clearly a more useful concept, as construction properties will have been set.
+
+ This might break some compatibility
+
+ libseed/seed-gtype.c | 73 ++++++++++++++++++++++++++++---------------------
+ 1 files changed, 42 insertions(+), 31 deletions(-)
+
+commit 3b3374ad0b2abdb9d14a8f7ffba3d0297eb014c9
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 23 01:54:12 2009 -0400
+
+ Reimplement class_init closures without using FFI.
+
+ libseed/seed-gtype.c | 160 ++++++++++++++++++++++---------------------------
+ 1 files changed, 72 insertions(+), 88 deletions(-)
+
+commit 5811e74fbe5854d63ac9e3679e3b907685532ecf
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 22 23:19:56 2009 -0400
+
+ Rewrite some of the seed-gtype logic to skip ffi for instance_init closure.
+
+ Instead of creating an ffi closure for each GType's instance init closure. We simply store the function as qdata on the GType. This saves memory and improves performance. It also makes it easier in the future to implement memory management of finalizing GTypes.
+
+ libseed/seed-gtype.c | 102 +++++++++++++++++------------------------
+ modules/readline/Makefile.am | 4 +-
+ 2 files changed, 43 insertions(+), 63 deletions(-)
+
+commit 9dc6b8b758bb758af1135ad29b0d6c76f107aa0e
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Wed Apr 22 00:46:08 2009 -0400
+
+ Improve closure memory management
+
+ examples/clutter-0.8.js | 35 ++++++++++++++++++-----------------
+ libseed/seed-closure.c | 2 ++
+ 2 files changed, 20 insertions(+), 17 deletions(-)
+
+commit 3d696e4cc8824640cd1f9fa7b051d03036db1da2
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 21 18:34:44 2009 -0400
+
+ Fix possible leak of signal user data
+
+ libseed/seed-signals.c | 10 +++-------
+ 1 files changed, 3 insertions(+), 7 deletions(-)
+
+commit 855f10ff740db8122ff55d0c8df61bc67457f373
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 21 18:33:10 2009 -0400
+
+ Remove double GC protection of functions connected to signals
+
+ libseed/seed-signals.c | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 76c2d6ddc3c7ef42b36bab610088f64f11230c00
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 21 18:29:27 2009 -0400
+
+ Revert "Importer should only include files as JavaScript files if they end in .js"
+
+ This reverts commit a85c0360d45d82def1b164ba6e329f5e771dc1a8.
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a85c0360d45d82def1b164ba6e329f5e771dc1a8
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 21 18:13:39 2009 -0400
+
+ Importer should only include files as JavaScript files if they end in .js
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4aaba3b31dd04ca185b6db3caa140159d08d0cbb
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Tue Apr 21 18:08:33 2009 -0400
+
+ Fix leak in imports, relating to the importer directory objects
+
+ libseed/seed-importer.c | 48 +++++++---------------------------------------
+ 1 files changed, 8 insertions(+), 40 deletions(-)
+
+commit d04f6885c3ba19cc2aea20219cf55668192f3aec
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Mon Apr 20 01:19:36 2009 -0400
+
+ Implement imports.Directory constructor
+
+ libseed/seed-importer.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+commit bc1421da515e6f504945cd5ec103f31286fd632f
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 20:51:32 2009 -0400
+
+ Remove the deprecated Seed.get/set include path
+
+ libseed/seed-builtins.c | 56 -----------------------------------------------
+ 1 files changed, 0 insertions(+), 56 deletions(-)
+
+commit d995a4bbe5fc55d42af5ac30953ef9dc794ea8ee
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 20:50:01 2009 -0400
+
+ Add seed_prepare_global_context to the API
+
+ libseed/seed.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 8ccbaefbd86a0cac6d06b2b580bde06240e8983a
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 19:59:52 2009 -0400
+
+ Clean up some warnings
+
+ libseed/Makefile.am | 2 +-
+ libseed/seed-engine.c | 26 --------------------------
+ libseed/seed-gtype.c | 3 +--
+ libseed/seed-importer.c | 10 +++++-----
+ libseed/seed-signals.c | 3 ---
+ 5 files changed, 7 insertions(+), 37 deletions(-)
+
+commit ee8be847da0105a447de678d3e0f1c53051d7e43
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 19:55:46 2009 -0400
+
+ Reimplement Seed.import_namespace in terms of the new system, it's still deprecated, but at least it works now
+
+ libseed/seed-engine.c | 261 +-----------------------------------------------
+ 1 files changed, 6 insertions(+), 255 deletions(-)
+
+commit b4adaa4bdd36f2cee652052fa56d8c5208a8302c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 14:43:15 2009 -0400
+
+ Some tutorial updates
+
+ doc/tutorial-standalone/1.js | 4 +-
+ doc/tutorial-standalone/2.js | 20 ++++++------
+ doc/tutorial-standalone/3.js | 50 +++++++++++++++---------------
+ doc/tutorial-standalone/tutorial.html.in | 10 +++---
+ 4 files changed, 42 insertions(+), 42 deletions(-)
+
+commit f64b01c0505f8ddf9a20c2bced56e0ff55fef4b8
+Author: Tim Horton <hortont424@gmail.com>
+Date: Fri Apr 17 04:13:52 2009 -0400
+
+ Workaround for strange timeline problem.
+
+ examples/clutter-transitions/main.js | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 1461d92ed7e63444c1c3baa31fa3995104af7798
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 04:06:18 2009 -0400
+
+ Fix usage of JSCore types in xternal header file
+
+ libseed/seed.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit df6af1b41e14bfc4a256880b3318a30feb2e280c
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Fri Apr 17 03:39:44 2009 -0400
+
+ Add seed_importer_set_search_path to the API
+
+ RELEASE | 7 ++++++-
+ libseed/seed-importer.c | 21 +++++++++++++++++++++
+ libseed/seed.h | 3 +++
+ 3 files changed, 30 insertions(+), 1 deletions(-)
+
+commit f5acdac571893d47309d69da8c3476eb422bf93c
+Author: Tim Horton <hortont@hortont.com>
+Date: Thu Apr 16 20:44:53 2009 -0400
+
+ Patches from Maciej Piechotka, bugs #579220 and #579221.
+
+ * Add version checking for introspection (>=0.6.3)
+ * Don't check for libffi in the wrong place
+
+ configure.ac | 8 ++++----
+ libseed/Makefile.am | 2 +-
+ src/Makefile.am | 1 +
+ 3 files changed, 6 insertions(+), 5 deletions(-)
+
+commit be6fcb043c05935eed2cd80fcf11663b63baa28d
+Author: Robert Carr <racarr@svn.gnome.org>
+Date: Thu Apr 16 14:00:52 2009 -0400
+
+ Add release notes
+
+ ChangeLog | 2 +
+ RELEASE | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 87 insertions(+), 0 deletions(-)
+
+commit 1012762ddfae9d6b33c00d7a10bb07201e499814
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:51:28 2009 -0400
+
+ Stopgap to get around the broken pipe test thing.
+
+ tests/run-tests.py | 61 +++++++++++++++++++++++++++------------------------
+ 1 files changed, 32 insertions(+), 29 deletions(-)
+
+commit 510b74c44059d7b6518356e229207750cdfc47c6
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:46:00 2009 -0400
+
+ %Zd is size_t, not %d...
+
+ modules/os/os.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 34a99f1fb4fb4e893ea3dbbd6c6578529bc9e729
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:41:32 2009 -0400
+
+ Missing INSTALL.osx and gtype-signal-args tests in tarball.
+
+ Makefile.am | 1 +
+ tests/javascript/Makefile.am | 1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 3d17524f5da326c92a296faee3e3e519d985960a
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:38:05 2009 -0400
+
+ Add them to configure.
+
+ configure.ac | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 63930876a97c2b92caada1a4bb034c34837b60c8
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:37:27 2009 -0400
+
+ Add some files that were missing from the build.
+
+ examples/Makefile.am | 130 ++++++++++++++++++++-------------------
+ examples/opengl/Makefile.am | 2 +-
+ examples/pong/Makefile.am | 19 ++++++
+ examples/same-seed/Makefile.am | 29 +++++++++
+ 4 files changed, 116 insertions(+), 64 deletions(-)
+
+commit 74c227033bf0f977f3ac20caf7be02627d388788
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 20:29:08 2009 -0400
+
+ That release-checking script I've been talking about.
+
+ tools/check-release.sh | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 38 insertions(+), 0 deletions(-)
+
+commit 4c41a2361128d672b92b2fd7ba72ec39e7716aa8
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 17:00:53 2009 -0400
+
+ Update pong example to use new imports
+
+ examples/pong/pong.js | 89 +++++++++++++++++++++++++------------------------
+ 1 files changed, 45 insertions(+), 44 deletions(-)
+
+commit 9cccb2862f009d7673bdbe61355c69742cfe6ca5
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 16:57:42 2009 -0400
+
+ Some changelog updates, bump version number
+
+ ChangeLog | 7 ++++---
+ configure.ac | 2 +-
+ doc/reference/tmpl/seed.sgml | 1 +
+ 3 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 9919c9ba25149a464912f7c4fa58e1cea87a22dd
+Merge: ada0342 621ffa1
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:45:01 2009 -0400
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit ada0342a19e0ed396e4b285c3a84740a918742b0
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:44:43 2009 -0400
+
+ Addos.ttyname os.tcsetpgrp and os.tcgetpgrp
+
+ modules/os/os.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 67 insertions(+), 2 deletions(-)
+
+commit f4ae29de47abfff57bc7897d0c76252082a29e82
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:40:27 2009 -0400
+
+ Add os.write
+
+ modules/os/os.c | 27 ++++++++++++++++++++++++++-
+ 1 files changed, 26 insertions(+), 1 deletions(-)
+
+commit e7f263321f4c91f7b6c043bdd573b82cdebaf183
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:36:03 2009 -0400
+
+ Add os.read
+
+ modules/os/os.c | 34 +++++++++++++++++++++++++++++++++-
+ 1 files changed, 33 insertions(+), 1 deletions(-)
+
+commit 266451256299166ec9c2a42523d98dc6b4d2d6dd
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:29:17 2009 -0400
+
+ Add os.openpty and os.pipe
+
+ modules/os/Makefile.am | 2 +-
+ modules/os/os.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 59 insertions(+), 2 deletions(-)
+
+commit c779c7ddd2c77e23837d371ff7d841fe6ea673b4
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 12:23:16 2009 -0400
+
+ Add os.lseek
+
+ examples/glib/timeout.js | 8 +++++---
+ modules/os/os.c | 25 ++++++++++++++++++++++++-
+ 2 files changed, 29 insertions(+), 4 deletions(-)
+
+commit 621ffa1bd2ea68e3b3b3aebf640c0db5e512a2f0
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 03:29:31 2009 -0400
+
+ Small fix.
+
+ examples/clutter-cogl.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2a8f26d886738518eefc07ca6d8966fc3a71eca0
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 02:53:40 2009 -0400
+
+ Update gitignore.
+
+ .gitignore | 19 ++++++++++++++++++-
+ 1 files changed, 18 insertions(+), 1 deletions(-)
+
+commit 4e09f555fc4149603a8edcbd8ed5f38e5b42f37c
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 02:51:31 2009 -0400
+
+ Update changelog to lots and lots of changes
+
+ ChangeLog | 15 +++++++++++++--
+ 1 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 434308df1b49763e6f99b3d78af04e3cc99b0e92
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 02:50:42 2009 -0400
+
+ Update clutter 0.9 test to new imports style and match some changes in Clutter trunk.
+
+ examples/clutter-0.9.js | 8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+commit b8b71b44c662ed3c5ff2a7004ce69895be63e938
+Merge: f4f7834 fda06cd
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 02:37:13 2009 -0400
+
+ Merge branch 'master' of git+ssh://git.gnome.org/git/seed
+
+commit f4f78342072fb272b796393287b852e72931e96f
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 02:36:53 2009 -0400
+
+ Update documentation to API changes.
+
+ doc/runtime.html.in | 75 ++++++++++++++++++++++++++++++++++++++++++---------
+ 1 files changed, 62 insertions(+), 13 deletions(-)
+
+commit fda06cd21b7e24eeb74f824f96ebd3635c955a7e
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 02:23:21 2009 -0400
+
+ Make the file passed to the seed binary available as imports.filename off the bat to prevent recursive running
+
+ libseed/seed-importer.c | 33 ++++++++++++++++++++++++++++++---
+ libseed/seed.h | 2 ++
+ src/main.c | 9 ++++++++-
+ 3 files changed, 40 insertions(+), 4 deletions(-)
+
+commit a041b37d244543f8e12de931c6d7f03b7a7564f8
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:58:11 2009 -0400
+
+ Some more tweaks to the canvas tests
+
+ modules/canvas/run-tests.js | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit ff9eaff0f3f254e6fa30c5e21728e5041a8c7207
+Merge: 5bc26b6 5cddaef
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:52:57 2009 -0400
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit 5bc26b6d16c00bc53c6038831d409d16bdb27d37
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:51:44 2009 -0400
+
+ Add os.ftruncate and os.isatty
+
+ modules/os/os.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 43 insertions(+), 1 deletions(-)
+
+commit d3b7fd4e3e65e260abacfa60f58024216823fd18
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:48:00 2009 -0400
+
+ Add os.fsync
+
+ modules/os/os.c | 22 +++++++++++++++++++++-
+ 1 files changed, 21 insertions(+), 1 deletions(-)
+
+commit 44c2e67f287118ea4e5ef2de5125902369290368
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:46:28 2009 -0400
+
+ Add os.fdatasync and os.fpathconf
+
+ modules/os/os.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 42 insertions(+), 1 deletions(-)
+
+commit 88ca63c2208ebada1399b63536067428a047114c
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Apr 15 01:39:47 2009 -0400
+
+ Add os.fchown
+
+ libseed/seed-importer.c | 2 +-
+ modules/os/os.c | 26 +++++++++++++++++++++++++-
+ 2 files changed, 26 insertions(+), 2 deletions(-)
+
+commit 5cddaef1692519895f6d22c79d21ee5cd319a324
+Author: Tim Horton <hortont@hortont.com>
+Date: Wed Apr 15 01:11:24 2009 -0400
+
+ Quiiick fixes to make Same Seed run again. However, there's an annotation missing in Clutter, so you'll have to wait some time to be able to run it yourself.
+
+ examples/same-seed/board.js | 4 +-
+ examples/same-seed/main.js | 50 +++++++++++++++++++++++++-----------------
+ 2 files changed, 32 insertions(+), 22 deletions(-)
+
+commit 1c9468574123a1b95a9d6006bbb23930e62eece4
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 23:47:51 2009 -0400
+
+ When evaluating a script in the importer, deifne the this object to be the global context of the script including the included script
+
+ examples/introspect.js | 2 +-
+ libseed/seed-importer.c | 5 +++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 8160ebadf6511b263ecd3ff15ee17f02cb21df60
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 23:08:28 2009 -0400
+
+ Shader example works with new importer now
+
+ examples/clutter-shader/ShaderView.js | 19 ++++++++++++-------
+ examples/clutter-shader/main.js | 6 ++++--
+ 2 files changed, 16 insertions(+), 9 deletions(-)
+
+commit fd0b7e567850c6399d804b8c5317ddecf2ddacd9
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 23:03:19 2009 -0400
+
+ Rough sketch of a port of the browser, could probably be reorganized a bit
+
+ examples/browser/BrowserToolbar.js | 4 +++-
+ examples/browser/BrowserView.js | 4 +++-
+ examples/browser/TabbedBrowser.js | 2 +-
+ examples/browser/main.js | 9 +++++----
+ 4 files changed, 12 insertions(+), 7 deletions(-)
+
+commit 6daf67689c20e7164fd1c5ceacbb74f6533c87ce
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 23:03:02 2009 -0400
+
+ Update importer to support mutually inclusive files
+
+ libseed/seed-importer.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 28d3161ff4cbc3dabc8649d8cde059616959641b
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 21:48:22 2009 -0400
+
+ Add os.dup, os.dup2, and os.fchmod
+
+ modules/os/os.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 66 insertions(+), 2 deletions(-)
+
+commit be051da8de46f0ed206b99159c55fd0da25548ab
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 21:40:12 2009 -0400
+
+ Add os.open and os.close
+
+ modules/os/os.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 48 insertions(+), 1 deletions(-)
+
+commit 2b119d05c22d1df34076f1ad794c5340e117134e
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 21:26:43 2009 -0400
+
+ Add definitions of all the O_* defines to the OS module
+
+ modules/os/os.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+commit 2dd8699f08cecceeecc68115797f0571a47afbd0
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 19:18:22 2009 -0400
+
+ I don't understand canvas...some more work on handling state correctly
+
+ modules/canvas/run-tests.js | 38 ++++++++++++++++++++------------------
+ modules/canvas/seed-canvas.c | 17 ++++++++---------
+ 2 files changed, 28 insertions(+), 27 deletions(-)
+
+commit 0b9938eb40741a164ebdc852a027ac049573aa45
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 16:26:01 2009 -0400
+
+ Composite type tests was testing composite types that didn't exist
+
+ modules/canvas/run-tests.js | 7 ++--
+ modules/canvas/seed-canvas.c | 63 ++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 67 insertions(+), 3 deletions(-)
+
+commit ab31fe85466d51dad60adc4b32d06f07bf5cc2e5
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 03:29:01 2009 -0400
+
+ Add tests for (unimplemented) compositing operators in seed canvas
+
+ modules/canvas/run-tests.js | 27 ++++++++++++++++++++++++++-
+ 1 files changed, 26 insertions(+), 1 deletions(-)
+
+commit ef154e7e67d4367be00157e7c530bdbdaeb7cf3d
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 03:11:52 2009 -0400
+
+ Fix type in canvas color parsing
+
+ modules/canvas/seed-canvas.c | 6 ++----
+ 1 files changed, 2 insertions(+), 4 deletions(-)
+
+commit 74bed7a4a96556d9b90299c4301ff7b335afa835
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 03:04:45 2009 -0400
+
+ seed_canvas_update_fill/stroke style should return TRUE
+
+ modules/canvas/seed-canvas.c | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 2057a7c39333fcdc3e8799d8fa2d4a3bbaddc2d9
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 01:26:04 2009 -0400
+
+ Add a feature to debug builds that checks signal connection arity
+
+ libseed/seed-signals.c | 14 ++++++++++++++
+ 1 files changed, 14 insertions(+), 0 deletions(-)
+
+commit bd4626f4ac8fa0138f4af8ec8331638f83b02988
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 14 00:51:06 2009 -0400
+
+ Protect struct and union prototypes after putting them in the hash table...fixes a crash
+
+ libseed/seed-structs.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 4f2ea965b9de235debdecd9cc408bd7e1b7bbe41
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:21:52 2009 -0400
+
+ Add os.unsetenv
+
+ modules/os/os.c | 27 ++++++++++++++++++++++++++-
+ 1 files changed, 26 insertions(+), 1 deletions(-)
+
+commit 814279e79b415c531dd4523e5bfad46dc4e527e5
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:18:23 2009 -0400
+
+ Add os.uname
+
+ modules/os/os.c | 33 ++++++++++++++++++++++++++++++++-
+ 1 files changed, 32 insertions(+), 1 deletions(-)
+
+commit 3a7c83541409ba021036639d7d7f7c8bffd1ed7a
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:13:20 2009 -0400
+
+ Add os.umask
+
+ modules/os/os.c | 24 +++++++++++++++++++++++-
+ 1 files changed, 23 insertions(+), 1 deletions(-)
+
+commit 99fa2d1edf139fb22612ea289119dcf91fac5bca
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:10:02 2009 -0400
+
+ Add os.strerror
+
+ modules/os/os.c | 26 ++++++++++++++++++++++++--
+ 1 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 65a20841c82794b82a8400e414aa8ff831c1868d
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:08:06 2009 -0400
+
+ Add os.setegid os.setgid os.seteuid and os.setuid
+
+ modules/os/os.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 82 insertions(+), 1 deletions(-)
+
+commit 9aeb14fc9b93bf7a2d1848f3eb1f6727024c45d3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:00:32 2009 -0400
+
+ Fix redundant requirement of GObject typelib
+
+ src/main.c | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit 01d6fd856d5615b3448efce60831ab59cb4d7e9b
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 22:00:09 2009 -0400
+
+ Fix the REPL script in main.c
+
+ src/main.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit baf8914fbfeb4c4de05d694c107820cfb398a372
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 21:59:02 2009 -0400
+
+ Remove some deprecated usage of Seed.import_namespace in hardcoded strings that could trigger readline module to be imported twice
+
+ libseed/seed-engine.c | 12 +++++-------
+ src/main.c | 8 ++++----
+ 2 files changed, 9 insertions(+), 11 deletions(-)
+
+commit 0e747232a46f6c0c4d821fdc3a2c451c52e2def7
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 21:41:48 2009 -0400
+
+ Have class_init callbacks use g_object_info_get_class_struct
+
+ libseed/seed-gtype.c | 55 ++++++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 47 insertions(+), 8 deletions(-)
+
+commit df566d56a8f03f522aa1c46071cb154e92d475f6
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 21:14:40 2009 -0400
+
+ Add os.putenv
+
+ modules/os/os.c | 30 +++++++++++++++++++++++++++++-
+ 1 files changed, 29 insertions(+), 1 deletions(-)
+
+commit 7d4e47ecb5d5ff687166e4ae76989e3a846037be
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 21:10:26 2009 -0400
+
+ Add os.getenv
+
+ modules/os/os.c | 30 +++++++++++++++++++++++++++---
+ 1 files changed, 27 insertions(+), 3 deletions(-)
+
+commit bdaad2fb565c0cc576560b3539b4c7e33d348904
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 21:01:37 2009 -0400
+
+ Add getpid and getppid
+
+ modules/os/os.c | 36 +++++++++++++++++++++++++++++++++++-
+ 1 files changed, 35 insertions(+), 1 deletions(-)
+
+commit 84da10cba691bc7d628f728e0af89faf5e58d6a0
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:59:15 2009 -0400
+
+ Add os.getpgrp
+
+ modules/os/os.c | 19 ++++++++++++++++++-
+ 1 files changed, 18 insertions(+), 1 deletions(-)
+
+commit 7dfbb440f03d3448a12a6e713a91e1d688c367aa
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:56:50 2009 -0400
+
+ Add os.getpgid
+
+ modules/os/os.c | 23 +++++++++++++++++++++--
+ 1 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 8520a9e2dd7de1b24a301600e3d315fe99806451
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:51:50 2009 -0400
+
+ Add os.getlogin
+
+ modules/os/os.c | 37 +++++++++++++++++++++++++------------
+ 1 files changed, 25 insertions(+), 12 deletions(-)
+
+commit 0c856b68768797d1534222b0af6ae6a221218db8
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:48:41 2009 -0400
+
+ Add os.getgroups
+
+ modules/os/os.c | 24 ++++++++++++++++++++----
+ 1 files changed, 20 insertions(+), 4 deletions(-)
+
+commit 752afdfc4d6791ed8ad54e6a27babe1ea3ca948a
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:43:14 2009 -0400
+
+ Add seed_make_array to the API
+
+ libseed/seed-api.c | 8 ++++++
+ libseed/seed.h | 3 ++
+ modules/os/os.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 76 insertions(+), 1 deletions(-)
+
+commit ac649d8e3fa6f2112bdb2ea1ee4857f67b872b17
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:35:50 2009 -0400
+
+ Add getegid and geteuid
+
+ modules/os/os.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 43 insertions(+), 1 deletions(-)
+
+commit aab46bab3c26a94eb5263cb401940fedc8f90c54
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:32:42 2009 -0400
+
+ Add ctermid
+
+ modules/os/os.c | 26 +++++++++++++++++++++++++-
+ 1 files changed, 25 insertions(+), 1 deletions(-)
+
+commit 437f98900823b3311087d6c42d122129684d3f06
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 20:30:40 2009 -0400
+
+ Start fleshing out the os module a little bit...aiming for identical to the python one as much as possible
+
+ configure.ac | 1 +
+ libseed/seed-importer.c | 24 ++++++++++++-
+ modules/Makefile.am | 2 +-
+ modules/os/Makefile.am | 25 +++++++++++++
+ modules/os/os.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 143 insertions(+), 2 deletions(-)
+
+commit d13b9cfa68155829ef0d3e5476ec8e634bf9b9a9
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 19:56:59 2009 -0400
+
+ Start porting the browser example
+
+ examples/browser/BrowserTab.js | 34 ++++++++++++++++++++--------------
+ examples/browser/BrowserToolbar.js | 10 ++++++----
+ examples/browser/BrowserView.js | 6 ------
+ examples/browser/TabbedBrowser.js | 5 +++--
+ 4 files changed, 29 insertions(+), 26 deletions(-)
+
+commit bb31ba72f9704ae8aa03d56bd501e87d7ad4f971
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 18:10:56 2009 -0400
+
+ Wheeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+
+ libseed/seed-importer.c | 18 +++++++++++++++---
+ 1 files changed, 15 insertions(+), 3 deletions(-)
+
+commit 36a818f47f041bb2b2d584cbaca56ffc4fedf684
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 17:27:36 2009 -0400
+
+ Remove old comment
+
+ libseed/seed-importer.c | 3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+commit 14293b0e09dd1ac423bd8784e5978aae7974b1a7
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 17:24:50 2009 -0400
+
+ Remove gratuitous protection
+
+ libseed/seed-importer.c | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit f79987039e87d7ca1164e3ef077e5a03659163ea
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 17:23:48 2009 -0400
+
+ Some more importer cleanup stuff
+
+ libseed/seed-importer.c | 9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+commit e84377143afd804aa0643db9f3c3060f317ca911
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 16:49:20 2009 -0400
+
+ Fix some more context confusion, and add a seed_prepare_global_context function
+
+ examples/browser/BrowserView.js | 4 ++++
+ libseed/seed-importer.c | 12 ++++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+commit 85fcd4d3a8e49ddfec3a0318825c9ea824f0558d
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 16:04:10 2009 -0400
+
+ Fix shadowed variable declaration causing the Seed global object to be wrong sometimes with the new importer
+
+ examples/browser/BrowserView.js | 2 ++
+ libseed/seed-builtins.c | 4 +++-
+ libseed/seed-closure.c | 2 ++
+ libseed/seed-engine.c | 11 ++++++++++-
+ libseed/seed-engine.h | 2 ++
+ libseed/seed-gtype.c | 8 ++++++++
+ libseed/seed-importer.c | 11 ++---------
+ libseed/seed-importer.h | 2 ++
+ libseed/seed-signals.c | 4 +++-
+ libseed/seed-types.c | 3 ++-
+ 10 files changed, 36 insertions(+), 13 deletions(-)
+
+commit b335fdec6c7ae1632d91acc1c8dc152e4a72d07b
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 14:11:57 2009 -0400
+
+ Add a high level description/spec of the importer object
+
+ libseed/seed-importer.c | 34 ++++++++++++++++++++++++++++++++++
+ modules/canvas/run-tests.js | 36 ++++++++++++++++++------------------
+ 2 files changed, 52 insertions(+), 18 deletions(-)
+
+commit a13762d1721d6aeea36df0d56ecc8634fb168a30
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Apr 13 13:54:30 2009 -0400
+
+ Some comments on the new importer
+
+ libseed/seed-importer.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 6d6594fc7b9007e26e0dd684448e730a2549cc37
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 17:57:15 2009 -0400
+
+ Use the correct context for adding globals to new import contexts
+
+ examples/browser/TabbedBrowser.js | 1 +
+ examples/browser/main.js | 13 ++++++-------
+ libseed/seed-importer.c | 6 +++---
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 868ccb7ec9c567c2cc322eff5a9d4c596ca7daf3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 17:38:53 2009 -0400
+
+ Add SEED_DEBUG_IMPORTER and some debugging statements
+
+ libseed/seed-debug.h | 3 ++-
+ libseed/seed-engine.c | 3 ++-
+ libseed/seed-importer.c | 9 +++++++++
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 35d756a2bb843c37f6c0f9b943ecbfb089ecd0f3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 17:27:10 2009 -0400
+
+ Update shader example
+
+ examples/clutter-shader/main.js | 15 ++++++++-------
+ 1 files changed, 8 insertions(+), 7 deletions(-)
+
+commit 345812d7124fa8766803a16e7de8f545a0e62969
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 17:25:09 2009 -0400
+
+ A bunch of more minor examples updated
+
+ examples/n-oscillator.js | 26 +++++++++++++-------------
+ examples/notify-test.js | 8 ++++----
+ examples/poppler.js | 40 ++++++++++++++++++++--------------------
+ examples/quine.js | 2 +-
+ examples/repl.js | 2 +-
+ examples/soup.js | 2 +-
+ examples/threaded-repl.js | 4 ++--
+ 7 files changed, 42 insertions(+), 42 deletions(-)
+
+commit 292052e0f19e03821f2f288d721b753cf3f02827
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 17:22:30 2009 -0400
+
+ Update twitter example
+
+ examples/browser/BrowserStatusbar.js | 7 ++++-
+ examples/browser/BrowserView.js | 45 ++++++++++++++++++----------------
+ examples/browser/TabbedBrowser.js | 25 +++++++++++-------
+ examples/browser/main.js | 8 +++---
+ examples/twitter/twitter.js | 24 +++++++++---------
+ libseed/seed-engine.c | 3 +-
+ libseed/seed-engine.h | 2 +
+ libseed/seed-gtype.c | 8 ++++--
+ libseed/seed-gtype.h | 2 +
+ libseed/seed-importer.c | 2 +
+ 10 files changed, 73 insertions(+), 53 deletions(-)
+
+commit 03bed9f537d73f4df1f7e318054ed729752cc807
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 11:26:43 2009 -0400
+
+ Update more examples
+
+ examples/async-quine.js | 6 +++---
+ examples/gdkpixbufloader.js | 12 ++++++------
+ examples/gtktreeview.js | 3 ++-
+ examples/json-packing.js | 2 +-
+ examples/json-reddit.js | 8 ++++----
+ examples/ls.js | 2 +-
+ 6 files changed, 17 insertions(+), 16 deletions(-)
+
+commit 814c1bbc82575fb42f1bcaadc3f107868989d1ed
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 11:22:52 2009 -0400
+
+ Update some more examples to new importer
+
+ examples/glib/env.js | 2 +-
+ examples/glib/thread.js | 2 +-
+ examples/glib/timeout.js | 2 +-
+ examples/glib/timer.js | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit a929363e82a8d8071aa2d3d53d4e4684e523a636
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 11:21:54 2009 -0400
+
+ Start randomly updating a few examples
+
+ examples/calculator.js | 26 +++++++++++++-------------
+ examples/gtkplug.js | 11 ++++++-----
+ examples/video.js | 6 +++---
+ examples/vte-test.js | 6 +++---
+ 4 files changed, 25 insertions(+), 24 deletions(-)
+
+commit 2a0a481dd0be0d7e61a740f79252183b25ad1811
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 11:16:55 2009 -0400
+
+ Add some more SEED_NOTE's
+
+ extensions/Gtk.js | 45 +++++++++++++++++++++++----------------------
+ libseed/seed-engine.c | 1 +
+ libseed/seed-signals.c | 19 -------------------
+ 3 files changed, 24 insertions(+), 41 deletions(-)
+
+commit 6d51dd5292b5c1a63365ed1aee13f8ea21bef1bc
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 10:53:22 2009 -0400
+
+ Fix enum validation to not break flags
+
+ examples/accelgroup.js | 16 ++++++++--------
+ examples/actions.js | 6 +++---
+ libseed/seed-types.c | 2 +-
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+commit a2a5c2101c1e05223f9a83e366adfdf3ba1d2f0f
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 10:49:32 2009 -0400
+
+ Fix the rest of the tests
+
+ tests/c/api-js-signal-from-c.c | 3 ++-
+ tests/javascript/everything.js | 1 +
+ tests/javascript/gtype-signal-args.js | 3 ++-
+ tests/javascript/gvalue-argument.js | 3 ++-
+ 4 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 60d259c7d7355c4388c086671a6d985f866a8e7e
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 10:43:19 2009 -0400
+
+ Change searchPath to include '.' last
+
+ extensions/Seed.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4a9f2f1f956e114dbb546b7788276a5862e0e825
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 10:17:23 2009 -0400
+
+ Tests still don't all pass
+
+ extensions/Clutter.js | 2 +-
+ extensions/GObject.js | 2 +-
+ extensions/Gio.js | 2 +-
+ extensions/Gtk.js | 2 +-
+ libseed/seed-engine.c | 8 ++------
+ tests/javascript/array-gtype.js | 4 ++--
+ tests/javascript/closure-finalization.js | 2 +-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/constructor-args.js | 2 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 2 +-
+ tests/javascript/function-info.js | 4 ++--
+ tests/javascript/gdk-event.js | 4 ++--
+ tests/javascript/gerror.js | 2 +-
+ tests/javascript/gobject-scope.js | 2 +-
+ tests/javascript/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtype-property.js | 4 ++--
+ tests/javascript/gtype-signal-args.js | 2 +-
+ tests/javascript/gtype-signal-exception.js | 2 +-
+ tests/javascript/gtype-signal.js | 2 +-
+ tests/javascript/gtype-typerror.js | 2 +-
+ tests/javascript/gtype.js | 2 +-
+ tests/javascript/gvalue-argument.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 4 ++--
+ tests/javascript/list-test.js | 2 +-
+ tests/javascript/native-closure-exception.js | 2 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/object-info.js | 4 ++--
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/property-benchmark.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/readline.js | 2 +-
+ tests/javascript/readline_bind.js | 2 +-
+ tests/javascript/signal-connect.js | 2 +-
+ tests/javascript/signal-exception.js | 2 +-
+ tests/javascript/signal-expects.js | 2 +-
+ tests/javascript/signal-userdata.js | 2 +-
+ tests/javascript/signal.js | 2 +-
+ tests/javascript/sqlite.js | 4 ++--
+ tests/javascript/struct-constructor.js | 2 +-
+ tests/javascript/struct-enumerate.js | 2 +-
+ tests/javascript/struct-nested-set.js | 2 +-
+ tests/javascript/struct-offsets.js | 2 +-
+ tests/javascript/struct-set-member.js | 2 +-
+ tests/javascript/struct-union-enumerate.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ 48 files changed, 56 insertions(+), 60 deletions(-)
+
+commit 59194331a6c2911b85c60da07e705de921631777
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 10:06:39 2009 -0400
+
+ Make importer work for including the JS extensions to GI modules
+
+ extensions/Clutter.js | 2 ++
+ extensions/GObject.js | 2 ++
+ extensions/Gio.js | 2 ++
+ extensions/Gtk.js | 2 ++
+ extensions/Makefile.am | 2 +-
+ extensions/Seed.js | 2 +-
+ libseed/seed-engine.c | 11 +++++------
+ libseed/seed-importer.c | 21 ++++++++++++++++-----
+ 8 files changed, 31 insertions(+), 13 deletions(-)
+
+commit c51b2abe85707deb650d56b5617fdde3499ab0ed
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 09:46:37 2009 -0400
+
+ Properly set Namespace.Object.prototype in the new importer
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 603661a0cf9e08bef21a4147c987f12ffb54d4ea
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 09:45:47 2009 -0400
+
+ Begin to update tests
+
+ tests/javascript/array-gtype.js | 4 ++--
+ tests/javascript/closure-finalization.js | 3 ++-
+ tests/javascript/compare.js | 2 +-
+ tests/javascript/constructor-args.js | 2 +-
+ tests/javascript/constructor-prototype.js | 2 +-
+ tests/javascript/enum.js | 2 +-
+ tests/javascript/everything.js | 2 +-
+ tests/javascript/function-info.js | 4 ++--
+ tests/javascript/gdk-event.js | 4 ++--
+ tests/javascript/gerror.js | 2 +-
+ tests/javascript/gobject-scope.js | 2 +-
+ tests/javascript/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtype-property.js | 4 ++--
+ tests/javascript/gtype-signal-args.js | 2 +-
+ tests/javascript/gtype-signal-exception.js | 2 +-
+ tests/javascript/gtype-signal.js | 2 +-
+ tests/javascript/gtype-typerror.js | 2 +-
+ tests/javascript/gtype.js | 2 +-
+ tests/javascript/gvalue-argument.js | 2 +-
+ tests/javascript/introspect.js | 2 +-
+ tests/javascript/json-constructor.js | 4 ++--
+ tests/javascript/list-test.js | 2 +-
+ tests/javascript/native-closure-exception.js | 2 +-
+ tests/javascript/native-closure.js | 2 +-
+ tests/javascript/object-info.js | 4 ++--
+ tests/javascript/out-test.js | 2 +-
+ tests/javascript/property-benchmark.js | 2 +-
+ tests/javascript/property-glib-exception.js | 2 +-
+ tests/javascript/readline.js | 2 +-
+ tests/javascript/readline_bind.js | 2 +-
+ tests/javascript/signal-connect.js | 2 +-
+ tests/javascript/signal-exception.js | 2 +-
+ tests/javascript/signal-expects.js | 2 +-
+ tests/javascript/signal-userdata.js | 2 +-
+ tests/javascript/signal.js | 2 +-
+ tests/javascript/sqlite.js | 5 ++---
+ tests/javascript/struct-constructor.js | 2 +-
+ tests/javascript/struct-enumerate.js | 2 +-
+ tests/javascript/struct-nested-set.js | 2 +-
+ tests/javascript/struct-offsets.js | 2 +-
+ tests/javascript/struct-set-member.js | 2 +-
+ tests/javascript/struct-union-enumerate.js | 2 +-
+ tests/javascript/type-conversion.js | 2 +-
+ 43 files changed, 51 insertions(+), 51 deletions(-)
+
+commit 36f38b756b74d4e04a4bddd2eb260e5970001ea3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 09:32:42 2009 -0400
+
+ Add a default search path
+
+ extensions/Seed.js | 8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 85a1bf4bddd2ca04c18b885cea3b9d9d1e379d66
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 09:27:28 2009 -0400
+
+ Importer supports native modules
+
+ libseed/seed-engine.c | 5 +-
+ libseed/seed-engine.h | 2 +-
+ libseed/seed-importer.c | 60 ++++++++
+ libseed/seed.h | 2 +-
+ modules/Multiprocessing/multi.c | 253 +++++++++++++++++-----------------
+ modules/canvas/seed-canvas.c | 8 +-
+ modules/example/example.c | 6 +-
+ modules/readline/seed-readline.c | 208 ++++++++++++++--------------
+ modules/sqlite/seed-sqlite.c | 278 +++++++++++++++++++-------------------
+ 9 files changed, 442 insertions(+), 380 deletions(-)
+
+commit f74a63f7744ef96d242697c8b50bc7841686bcfc
+Merge: f44544b d0a326e
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 02:10:27 2009 -0400
+
+ Merge branch 'importer'
+
+commit d0a326e5fa1496e8f116039cf06028865ec35f98
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 01:48:42 2009 -0400
+
+ Make it actually work
+
+ libseed/seed-importer.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 39d0a68c6fcd92a9e31b91056b859dc8465a4e35
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 01:46:47 2009 -0400
+
+ Some work on nested directory imports
+
+ libseed/seed-importer.c | 36 ++++++++++++++++++++++++++++++++++--
+ 1 files changed, 34 insertions(+), 2 deletions(-)
+
+commit 7f6e81885e7b9f492ab09d331015026d644c18e8
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 12 01:42:11 2009 -0400
+
+ Free the search path
+
+ libseed/seed-importer.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 71 insertions(+), 1 deletions(-)
+
+commit ecb2600a4b4fefe825dc21f7ad1deeb836fe49b9
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 21:55:22 2009 -0400
+
+ Make importer cache imports for files properly
+
+ libseed/seed-importer.c | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit f5c61e039f2ebff9d606fa680818e83a2179ccd5
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 21:50:57 2009 -0400
+
+ Fix dumb person bug
+
+ libseed/seed-importer.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a15e3c5de9478936c1d4ed698ec491241b06e52c
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 20:49:55 2009 -0400
+
+ Work on start of importer for normal files
+
+ libseed/seed-importer.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 145 insertions(+), 2 deletions(-)
+
+commit f44544bc62ad5173485f0f0a3cbe0a66a40857c9
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 18:42:57 2009 -0400
+
+ Fix build
+
+ configure.ac | 1 -
+ modules/Makefile.am | 2 +-
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 2aeab1a8094ae99177610b46dc22e89b346f8fea
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 18:40:00 2009 -0400
+
+ Add support for versions
+
+ libseed/seed-importer.c | 23 ++++++++++++++++++++---
+ 1 files changed, 20 insertions(+), 3 deletions(-)
+
+commit 8c714a8651697a258828c36e636c1b24d8245bc3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 18:31:34 2009 -0400
+
+ Protect against multiple imports
+
+ libseed/seed-importer.c | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+commit b43ef7566f1b07ebf0a13681bda5b9e4563b3e17
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 18:13:50 2009 -0400
+
+ Support GI_INFO_TYPE_CONSTANT, and some refactoring
+
+ libseed/seed-importer.c | 64 +++++++++++++++++++++++++++++++++++++++++------
+ 1 files changed, 56 insertions(+), 8 deletions(-)
+
+commit e350054082438fc288b76fe2ca0f1390910afbdd
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 17:58:14 2009 -0400
+
+ Importer supports GI_INFO_TYPE_UNION
+
+ libseed/seed-importer.c | 42 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 41 insertions(+), 1 deletions(-)
+
+commit 58f0d615b63c9ae0da60ff83267f4e1e4f7bd6a6
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 17:55:47 2009 -0400
+
+ Importer supports GI_INFO_TYPE_STRUCT
+
+ libseed/seed-engine.h | 1 +
+ libseed/seed-importer.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+), 0 deletions(-)
+
+commit 404a707a050a2f2568ef47bf246685adc5a45894
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 17:47:15 2009 -0400
+
+ Importer now supports GI_INFO_TYPE_OBJECT
+
+ libseed/seed-engine.h | 2 +
+ libseed/seed-importer.c | 90 +++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 85 insertions(+), 7 deletions(-)
+
+commit 25432cb8505a771fba915a1e1bb8d7d92e7a6743
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 16:52:56 2009 -0400
+
+ Importer now supports enums and toplevel functions
+
+ libseed/seed-importer.c | 167 ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 166 insertions(+), 1 deletions(-)
+
+commit 876b7e939e4bf48734f0673740fc70049e7e443d
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sat Apr 11 16:10:40 2009 -0400
+
+ Begin work on the new importer
+
+ libseed/Makefile.am | 4 +++-
+ libseed/seed-engine.c | 4 ++++
+ libseed/seed-importer.c | 34 ++++++++++++++++++++++++++++++++++
+ libseed/seed-importer.h | 8 ++++++++
+ libseed/seed-private.h | 1 +
+ 5 files changed, 50 insertions(+), 1 deletions(-)
+
+commit 7e65ec58c53adf8b06840ff3e8e60d4af2ae1446
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Fri Apr 10 16:09:05 2009 -0400
+
+ Add scoped includes
+
+ configure.ac | 3 +
+ extensions/Clutter.js | 3 +-
+ libseed/seed-builtins.c | 101 ++++++++++++++++++++++++++++++++++++-
+ m4/intltool.m4 | 64 +++++++++++++++---------
+ m4/libtool.m4 | 128 ++++++++++++++++++++++++++++++++---------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 ++++----
+ m4/ltversion.m4 | 10 ++--
+ modules/Makefile.am | 2 +-
+ po/Makefile.in.in | 4 +-
+ 10 files changed, 252 insertions(+), 85 deletions(-)
+
+commit bd6901a8761835b05e362bfa03fdaf8c895f8e46
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Apr 7 17:16:42 2009 -0400
+
+ Big signal rework. Should save some memory. Dynamically create signal objects, also smaller signal privates struct...fix a leak...all kinds of good stuff
+
+ libseed/seed-engine.c | 6 +++-
+ libseed/seed-signals.c | 88 ++++++++++++++++++++++--------------------------
+ 2 files changed, 45 insertions(+), 49 deletions(-)
+
+commit e3cfcec59fc81169ee1e5a10dca0c39e606edfa7
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Apr 5 19:49:58 2009 -0400
+
+ Add seed_init_with_context_group
+
+ libseed/seed-engine.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed.h | 5 ++-
+ 2 files changed, 88 insertions(+), 1 deletions(-)
+
+commit 42aca0c50fea8ac5ec7ad914d5b5c78565e42973
+Author: Tim Horton <hortont@hortont.com>
+Date: Sat Mar 28 22:22:29 2009 -0400
+
+ Yay webkit committed the patch.
+
+ patches/fix_webkit_soup_introspection.patch | 22 ----------------------
+ 1 files changed, 0 insertions(+), 22 deletions(-)
+
+commit dd93b2e755cc67e731f236e7e705715b4f84aa9d
+Author: Tim Horton <hortont@hortont.com>
+Date: Fri Mar 27 21:29:55 2009 -0400
+
+ Patch patch to WebKit to make it introspectible. WK guys say that they're going to have it in for 1.1.4.
+
+ patches/fix_webkit_soup_introspection.patch | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 7b0791fd03173916a418cce848b64705ec968116
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Fri Mar 27 16:29:13 2009 -0400
+
+ Add Seed.breakpoint for debugging purposes
+
+ libseed/seed-builtins.c | 13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 029ea2977d631294c40295f5c72176888b509f85
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Mar 24 23:16:49 2009 -0400
+
+ Minor cosmetic improvements to seed-types.c
+
+ libseed/seed-types.c | 24 +++++++++++++-----------
+ 1 files changed, 13 insertions(+), 11 deletions(-)
+
+commit f3dc26292d3ed4b877d15c345b4edd6678d72ba1
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Mar 24 23:09:16 2009 -0400
+
+ Add validation of enum types to the GArgument conversion logic
+
+ libseed/seed-types.c | 13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+commit fd9f3bc2f3743a9870909214b1573fab040fc425
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Mar 24 23:05:25 2009 -0400
+
+ Validate enum types in property setting
+
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-types.c | 24 ++++++++++++++++++++++--
+ libseed/seed-types.h | 2 ++
+ 3 files changed, 25 insertions(+), 3 deletions(-)
+
+commit b7265ce94d5efa8c9d1dce291160c96311f22572
+Merge: 5aca097 9f44621
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 23 02:48:02 2009 -0400
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit 9f4462185c2f7a5f25605b3c74abbc8952c48f46
+Author: Tim Horton <hortont@hortont.com>
+Date: Thu Mar 19 22:29:44 2009 -0400
+
+ One question resolved.
+
+ OPEN_QUESTIONS | 3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+commit 5ea43401eaba2daea6de37ce59f158b50d151fd9
+Author: Tim Horton <hortont@hortont.com>
+Date: Thu Mar 19 22:17:51 2009 -0400
+
+ Patch from Matt, fixes horrible crash in include path code.
+
+ libseed/seed-api.c | 4 +-
+ libseed/seed.h | 2 +-
+ m4/libtool.m4 | 128 ++++++++++++++++-----------------------------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 ++++----
+ m4/ltversion.m4 | 10 ++--
+ src/main.c | 6 +--
+ 7 files changed, 60 insertions(+), 112 deletions(-)
+
+commit 5aca0971f9842b7f45c3fd61054823750f095586
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Mar 18 16:28:28 2009 -0400
+
+ Some fixes to canvas color parsing
+
+ libseed/seed-engine.c | 4 +++-
+ modules/canvas/seed-canvas.c | 15 +++++++++------
+ 2 files changed, 12 insertions(+), 7 deletions(-)
+
+commit 838b823356aec1dfd6494e4bf1f013cab98a4611
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Mar 18 16:05:15 2009 -0400
+
+ More gtk-doc
+
+ doc/reference/html/index.html | 4 ++--
+ libseed/seed-types.c | 17 +++++++++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit ce9f1e8eaa0292fc651fd059765d7bc2b15452ec
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Mar 18 15:55:57 2009 -0400
+
+ Style fixes in seed-api.c
+
+ libseed/seed-api.c | 23 ++++++++++++++++-------
+ 1 files changed, 16 insertions(+), 7 deletions(-)
+
+commit ec092a5962d983087702f25e8351fa35ee883da1
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 16 21:40:42 2009 -0400
+
+ Update debian packaging now that ogl-glib is no longer inside of seed.
+
+ debian/control | 7 ++-----
+ 1 files changed, 2 insertions(+), 5 deletions(-)
+
+commit d4e31e3d7d6dae85dca207877c43adf64b486a83
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 16 21:30:20 2009 -0400
+
+ Patch from Matt:
+
+ simple patch changing the api to take the : separated path. also fixed a
+ huge mistake with memory leak if you set the path from the api
+
+ libseed/seed-api.c | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 423e3eaf5374abf681bfdc71a988c61c71551548
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Mar 15 15:48:21 2009 -0400
+
+ Add seed_context_get_global function to API
+
+ libseed/seed-api.c | 6 ++++++
+ libseed/seed.h | 1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit e9d05b86c052703b97748cd244696eb9da1cc774
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Mar 15 09:52:18 2009 -0400
+
+ Fix indentation on C tests
+
+ tests/c/main.c | 58 ++++++++++++++++++++++++++++----------------------------
+ 1 files changed, 29 insertions(+), 29 deletions(-)
+
+commit c39776b3d6d76076d6a907c3c3da06cf5392fbf8
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Mar 15 09:51:17 2009 -0400
+
+ Add seed_signal_connect and seed_signal_connect_full C convenience API
+
+ doc/reference/seed-sections.txt | 6 ++++-
+ libseed/seed-api.c | 44 ++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-private.h | 1 +
+ libseed/seed-signals.c | 5 ++-
+ libseed/seed-signals.h | 9 ++++++++
+ libseed/seed.h | 15 +++++++++++++
+ 6 files changed, 76 insertions(+), 4 deletions(-)
+
+commit e905ea4aec058fe3a84b9ed99ff2523e22c69d1f
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Sun Mar 15 09:26:48 2009 -0400
+
+ Fix warning in C test
+
+ tests/c/api-js-signal-from-c.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit cf93fe0ea8761d47459e95a546d7acf5a3f959e4
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Wed Mar 11 22:24:24 2009 -0400
+
+ Big build system reorganization.n. Also add shave for pretty builds
+
+ autogen.sh | 177 +++++++---------------------------------------
+ config.h.in | 4 +
+ configure.ac | 45 ++++++++----
+ libseed/Makefile.am | 9 +--
+ m4/shave.m4 | 40 ++++++++++
+ scripts/shave-libtool.in | 69 ++++++++++++++++++
+ scripts/shave.in | 76 ++++++++++++++++++++
+ 7 files changed, 250 insertions(+), 170 deletions(-)
+
+commit f771c891598897f2970c03ad45ad543140530e3a
+Merge: 90ee377 91108a0
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Mar 10 22:55:45 2009 -0400
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit 90ee377023836ec199c55eeb473cf108d4b127a4
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Mar 10 15:16:01 2009 -0400
+
+ Switch seed_prepare_closure to use g_callable_info_prepare_closure...drops a lot of code
+
+ libseed/seed-builtins.c | 2 +
+ libseed/seed-closure.c | 102 +---------------------------------------------
+ libseed/seed-engine.c | 4 +-
+ 3 files changed, 7 insertions(+), 101 deletions(-)
+
+commit 91108a0f24175228d5b65e3a4abfb2fa58306fc6
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 9 22:42:46 2009 -0400
+
+ Most of seed-types.c is documented now (most of the public part, anyway).
+
+ libseed/seed-types.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 132 insertions(+), 0 deletions(-)
+
+commit 7ba93ef1049807e2c971b56d2aaeea75516a8823
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 9 22:18:23 2009 -0400
+
+ Exception documentation. GtkDoc is losing some of my docs on seed_make_exception for some reason. Also, somehow some of our headers are out of sync (variable-name-wise) with implementation files.
+
+ libseed/seed-exceptions.c | 65 +++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed.h | 14 +++++-----
+ 2 files changed, 72 insertions(+), 7 deletions(-)
+
+commit 27ca247ac00e98235df5dae935ea5a215094d86a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 9 19:27:33 2009 -0400
+
+ Matt fixed up his Seed.set_search_path function, so we've enabled it.
+
+ libseed/seed-builtins.c | 44 +++++++-------------------------------------
+ 1 files changed, 7 insertions(+), 37 deletions(-)
+
+commit 2d5e0c7b8fd61247bc8787f8945b9449aa28d2d7
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Tue Mar 3 20:39:43 2009 -0500
+
+ Somehow I accidentally committed with 2 colors on.
+
+ examples/same-seed/main.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d3cb95749aea6ca9b45305203d42ab1b297e219c
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Tue Mar 3 20:36:18 2009 -0500
+
+ Revert "Revert "Remove incredibly dubious setting of SIGCHLD""
+
+ This reverts commit af622b554d79ede03df8ab76c170b7dafbb0bc9f.
+
+ Err. Oops. That didn't fix it either like it seemed it might; now, I'm confused.
+
+ libseed/seed-engine.c | 2 --
+ libseed/seed-types.c | 3 ++-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit af622b554d79ede03df8ab76c170b7dafbb0bc9f
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Tue Mar 3 20:33:04 2009 -0500
+
+ Revert "Remove incredibly dubious setting of SIGCHLD"
+
+ This reverts commit 029f9e35ec661912f98d883134ae6692b298ca51.
+
+ This clearly wasn't as dubious as it seemed, and must have made sense at the time. This commit removes the ability to Ctrl-C in our Clutter games at the very least (actually all Seed Clutter apps, but not much else, as far as I can see).
+
+ libseed/seed-engine.c | 2 ++
+ libseed/seed-types.c | 3 +--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 029f9e35ec661912f98d883134ae6692b298ca51
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 2 22:01:57 2009 -0500
+
+ Remove incredibly dubious setting of SIGCHLD
+
+ libseed/seed-engine.c | 2 --
+ libseed/seed-types.c | 3 ++-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit f0c46d887da7004fabc23a6368a9900ecbd76153
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 2 21:49:16 2009 -0500
+
+ Switch GObject reference to the JS ref to use g_object_set_qdata, low hanging optimization
+
+ libseed/seed-engine.c | 5 ++++-
+ libseed/seed-types.c | 4 ++--
+ libseed/seed-types.h | 2 ++
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit ef2117280b8ddbbaa2ec76f188e3ce25fbc9d859
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 2 21:44:29 2009 -0500
+
+ Add an assertion in seed_value_to_gobject, should be helpful in catching a few memory bugs that sometimes pop up
+
+ libseed/seed-types.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 3797376e36c6863ce6d055ba09f3637574fee6e1
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 2 21:41:11 2009 -0500
+
+ Fix potential crash (or confusion) in seed_value_to_string
+
+ libseed/seed-types.c | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit f37e1c383f4d34b480e6361284999bee04335b1e
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Mar 2 21:35:41 2009 -0500
+
+ Support some more primitive array types
+
+ libseed/seed-types.c | 39 ++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 38 insertions(+), 1 deletions(-)
+
+commit 817a511a946ee3064ab398b163f5349dfdc741d5
+Author: Tim Horton <hortont424@gmail.com>
+Date: Mon Mar 2 19:16:51 2009 -0500
+
+ Some type documentation, mostly copy/paste.
+
+ .gitignore | 17 ++++-
+ libseed/seed-types.c | 171 ++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 166 insertions(+), 22 deletions(-)
+
+commit ebefeec870b7aa87786e7de719f33a52ed579c85
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 20:14:44 2009 -0500
+
+ Other files that got updated by the last commit.
+
+ doc/reference/html/index.html | 8 ++-
+ doc/reference/tmpl/seed.sgml | 130 -----------------------------------------
+ 2 files changed, 7 insertions(+), 131 deletions(-)
+
+commit f519ead8cf12c9f82c9e62b54cf747c40f5d79de
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 20:12:10 2009 -0500
+
+ Mushing documentation around into sections, fixing headers that indent screwed up (as usual...) and stuff.
+
+ doc/reference/seed-docs.sgml | 2 +
+ doc/reference/seed-sections.txt | 42 ++++++++++++++++++++++++--------------
+ libseed/seed-builtins.h | 26 ++++++++++++------------
+ libseed/seed-closure.h | 26 ++++++++++++------------
+ libseed/seed-debug.h | 26 ++++++++++++------------
+ libseed/seed-engine.h | 26 ++++++++++++------------
+ libseed/seed-exceptions.h | 30 ++++++++++++++++-----------
+ libseed/seed-gtype.h | 26 ++++++++++++------------
+ libseed/seed-private.h | 26 ++++++++++++------------
+ libseed/seed-signals.h | 26 ++++++++++++------------
+ libseed/seed-structs.h | 26 ++++++++++++------------
+ libseed/seed-types.h | 36 ++++++++++++++++++++++-----------
+ libseed/seed.h | 6 -----
+ 13 files changed, 174 insertions(+), 150 deletions(-)
+
+commit 2ad86d6e8c0a503362b397eed92ccdaad9c71479
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 20:02:31 2009 -0500
+
+ Starting to move documentation into different sections.
+
+ doc/reference/html/index.html | 11 +-
+ doc/reference/seed-docs.sgml | 1 +
+ doc/reference/seed-sections.txt | 75 +++--
+ doc/reference/tmpl/seed-unused.sgml | 24 ++
+ doc/reference/tmpl/seed.sgml | 595 +++++++++++++++++++++++++++++++++++
+ libseed/seed.h | 30 +-
+ 6 files changed, 686 insertions(+), 50 deletions(-)
+
+commit 0985fbce82e787ec20b8e0bbc146f95eef5559a2
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 19:27:50 2009 -0500
+
+ I'm pretty sure that carrying the templates aroung in Git is unnecessary (the GtkDoc docs suggest so anyway...)
+
+ doc/reference/tmpl/seed-builtins.sgml | 19 -
+ doc/reference/tmpl/seed-closure.sgml | 19 -
+ doc/reference/tmpl/seed-debug.sgml | 64 --
+ doc/reference/tmpl/seed-engine.sgml | 44 --
+ doc/reference/tmpl/seed-exceptions.sgml | 80 ---
+ doc/reference/tmpl/seed-gtype.sgml | 19 -
+ doc/reference/tmpl/seed-private.sgml | 19 -
+ doc/reference/tmpl/seed-signals.sgml | 19 -
+ doc/reference/tmpl/seed-structs.sgml | 29 -
+ doc/reference/tmpl/seed-types.sgml | 350 -----------
+ doc/reference/tmpl/seed-unused.sgml | 659 ---------------------
+ doc/reference/tmpl/seed.sgml | 957 -------------------------------
+ 12 files changed, 0 insertions(+), 2278 deletions(-)
+
+commit 00c7135426ed8cee8082e0650c7d5823c978c26e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 19:20:36 2009 -0500
+
+ Documentation for seed_object_call. This marks 100% of the functions in seed-api.c being documented. Still a long way to go.
+
+ libseed/seed-api.c | 17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 33ce45e9b0d98f1134aeeb1ddfe7ceba1ced3056
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 19:07:47 2009 -0500
+
+ Create .gitignore and add everything that's currently untracked. I'm pretty sure we've got stuff in the repo that shouldn't be, but that's OK for now. If we're ignoring anything we shouldn't be, ... oops.
+
+ .gitignore | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 145 insertions(+), 0 deletions(-)
+
+commit 9d69cf261676bc80570dd1a28f7303a42657dfc9
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:58:08 2009 -0500
+
+ Missed some return values.
+
+ libseed/seed-api.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 1e20d268f9080492b0f3914328b2350b29995899
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:54:04 2009 -0500
+
+ Lots of *(un)ref docs.
+
+ config.h.in | 4 -
+ doc/reference/html/index.html | 8 +-
+ doc/reference/tmpl/seed-private.sgml | 9 -
+ doc/reference/tmpl/seed-unused.sgml | 291 ++++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/seed.sgml | 45 +++++-
+ libseed/seed-api.c | 38 ++++-
+ 6 files changed, 368 insertions(+), 27 deletions(-)
+
+commit 5627b43fe35e9e1bfd82d63c5c937f1c6ea0bc61
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:47:23 2009 -0500
+
+ protect and unprotect documentation.
+
+ libseed/seed-api.c | 21 +++++++++++++++++++++
+ 1 files changed, 21 insertions(+), 0 deletions(-)
+
+commit b667786d2914e882f46257cb891a1f5d1dfe4337
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:38:13 2009 -0500
+
+ GtkDoc is choking on long type names? Wrote a note, anyway.
+
+ libseed/seed-api.c | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 9abcc742e761c6ac440615d1889f3bb56c682f6a
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:32:49 2009 -0500
+
+ Lots of documentation updates. Also, do we have a typedef for JSClassDefinition?
+
+ libseed/seed-api.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 59 insertions(+), 0 deletions(-)
+
+commit 684df6b8466920b2174a0ff9fbb70e46b76aecc0
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 18:00:16 2009 -0500
+
+ Don't need all these extra sections that we're simply not using. Maybe some other day, but for now we're only documenting the external API.
+
+ doc/reference/seed-sections.txt | 130 +--------------------------------------
+ 1 files changed, 3 insertions(+), 127 deletions(-)
+
+commit 7cb283504a994215fd8c6e4cd1f607defc491c45
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:57:24 2009 -0500
+
+ 80characters.
+
+ libseed/seed-api.c | 23 +++++++++++++++--------
+ 1 files changed, 15 insertions(+), 8 deletions(-)
+
+commit ffb9482308755db8489734e237633cf9291b95fe
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:46:20 2009 -0500
+
+ seed_string_is_equal_utf8 docs.
+
+ libseed/seed-api.c | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 6d3b1e062139a9fdd191fda158978cebb638ff3f
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:40:51 2009 -0500
+
+ Oops. seed_string_to_utf8_buffer doesn't /return/ a buffer!
+
+ libseed/seed-api.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a2aa5f95d22b85f5253c9e6707611667eb615668
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:36:31 2009 -0500
+
+ Docs for seed_make_object.
+
+ libseed/seed-api.c | 11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 71b4291871892adb73425d40d90395cc35006662
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:15:37 2009 -0500
+
+ Docs for seed_context_create.
+
+ libseed/seed-api.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 9f59df1c6c552f60be539af0901054d99d579c8e
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 17:11:11 2009 -0500
+
+ Updated docs (don't show JS* types in API documentation!)
+
+ libseed/seed-api.c | 24 ++++++++++++------------
+ 1 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 834fbd216f48317e73b7b0bcb86947dab2089541
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 16:50:35 2009 -0500
+
+ Don't put lines between parameter documentation or GtkDoc gets mad.
+
+ libseed/seed-api.c | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit a42a24504d0271425760109fd08b03f7582a79b9
+Author: Tim Horton <hortont424@gmail.com>
+Date: Sat Feb 28 16:45:50 2009 -0500
+
+ Matt added documentation for seed_engine_get_search_path.
+
+ libseed/seed-api.c | 9 ++++++++-
+ libseed/seed-builtins.c | 3 +++
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+commit f4eb7878fe5396c86607aec91fda120c9d3a0fc9
+Author: Tim Horton <hortont@hortont.com>
+Date: Tue Feb 24 17:30:14 2009 -0500
+
+ Fix matt's docs (still need documentation for the second function, too.)
+
+ libseed/seed-api.c | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit ed28cce323ff182279b4a72753bc5c61b79507ff
+Author: Tim Horton <hortont@hortont.com>
+Date: Tue Feb 24 17:28:28 2009 -0500
+
+ Fix some small lacks of use of g_*, etc
+
+ libseed/seed-types.c | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 0a8148ab341ddac5f8a121141426ce696be1744a
+Author: Tim Horton <hortont@hortont.com>
+Date: Tue Feb 24 17:23:50 2009 -0500
+
+ Reapply cleaned up version of Matt's patch.
+
+ doc/reference/seed-sections.txt | 2 +
+ libseed/seed-api.c | 23 ++++++++
+ libseed/seed-builtins.c | 114 ++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-engine.c | 1 +
+ libseed/seed-private.h | 1 +
+ libseed/seed.h | 4 ++
+ src/main.c | 8 +++
+ 7 files changed, 151 insertions(+), 2 deletions(-)
+
+commit 853ecf968d1797866d24f38ec31a332b04b2f3ee
+Author: Tim Horton <hortont@hortont.com>
+Date: Tue Feb 24 17:07:59 2009 -0500
+
+ Indentation.
+
+ libseed/seed-builtins.c | 2 +-
+ libseed/seed-signals.c | 10 ++--
+ libseed/seed-structs.c | 15 +++----
+ libseed/seed-types.c | 3 +-
+ src/main.c | 114 ++++++++++++++++++++++++----------------------
+ 5 files changed, 72 insertions(+), 72 deletions(-)
+
+commit 7c6deffbc7407fa8a8e4ef018dfb4531c393a967
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 15:19:45 2009 -0500
+
+ Revert "Patch from Matt to add global include paths."
+
+ A few problems here.
+
+ Merge removed some code in random files, notably introducing a leak in
+ Seed.print. Mixes style changes with code changes. Makes seed_include
+ leak in error conditions. Default path (examples) doesn't make any
+ sense. The error handling is somewhat inconsistent ("Cannot open path
+ entry") exception probably shouldn't exist.
+
+ libseed/seed-api.c | 16 ----
+ libseed/seed-builtins.c | 127 +-------------------------
+ libseed/seed-engine.c | 1 -
+ libseed/seed-private.h | 1 -
+ libseed/seed-signals.c | 9 +-
+ libseed/seed-structs.c | 15 ++--
+ libseed/seed-types.c | 40 +++++----
+ libseed/seed.h | 3 -
+ modules/readline/seed-readline.c | 2 +-
+ src/main.c | 11 +--
+ tests/javascript/builtin-argument-length.js | 2 +-
+ 11 files changed, 44 insertions(+), 183 deletions(-)
+
+commit 12e184eeec9144f5a223cef4b097b32f0855784d
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 15:09:19 2009 -0500
+
+ Initialize default stroke/fill colors when making a new SeedCanvasStyle
+
+ modules/canvas/seed-canvas.c | 21 +++++++++++++++++----
+ 1 files changed, 17 insertions(+), 4 deletions(-)
+
+commit a40983bae301bc68ac4885cbccf70b0e52ba88ac
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 15:03:34 2009 -0500
+
+ cleanup canvas tests a bit...more work on stage
+
+ modules/canvas/run-tests.js | 589 +++++++++++++++++++++---------------------
+ modules/canvas/seed-canvas.c | 6 +-
+ 2 files changed, 299 insertions(+), 296 deletions(-)
+
+commit 3649f16b05792b99ce2943f26739a6f9c4e96324
+Merge: 280d2a8 1ae8623
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 14:56:59 2009 -0500
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit 280d2a88fb3dfd81e9c368425d298dd6c4e98cb4
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 14:56:02 2009 -0500
+
+ Some more work on Canvas...it's a little broken right now but in the middle of an essential rewrite that should let state work properly
+
+ modules/canvas/seed-canvas.c | 309 ++++++++++++++++++++++++++----------------
+ 1 files changed, 193 insertions(+), 116 deletions(-)
+
+commit 882e7e11c7d62a363ac5931aea67ffe34b1c00a3
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Tue Feb 24 14:01:12 2009 -0500
+
+ Some canvas updates
+
+ modules/canvas/run-tests.js | 4 +-
+ modules/canvas/seed-canvas.c | 1323 +++++++++++++++++++++---------------------
+ 2 files changed, 673 insertions(+), 654 deletions(-)
+
+commit 1ae8623f7558b98613ce3907001c36cf1572e16d
+Author: Tim Horton <hortont@hortont.com>
+Date: Tue Feb 24 12:46:25 2009 -0500
+
+ Patch from Matt to add global include paths. Can't set from JS, but can from C, and gets used as search path during Seed.include. Also, swapping between indent styles isn't cool.
+
+ libseed/seed-api.c | 16 ++++
+ libseed/seed-builtins.c | 127 +++++++++++++++++++++++++-
+ libseed/seed-engine.c | 1 +
+ libseed/seed-private.h | 1 +
+ libseed/seed-signals.c | 9 +-
+ libseed/seed-structs.c | 15 ++--
+ libseed/seed-types.c | 40 ++++-----
+ libseed/seed.h | 3 +
+ modules/readline/seed-readline.c | 2 +-
+ src/main.c | 11 ++-
+ tests/javascript/builtin-argument-length.js | 2 +-
+ 11 files changed, 183 insertions(+), 44 deletions(-)
+
+commit cc1345135e336cded856805b953e6c7026698135
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:36:56 2009 -0500
+
+ seed_print doesn't need to use printf
+
+ libseed/seed-builtins.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit ba4d0ce9c90439dc58ea94ecca5d198598327c04
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:25:22 2009 -0500
+
+ Change the two tests that use Clutter to use Pango and GTK instead
+
+ tests/javascript/struct-offsets.js | 8 ++++----
+ tests/javascript/type-conversion.js | 13 ++++++-------
+ 2 files changed, 10 insertions(+), 11 deletions(-)
+
+commit 3ae12b3b9f6024f003f14b90b50e1fbd04eccf5a
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:09:16 2009 -0500
+
+ Avoid initializing return GValue in case of G_TYPE_NONE (also avoid unsetting it leading to an unpleasant message on the console)
+
+ libseed/seed-signals.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit f17991a54c6dcffadacef481ed786936d687548f
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:07:19 2009 -0500
+
+ api-js-signal-from-c needs to use double as the return value if it wants to strictly check for equality (Given JSCore is always in double precision
+
+ tests/c/api-js-signal-from-c.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 968fc93a9ac3e9886bedb320f5e963ea06e8c348
+Merge: d277f03 381f6a0
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:04:26 2009 -0500
+
+ Merge branch 'master' of ssh://git.gnome.org/git/seed
+
+commit d277f034d9308620bdb2daa03038ceddc63aefb6
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 16:03:42 2009 -0500
+
+ hello_cb in api-js-signal-form-c was smashing the stack
+
+ libseed/seed-gtype.c | 177 +---------------------------------------
+ libseed/seed-private.h | 1 +
+ tests/c/Makefile.am | 2 +-
+ tests/c/api-js-signal-from-c.c | 40 +++++-----
+ 4 files changed, 23 insertions(+), 197 deletions(-)
+
+commit 57e8f122e1b036d2db32cd0fe3e81c4fe4a05c44
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 15:52:26 2009 -0500
+
+ seed_gobject_signal_emit needs to initialize ret_value to query.return_type, fixes two tests
+
+ libseed/seed-signals.c | 6 +++++-
+ libseed/seed-types.c | 3 ++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 09c867506c611bf533405fa5a0f2b9ef13f2ee24
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 15:33:17 2009 -0500
+
+ Fix longstanding seed_gi_argument_make_js bug with handling enums, sometimes broke things in getting struct properties struct-nested-set.js passes now
+
+ libseed/seed-structs.c | 8 +++++---
+ libseed/seed-types.c | 2 +-
+ tests/javascript/struct-nested-set.js | 2 +-
+ 3 files changed, 7 insertions(+), 5 deletions(-)
+
+commit 381f6a0e7b55fb109770519dfa2327ecd7766c6e
+Merge: f5fdfbf dd05c69
+Author: Tim Horton <hortont@hortont.com>
+Date: Mon Feb 23 15:24:14 2009 -0500
+
+ Merge branch 'master' of git+ssh://git.gnome.org/git/seed
+
+commit f5fdfbf6613ad8ca13f6b69cb228f2071eb81135
+Author: Tim Horton <hortont@hortont.com>
+Date: Mon Feb 23 15:23:31 2009 -0500
+
+ Docs cleanup. Added missing seed.h symbols, created a reasonable ordering, added subsections, etc.
+
+ doc/reference/Makefile.am | 2 +-
+ doc/reference/html/index.html | 2 +-
+ doc/reference/seed-docs.sgml | 2 +-
+ doc/reference/seed-sections.txt | 74 +++++---
+ doc/reference/tmpl/seed-types.sgml | 22 +++
+ doc/reference/tmpl/seed-unused.sgml | 24 +++
+ doc/reference/tmpl/seed.sgml | 319 +++++++++++++++++++++--------------
+ 7 files changed, 287 insertions(+), 158 deletions(-)
+
+commit dd05c6962e83903a26242e557856226d1411c4ee
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 15:13:37 2009 -0500
+
+ Fix missing seed_union_set_property implementation.
+
+ libseed/seed-structs.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 43 insertions(+), 1 deletions(-)
+
+commit 02e716dcb604820918b89d46893cbb8bc2ce6e81
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 15:00:45 2009 -0500
+
+ Remove gtype-signal-gvalue.js test as it is nonsense (Note GObject.TYPE_VALUE does not exist)
+
+ tests/javascript/gtype-signal-gvalue.js | 33 -------------------------------
+ 1 files changed, 0 insertions(+), 33 deletions(-)
+
+commit 94dc664a9f3a8b06ab91abe1682e442e64a4f1f5
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 14:58:41 2009 -0500
+
+ Fix readline bindings Makefile
+
+ modules/readline/Makefile.am | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit dc2a4d2bfe91fe1dfc0a86a036a744020270cbdb
+Author: Robert Carr <racarr@mireia.(none)>
+Date: Mon Feb 23 14:34:47 2009 -0500
+
+ Lots of cleanup, standardize on GNU coding style
+
+ libseed/seed-api.c | 260 +++--
+ libseed/seed-builtins.c | 560 +++++-----
+ libseed/seed-builtins.h | 2 +-
+ libseed/seed-closure.c | 803 +++++++-------
+ libseed/seed-closure.h | 38 +-
+ libseed/seed-debug.h | 25 +-
+ libseed/seed-engine.c | 2447 +++++++++++++++++++++---------------------
+ libseed/seed-engine.h | 31 +-
+ libseed/seed-exceptions.c | 210 ++--
+ libseed/seed-exceptions.h | 18 +-
+ libseed/seed-gtype.c | 1275 +++++++++++-----------
+ libseed/seed-gtype.h | 2 +-
+ libseed/seed-private.h | 9 +-
+ libseed/seed-signals.c | 630 ++++++------
+ libseed/seed-signals.h | 17 +-
+ libseed/seed-structs.c | 1113 ++++++++++----------
+ libseed/seed-structs.h | 44 +-
+ libseed/seed-types.c | 2671 +++++++++++++++++++++++----------------------
+ libseed/seed-types.h | 206 ++--
+ libseed/seed.h | 484 +++++----
+ m4/libtool.m4 | 128 ++-
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 +-
+ m4/ltversion.m4 | 10 +-
+ 24 files changed, 5571 insertions(+), 5434 deletions(-)
+
+commit 27ed983ad63387888ac82a518f40b4d3bd37861a
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 14:30:44 2009 -0500
+
+ Long patch from Matt that changes lots of things to glib functions, removing most of the stdio includes so we don't accidentally use them, switching printf(size_t) to use %Zd instead of casting to an int, etc.
+
+ libseed/seed-builtins.c | 22 ++++++++++------------
+ libseed/seed-engine.c | 15 ++++++---------
+ libseed/seed-gtype.c | 13 +++++--------
+ libseed/seed-private.h | 3 +--
+ libseed/seed-signals.c | 13 ++++++-------
+ modules/readline/seed-readline.c | 3 ++-
+ src/main.c | 8 ++++----
+ 7 files changed, 34 insertions(+), 43 deletions(-)
+
+commit f5d221245fa2a65596f1a6ebe441e4e61fa97667
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 13:04:47 2009 -0500
+
+ Matt's type fixes, and a warning fix (use %Zd instead of %d to print size_t)
+
+ modules/readline/seed-readline.c | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 329afbfb2c44787e7dc2a0294b16552d3ad328b2
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 05:36:17 2009 -0500
+
+ More GtkDoc. Also, apparently there are functions we have that aren't showing up in GtkDoc. Maybe because they're not in the seed-sections.txt or whatever? Anyway, goodnight.
+
+ libseed/seed-api.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 86d65b3caaf7722f429d8863a3324555c8e356c1
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 05:31:42 2009 -0500
+
+ More GtkDoc.
+
+ libseed/seed-api.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 61 insertions(+), 0 deletions(-)
+
+commit 172885cbc722401ee8650f95e97afe0068e4a8cd
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:46:29 2009 -0500
+
+ It's finally time to start working on Gtk-Doc! Here's a slim beginning.
+
+ doc/reference/tmpl/seed.sgml | 2 +-
+ libseed/seed-api.c | 31 +++++++++++++++++++++++++++----
+ libseed/seed-engine.c | 10 ++++++++++
+ libseed/seed.h | 2 +-
+ 4 files changed, 39 insertions(+), 6 deletions(-)
+
+commit 44ab7acf0fbb0abdd6b3d7c0990c290f40ba4e39
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:25:38 2009 -0500
+
+ Fix some autotools stuff so opengl and twitter examples get distributed in seed tarballs.
+
+ examples/opengl/Makefile.am | 4 ++++
+ examples/twitter/Makefile.am | 5 ++++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 6eeb16faaed7bbb72fe663f8950e1c0be2c9284f
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:17:01 2009 -0500
+
+ Removed open question:
+ * Why don't Clutter 0.9 GIRs have offsets for ClutterColor?
+ Because we've resolved it: it was actually a clutter_color_parse annotation problem. There's a patch in /patches, and I'll file a bug against clutter tomorrow. Perhaps we can get a better API? (var col = Clutter.Color.parse("red"), or some such).
+
+ OPEN_QUESTIONS | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 36ee8c74c976dfd963c2d5b6a6423ab77a99b098
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:13:51 2009 -0500
+
+ Update changelog for today's business.
+
+ ChangeLog | 13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 0c0d39b47b7c576ea84af10c8e009ce8c1fc96f1
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:09:31 2009 -0500
+
+ More JSLint fixes.
+
+ examples/same-seed/board.js | 39 +++++++++++++++++++++------------------
+ examples/same-seed/light.js | 20 ++++++++++----------
+ 2 files changed, 31 insertions(+), 28 deletions(-)
+
+commit 501786682fca3ee52ed681fe950fc05807621de0
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 04:03:28 2009 -0500
+
+ Fix two examples to conform to jslint.
+
+ examples/gtkplug.js | 24 +++++++++++-------------
+ examples/ls.js | 2 +-
+ 2 files changed, 12 insertions(+), 14 deletions(-)
+
+commit fc9f8400258dbe340831213a5d4db7ecf1e6e518
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 03:54:54 2009 -0500
+
+ Still slightly broken readline detection is now fixed - some things were manually linking against readline, which was wrong.
+
+ src/Makefile.am | 2 +-
+ tests/c/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 1a828a87517162aeede71a7a48cc707663f18930
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 03:50:09 2009 -0500
+
+ Indent session!
+
+ libseed/seed-engine.c | 35 +++++-----
+ libseed/seed-types.c | 2 +-
+ modules/readline/seed-readline.c | 4 +-
+ src/main.c | 29 ++++----
+ tests/c/api-closure.c | 38 +++++-----
+ tests/c/api-js-signal-from-c.c | 56 ++++++++-------
+ tests/c/api-types.c | 145 +++++++++++++++++++-------------------
+ tests/c/basic.c | 1 -
+ tests/c/main.c | 28 ++++----
+ tests/c/test-common.h | 12 +--
+ tools/indent.sh | 5 +-
+ 11 files changed, 176 insertions(+), 179 deletions(-)
+
+commit fe6f209ed2199064a1f3b7313d89c2cafacc5e74
+Author: Tim Horton <hortont@hortont.com>
+Date: Sun Feb 22 03:23:33 2009 -0500
+
+ A patch from Matt adding persistent readline history.
+
+ modules/readline/seed-readline.c | 15 ++++++++++++++-
+ 1 files changed, 14 insertions(+), 1 deletions(-)
+
+commit c8e6acde9e1e6510f53d5629553109add61243e6
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sun Feb 22 00:15:17 2009 -0500
+
+ Add matt's clutter thing to changelog.
+
+ ChangeLog | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 235d8d36231c9d1ad443b02754f8b97a21b57bb8
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sun Feb 22 00:08:18 2009 -0500
+
+ Fix up some docs autotools stuff, add empty shell of a 'mapping' guide like Gjs has.
+
+ configure.ac | 1 +
+ doc/Makefile.am | 7 ++++---
+ doc/mapping.html.in | 27 +++++++++++++++++++++++++++
+ doc/modules/Makefile.am | 4 ++--
+ doc/tutorial-standalone/Makefile.am | 2 +-
+ 5 files changed, 35 insertions(+), 6 deletions(-)
+
+commit 60f1c91638469ce3deb738eca5e46ef721f2e63c
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 22:21:41 2009 -0500
+
+ Cleanup Matt's patch a bit.
+
+ examples/clutter-0.9.js | 50 +++++++++++++++++++++++-----------------------
+ 1 files changed, 25 insertions(+), 25 deletions(-)
+
+commit 29e5899f27883df08fa68dfdc6f747cf7dfca241
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 22:08:50 2009 -0500
+
+ Whoops! Forgot to update Makefile for new clutter example.
+
+ examples/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit c6762e551c73fa47a304300b02f4b1db0a016280
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 22:03:33 2009 -0500
+
+ Matt rewrote Robb's Clutter "game" for Clutter 0.9, using the new animation API and such. Requires the clutter-color-out-annotation.patch as of commit time, but hopefully that'll go upstream. Now we have something that uses Clutter 0.9 without using GtkClutter (yay!!)
+
+ examples/HACKING | 4 +-
+ examples/clutter-0.8.js | 123 +++++++++++++++++++++++++++++++++++++++++++++++
+ examples/clutter-0.9.js | 108 +++++++++++++++++++++++++++++++++++++++++
+ examples/clutter.js | 123 -----------------------------------------------
+ 4 files changed, 233 insertions(+), 125 deletions(-)
+
+commit 2e5dcf1bac1361f5a6fe93773f8f60e85ef93e9f
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 21:44:58 2009 -0500
+
+ It seems like a good idea to keep the not-yet-applied patches that we create against upstream projects /somewhere/ besides in my email...
+
+ patches/clutter-animatev-with-annotation.patch | 325 ++++++++++++++++++++++++
+ patches/clutter-color-out-annotation.patch | 13 +
+ 2 files changed, 338 insertions(+), 0 deletions(-)
+
+commit 4825c424c117e259891613b205b1c6ba32990f02
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 21:38:16 2009 -0500
+
+ Struct offset test change from earlier no longer applies. An extra annotation to clutter_color_parse was what actually broke things; I have a patch to fix it.
+
+ tests/javascript/struct-offsets.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0137efe639774f23dc710e86613ceddec329679c
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 20:05:34 2009 -0500
+
+ Fix seed_repl_expose output formatting.
+
+ libseed/seed-engine.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit a175cf31a1ecf85401a491c27252835f932db80a
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 19:26:14 2009 -0500
+
+ Add seed_repl_expose C function. Call it, you're dropped to a REPL with the arguments passed to seed_repl_expose stored in the array Seed.debug_argv.
+
+ This is useful when you've got JSValue* stuff sitting around in C and want to poke around at it from Javascript.
+
+ libseed/seed-engine.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.h | 2 ++
+ 2 files changed, 42 insertions(+), 0 deletions(-)
+
+commit f472db3f817806b19bdc8ff5132f25208a1d1c98
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 17:08:57 2009 -0500
+
+ Twitter client profile images are aligned right now.
+
+ examples/twitter/twitter.js | 9 +++------
+ 1 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 10b7e167ac8c7dc2b7563c517b01874c4f10bde5
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 16:54:47 2009 -0500
+
+ Fix Twitter client so it responds to enter key as well as click.
+
+ examples/twitter/twitter.js | 19 ++++++++++++-------
+ 1 files changed, 12 insertions(+), 7 deletions(-)
+
+commit ebc57b82c9642273981e156e9b2be5f2603db7ea
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 04:33:31 2009 -0500
+
+ Add a file of open questions that I have. If anyone has answers, let me know!
+
+ OPEN_QUESTIONS | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit ffa1e19cdb74c80ae8e16f79da78cef011152b51
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 04:07:58 2009 -0500
+
+ Add middle-click-open-in-new-tab to seed browser. This exposes a bug in something which causes a segfault, so it's disabled for now.
+
+ examples/browser/BrowserView.js | 17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 30b49fc14813d0a43095ea2c5d1f47b6ce4f13a5
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:44:27 2009 -0500
+
+ Remove old copy of the browser (bad Git import, I assume...)
+
+ ChangeLog | 2 +-
+ examples/browser/browser-actions.js | 347 ---------------------------------
+ examples/browser/browser-bookmarks.js | 54 -----
+ examples/browser/browser-find.js | 39 ----
+ examples/browser/browser-main.js | 24 ---
+ examples/browser/browser-menu.js | 148 --------------
+ examples/browser/browser-tab.js | 160 ---------------
+ examples/browser/browser-toolbar.js | 25 ---
+ 8 files changed, 1 insertions(+), 798 deletions(-)
+
+commit 565cb80fb5c91153f23722f4626a7c90107f7e29
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:43:20 2009 -0500
+
+ Add a few tiny conventions.
+
+ doc/conventions.html.in | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit b80c26d7c5f41881f4fd2929be89c3385b1e4508
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:36:40 2009 -0500
+
+ Use gnome-www-browser instead of gnome-open for profiling output.
+
+ Makefile.am | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 3c03707bd667354e09f6f7228775124c6275d2f3
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:32:02 2009 -0500
+
+ For some reason (upstream!) Clutter 0.9 GIRs don't have offset data for ClutterColor. Someone should fix this.
+
+ tests/javascript/struct-offsets.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bdca452535c11a66f11e4a2eb2878539d31fbe88
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:29:51 2009 -0500
+
+ Fix some tests I accidentally broke in the last one (line numbers in exceptions changed, etc.)
+
+ tests/javascript/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtype-signal-args.js | 4 +---
+ tests/javascript/signal-exception.js | 2 +-
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+commit 4aa918fcd7fbce13df809e6052ec9e1d5ad6b38c
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:25:55 2009 -0500
+
+ Test formatting cleanup; lots of duplicated test headers.
+
+ tests/javascript/argv.js | 1 +
+ tests/javascript/array-gtype.js | 1 +
+ tests/javascript/builtin-argument-length.js | 4 ----
+ tests/javascript/c-module.js | 1 +
+ tests/javascript/closure-finalization.js | 1 +
+ tests/javascript/constructor-args.js | 1 +
+ tests/javascript/constructor-prototype.js | 1 +
+ tests/javascript/function-info.js | 1 +
+ tests/javascript/gerror.js | 4 ----
+ tests/javascript/gtype-class-init-exception.js | 1 +
+ tests/javascript/gtype-property.js | 4 ----
+ tests/javascript/gtype-signal-exception.js | 4 ----
+ tests/javascript/gtype-typerror.js | 1 +
+ tests/javascript/gvalue-argument.js | 1 +
+ tests/javascript/include-syntax.js | 1 +
+ tests/javascript/json.js | 3 ++-
+ tests/javascript/object-info.js | 1 +
+ tests/javascript/printf.js | 3 ++-
+ tests/javascript/printprint.js | 1 +
+ tests/javascript/signal-exception.js | 1 +
+ tests/javascript/struct-constructor.js | 1 +
+ tests/javascript/struct-enumerate.js | 3 ++-
+ tests/javascript/struct-functions.js | 1 +
+ tests/javascript/struct-nested-set.js | 1 +
+ tests/javascript/struct-offsets.js | 5 +----
+ tests/javascript/struct-set-member.js | 7 ++-----
+ tests/javascript/struct-union-enumerate.js | 5 +----
+ 27 files changed, 27 insertions(+), 32 deletions(-)
+
+commit ad8f93a26b0daa4c8ee55ee567c1dce0f55ceee1
+Author: Tim Horton <hortont@jayne.(none)>
+Date: Sat Feb 21 03:15:59 2009 -0500
+
+ Don't depend on SVN.
+
+ doc/reference/html/index.html | 37 ++++++++++++
+ m4/libtool.m4 | 128 +++++++++++++----------------------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 +++---
+ m4/ltversion.m4 | 10 ++--
+ tests/run-tests.py | 5 +-
+ 6 files changed, 94 insertions(+), 108 deletions(-)
+
+commit 3775824bb6d2ee01ff1c0b76f4b88ffe5745ec93
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Mon Feb 16 16:15:09 2009 -0500
+
+ Didn't mean to add animate_with_timeline in the last push.
+
+ extensions/Clutter.js | 11 -----------
+ 1 files changed, 0 insertions(+), 11 deletions(-)
+
+commit a5151b40292f1ef471ed182dae450bc8af3c7e09
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Mon Feb 16 16:13:10 2009 -0500
+
+ Add SameSeed GtkBuilder UI file.
+
+ examples/same-seed/board.js | 2 +-
+ examples/same-seed/same-seed.ui | 72 +++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 73 insertions(+), 1 deletions(-)
+
+commit 78c793c89abee31453050d57db35126a20966bfb
+Author: Tim Horton <hortont@Kaylee.(none)>
+Date: Sat Feb 14 05:05:57 2009 -0500
+
+ Holy crap so many changes.
+
+ examples/same-seed/board.js | 63 ++++++++++++++++++++++++++++--------------
+ examples/same-seed/light.js | 4 ++-
+ examples/same-seed/main.js | 20 +++++++-------
+ examples/same-seed/score.js | 7 +++-
+ extensions/Clutter.js | 12 ++++++++
+ 5 files changed, 72 insertions(+), 34 deletions(-)
+
+commit b55988d81517f3d176c9f74ee89189df03bd7cce
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Feb 7 09:39:53 2009 +0000
+
+ A note about a potential leak for Robb.
+
+ svn path=/trunk/; revision=852
+
+ libseed/seed-types.c | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 5f7f3a35bdbcd4a38bb98516b4e2cb769a3ad129
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Feb 7 09:19:31 2009 +0000
+
+ Indent session!
+
+ svn path=/trunk/; revision=851
+
+ libseed/seed-api.c | 64 +-
+ libseed/seed-builtins.c | 5 +-
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-types.c | 2540 ++++++++++++++++++++++++-----------------------
+ libseed/seed.h | 12 +-
+ 6 files changed, 1308 insertions(+), 1317 deletions(-)
+
+commit cb254217c849bac205cbd876061f6fd967e899fa
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Feb 7 08:39:57 2009 +0000
+
+ Headers have consistent "headers", too! Also, fix everything.js (forgot to update enum casing a long time ago...)
+
+ svn path=/trunk/; revision=850
+
+ libseed/seed-builtins.h | 26 +++++++++++++-------------
+ libseed/seed-closure.h | 27 ++++++++++++++-------------
+ libseed/seed-debug.h | 21 +++++++++++++++++++++
+ libseed/seed-engine.h | 26 +++++++++++++-------------
+ libseed/seed-exceptions.h | 27 ++++++++++++++-------------
+ libseed/seed-gtype.h | 26 +++++++++++++-------------
+ libseed/seed-private.h | 26 +++++++++++++-------------
+ libseed/seed-signals.h | 26 +++++++++++++-------------
+ libseed/seed-structs.h | 26 +++++++++++++-------------
+ libseed/seed-types.h | 26 +++++++++++++-------------
+ libseed/seed.h | 32 +++++++++++++++++---------------
+ tests/javascript/everything.js | 12 ++++++------
+ 12 files changed, 163 insertions(+), 138 deletions(-)
+
+commit ec254cb7f301203c85220d6377a9659360cfd65c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Feb 7 08:37:45 2009 +0000
+
+ Consistent headers across the C files.
+
+ svn path=/trunk/; revision=849
+
+ libseed/seed-api.c | 31 ++++++++++++++++++-------------
+ libseed/seed-builtins.c | 34 +++++++++++++++++-----------------
+ libseed/seed-closure.c | 31 ++++++++++++++++---------------
+ libseed/seed-engine.c | 32 +++++++++++++++++---------------
+ libseed/seed-exceptions.c | 26 +++++++++++++-------------
+ libseed/seed-gtype.c | 32 +++++++++++++++++---------------
+ libseed/seed-signals.c | 32 +++++++++++++++++---------------
+ libseed/seed-structs.c | 32 +++++++++++++++++---------------
+ libseed/seed-types.c | 28 ++++++++++++++--------------
+ 9 files changed, 146 insertions(+), 132 deletions(-)
+
+commit 320c2efcd27714d59504b734050fb57d66373083
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Feb 7 08:07:34 2009 +0000
+
+ ChangeLog - this is actually 0.5 not 0.4, and update SS to match clutter changes.
+
+ svn path=/trunk/; revision=848
+
+ ChangeLog | 2 +-
+ examples/same-seed/score.js | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 03c6ca522a5406dfce947f6da5a792855f76da75
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Feb 6 00:56:11 2009 +0000
+
+ Updating ChangeLog, etc.
+
+ svn path=/trunk/; revision=847
+
+ ChangeLog | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 3b148ad1957b272436cb96bfa1a103a31e6b3e3b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Feb 6 00:28:47 2009 +0000
+
+ working on 0.4 release stuff.
+
+ svn path=/trunk/; revision=846
+
+ ChangeLog | 18 +++++++-
+ examples/HACKING | 37 +++++++++++++--
+ m4/libtool.m4 | 128 +++++++++++++++++++++++++++++++++++++-----------------
+ m4/ltoptions.m4 | 2 +-
+ m4/ltsugar.m4 | 20 ++++----
+ m4/ltversion.m4 | 10 ++--
+ 6 files changed, 153 insertions(+), 62 deletions(-)
+
+commit 98bc13d651afed0525212e837ac415e93646857b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 17:18:03 2009 +0000
+
+ Whoops random debugging stuff...
+
+ svn path=/trunk/; revision=845
+
+ examples/same-seed/board.js | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit 02d4218f4c5bec0627a18ab2eb797e001ff1361e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 17:16:49 2009 +0000
+
+ Horrible hack to make SS work on slower machines/with many, many tiles... will be much improved when we gain the ability to pass a timeline into the animate function.
+
+ svn path=/trunk/; revision=844
+
+ examples/same-seed/board.js | 24 +++++++++++++++++++++---
+ examples/same-seed/light.js | 4 ++++
+ 2 files changed, 25 insertions(+), 3 deletions(-)
+
+commit d2c641af2dbca7580e083ba75dc5e6359e81b0ec
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 16:40:32 2009 +0000
+
+ Picking directly after animation works now.
+
+ svn path=/trunk/; revision=843
+
+ examples/same-seed/board.js | 11 +++++++++--
+ 1 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 662a1f2d708d6e7946e74a04d8ed7a3329e64936
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 16:37:53 2009 +0000
+
+ Much improved picking.
+
+ svn path=/trunk/; revision=842
+
+ examples/same-seed/board.js | 11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+commit e4ea4257ecf0a6b91407919c538b9a09fc13a1f4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 16:19:59 2009 +0000
+
+ Fix an exception in SS.
+
+ svn path=/trunk/; revision=841
+
+ examples/same-seed/board.js | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit ad8bc14757ff55ad7421144e8799eaf0e83ee745
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 16:05:04 2009 +0000
+
+ Woah timings are sometimes important.
+
+ svn path=/trunk/; revision=840
+
+ examples/same-seed/board.js | 6 +++---
+ examples/same-seed/main.js | 3 +--
+ examples/same-seed/score.js | 2 +-
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+commit 2035b88c736dd5792cb0ee2b90c14b1dc39dbf69
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 15:30:08 2009 +0000
+
+ Fix exception in sameseed.
+
+ svn path=/trunk/; revision=839
+
+ examples/same-seed/board.js | 4 ++--
+ examples/same-seed/main.js | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 457efa63dcf6716b1a2953ea1b8d3c6a038ac843
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 15:19:25 2009 +0000
+
+ Oops forgot a file.
+
+ svn path=/trunk/; revision=838
+
+ examples/same-seed/score.js | 76 +++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 76 insertions(+), 0 deletions(-)
+
+commit 4463c9a076358fcfed8cc70be6a056450784abfd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 15:14:20 2009 +0000
+
+ Lots and lots of Same Seed updates.
+
+ svn path=/trunk/; revision=837
+
+ examples/same-seed/blue.svg | 24 +++---
+ examples/same-seed/board.js | 200 ++++++++++++++++++++---------------------
+ examples/same-seed/green.svg | 26 +++---
+ examples/same-seed/light.js | 50 +++++++++--
+ examples/same-seed/main.js | 35 +++++---
+ examples/same-seed/red.svg | 26 +++---
+ examples/same-seed/yellow.svg | 26 +++---
+ 7 files changed, 210 insertions(+), 177 deletions(-)
+
+commit a8b7d8460af0fda3c93d912d135e61f922ad6bc0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 10:04:22 2009 +0000
+
+ Significantly better animation performance.
+
+ svn path=/trunk/; revision=836
+
+ examples/same-seed/board.js | 10 ++++++----
+ examples/same-seed/light.js | 4 ++--
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit a226f6f7616fa09d8c082ae1873f960574625bf5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 09:53:25 2009 +0000
+
+ Better animation, etc.
+
+ svn path=/trunk/; revision=835
+
+ examples/same-seed/board.js | 61 ++++++++++++++++++++++++++++++++++++------
+ examples/same-seed/light.js | 11 ++++++-
+ examples/same-seed/main.js | 2 +
+ 3 files changed, 63 insertions(+), 11 deletions(-)
+
+commit 5fc0118fad0e4222d5d46bb827e62c279db09820
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 08:59:57 2009 +0000
+
+ Oh wow Same Seed animations!
+
+ svn path=/trunk/; revision=834
+
+ examples/same-seed/board.js | 9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 0b724146fb56a37fbbd8268be56c74c698915a52
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Feb 3 08:37:50 2009 +0000
+
+ I suck at version control
+
+ svn path=/trunk/; revision=833
+
+ extensions/Clutter.js | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 9e291fe56ecff003fc5e7bc70f0a7a71f5106417
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Feb 3 08:36:52 2009 +0000
+
+ 80 characters!
+
+ svn path=/trunk/; revision=832
+
+ examples/same-seed/board.js | 71 ++++++++----------------------------------
+ examples/same-seed/main.js | 4 +-
+ 2 files changed, 16 insertions(+), 59 deletions(-)
+
+commit da23967ab28120dcf24945ac9c20f63a3ca62ffa
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Feb 3 08:33:28 2009 +0000
+
+ AHHHHH
+
+ svn path=/trunk/; revision=831
+
+ extensions/Makefile.am | 4 +-
+ libseed/seed-types.c | 2493 ++++++++++++++++++++++++------------------------
+ 2 files changed, 1272 insertions(+), 1225 deletions(-)
+
+commit 30873dd727911f7ddef385f7feb24e1e7b9ada61
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 12:10:34 2009 +0000
+
+ Whoops forgot to add the test.
+
+ svn path=/trunk/; revision=830
+
+ tests/c/api-js-signal-from-c.c | 43 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 43 insertions(+), 0 deletions(-)
+
+commit 883073b5e3aa189d2b2afbbe425f447efdba3515
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 11:46:08 2009 +0000
+
+ Fix silly nested switch in seed-types, add test that doesn't work (something's broken with return types of Seed-installed signals).
+
+ svn path=/trunk/; revision=829
+
+ libseed/seed-types.c | 59 +++++++++++++++------------------
+ tests/c/Makefile.am | 3 +-
+ tests/c/main.c | 1 +
+ tests/javascript/gtype-signal-args.js | 7 +++-
+ 4 files changed, 35 insertions(+), 35 deletions(-)
+
+commit f22ab8431b65778c62276f1a6d6fdcd3725d2afb
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 06:48:03 2009 +0000
+
+ Same Seed. It works, but Clutter is broken. Or something. So uh. No animations at the moment.
+
+ svn path=/trunk/; revision=828
+
+ examples/same-seed/board.js | 163 +++++++++++++++++++++++++++++++++++--------
+ examples/same-seed/main.js | 7 ++-
+ 2 files changed, 140 insertions(+), 30 deletions(-)
+
+commit f7fb36a21250ddef0cd8a4eeca58f555c2188b52
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 04:25:49 2009 +0000
+
+ Use clutter 0.9.
+
+ svn path=/trunk/; revision=827
+
+ examples/same-seed/light.js | 12 ++++++------
+ examples/same-seed/main.js | 7 +++++--
+ 2 files changed, 11 insertions(+), 8 deletions(-)
+
+commit 1bc97cec25e6d5798f6a28f021991c095a964902
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 01:25:02 2009 +0000
+
+ Game works now (forgot sliding left when you empty a row...)
+
+ svn path=/trunk/; revision=826
+
+ examples/same-seed/board.js | 95 ++++++++++--------------------------------
+ examples/same-seed/main.js | 4 +-
+ 2 files changed, 25 insertions(+), 74 deletions(-)
+
+commit e33c17f3f8af6cc2145dfe52edefdc84f781b367
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Feb 2 01:06:53 2009 +0000
+
+ There's a long debugging function here. It's going away but might be useful later. The game is playable now. Yay!
+
+ svn path=/trunk/; revision=825
+
+ examples/same-seed/board.js | 124 +++++++++++++++++++++++++++++++------------
+ examples/same-seed/light.js | 13 +----
+ examples/same-seed/main.js | 4 +-
+ 3 files changed, 95 insertions(+), 46 deletions(-)
+
+commit c9faa7551dba7c4adb1bdf819538c49cd00acb57
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Feb 1 23:49:35 2009 +0000
+
+ Initial version of our same gnome clone (with clutter/svg/etc.)
+
+ svn path=/trunk/; revision=824
+
+ examples/same-seed/bkg.svg | 95 +++++++++++++++++++++
+ examples/same-seed/blue.svg | 97 ++++++++++++++++++++++
+ examples/same-seed/board.js | 183 +++++++++++++++++++++++++++++++++++++++++
+ examples/same-seed/green.svg | 97 ++++++++++++++++++++++
+ examples/same-seed/light.js | 88 ++++++++++++++++++++
+ examples/same-seed/main.js | 37 ++++++++
+ examples/same-seed/red.svg | 97 ++++++++++++++++++++++
+ examples/same-seed/yellow.svg | 97 ++++++++++++++++++++++
+ 8 files changed, 791 insertions(+), 0 deletions(-)
+
+commit bf499fe1a240d865af305a845eefaaebe6bfc9c2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 30 00:32:44 2009 +0000
+
+ Still segfaulting. One fault is in Seed.print, the other one will need to wait for me to get to a machine with a WebKit debug build.
+
+ svn path=/trunk/; revision=823
+
+ tests/javascript/gtype-signal-gvalue.js | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8638a002defedb7778aab63b9bb37ea69090fb96
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 30 00:21:35 2009 +0000
+
+ If you install a signal (from JS) which wants to return a GValue, and you return a JS number type, Seed segfaults (as you can see in this test. This shouldn't happen, but I'm not sure what should ...
+
+ svn path=/trunk/; revision=822
+
+ tests/javascript/gtype-signal-gvalue.js | 31 +++++++++++++++++++++++++++++++
+ 1 files changed, 31 insertions(+), 0 deletions(-)
+
+commit 37bcb2c3202d2dfe48eec501742b8cf5fc64f0c0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 29 19:22:19 2009 +0000
+
+ More type tests, module profiling is optional now
+
+ svn path=/trunk/; revision=821
+
+ Makefile.am | 12 +++++-
+ config.h.in | 3 +
+ configure.ac | 12 ++++++
+ modules/Multiprocessing/Makefile.am | 9 +++-
+ modules/canvas/Makefile.am | 9 +++-
+ modules/example/Makefile.am | 9 +++-
+ modules/readline/Makefile.am | 9 +++-
+ modules/sqlite/Makefile.am | 9 +++-
+ tests/c/api-types.c | 75 +++++++++++++++++++++++++++++++++++
+ 9 files changed, 135 insertions(+), 12 deletions(-)
+
+commit daace0cde64ddccf9d121756b1329ec5d178c3f9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 29 18:24:17 2009 +0000
+
+ Add seed_script_new_from_file
+
+ svn path=/trunk/; revision=820
+
+ libseed/seed-api.c | 93 ++++++++++++++++++++++++++++++++--------------------
+ libseed/seed.h | 2 +
+ 2 files changed, 59 insertions(+), 36 deletions(-)
+
+commit 4ffe29f19ed524c254107eaf7951f3a08f8b7928
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 29 18:24:05 2009 +0000
+
+ Implement seed_value_is_null seed_value_is_object and seed_object_is_function
+
+ svn path=/trunk/; revision=819
+
+ libseed/seed-api.c | 20 ++++++++++++++++++++
+ libseed/seed-engine.c | 4 +++-
+ libseed/seed.h | 7 +++++++
+ 3 files changed, 30 insertions(+), 1 deletions(-)
+
+commit d29ca7d4154e9442045665606e3822def048eacf
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 28 10:48:26 2009 +0000
+
+ Fix small warning with automake.
+
+ svn path=/trunk/; revision=818
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit ef28ff8b116d40959e756b60ee36fa5dc14d8d60
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 28 10:35:15 2009 +0000
+
+ Finally found the WebKit revno that we require.
+
+ svn path=/trunk/; revision=817
+
+ README | 2 ++
+ configure.ac | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit d9e0946e0386a5adfd5c53f305bd3b1e48ae17fb
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 28 09:18:06 2009 +0000
+
+ Remove opengl-glib, since it's now in its own GNOME SVN module.
+
+ svn path=/trunk/; revision=816
+
+ Makefile.am | 3 +-
+ configure.ac | 43 -
+ opengl-glib/GL-1.0.gir | 7196 -------------------------------------------
+ opengl-glib/GL-custom.h | 520 ----
+ opengl-glib/GLTypes-1.0.gir | 35 -
+ opengl-glib/GLU-1.0.gir | 1584 ----------
+ opengl-glib/GLUT-1.0.gir | 2036 ------------
+ opengl-glib/Glut-custom.h | 80 -
+ opengl-glib/Makefile.am | 20 -
+ 9 files changed, 1 insertions(+), 11516 deletions(-)
+
+commit 03441fef543416c2237afd9c306907d348a99f2e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 28 00:55:17 2009 +0000
+
+ Add the annotation files for the OpenGL girs
+
+ svn path=/trunk/; revision=815
+
+ examples/clutter-cogl.js | 4 +-
+ opengl-glib/GL-custom.h | 520 +++++++++++++++++++++++++++++++++++++++++++++
+ opengl-glib/Glut-custom.h | 80 +++++++
+ 3 files changed, 602 insertions(+), 2 deletions(-)
+
+commit d6240c18413b13da8e240d01755fc8285c8fdbcc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 26 15:16:49 2009 +0000
+
+ Allow --disable-opengl-glib, also check for all three headers (GL/GLU/GLUT) before building.
+
+ svn path=/trunk/; revision=814
+
+ configure.ac | 34 +++++++++++++++++++++++++++++++---
+ 1 files changed, 31 insertions(+), 3 deletions(-)
+
+commit 142095adeedf40e38fcadd15e7100ca5dc6f0dfd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 26 00:58:49 2009 +0000
+
+ Update deps.
+
+ svn path=/trunk/; revision=813
+
+ debian/control | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 356e8cf2ad16141e75186e66c60089448303ad30
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 26 00:54:47 2009 +0000
+
+ Add Debian packaging stuff here, since we're still maintaining it ourselves.
+
+ svn path=/trunk/; revision=812
+
+ debian/changelog | 59 +++++++++++++++++++
+ debian/control | 46 +++++++++++++++
+ debian/copyright | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/rules | 61 ++++++++++++++++++++
+ 4 files changed, 331 insertions(+), 0 deletions(-)
+
+commit 012006f15eedb371a6e8f567fb5063cd650a8849
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 26 00:42:31 2009 +0000
+
+ Fix object-info test on Jaunty. It's a bad test...
+
+
+ svn path=/trunk/; revision=811
+
+ tests/javascript/object-info.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8980502b8324ae483f6ce17dc54ee5b96666c320
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 26 00:33:36 2009 +0000
+
+ Tests now give diffs, instead of just printing both outputs!
+
+
+ svn path=/trunk/; revision=810
+
+ tests/run-tests.py | 15 +++++++++++----
+ 1 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 2dfacd390cdb45c75428a27af3f69b051da737dc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 20:30:32 2009 +0000
+
+ Fix missing semicolons in builtin-argument-length test.
+
+ svn path=/trunk/; revision=809
+
+ tests/javascript/builtin-argument-length.js | 32 +++++++++++++-------------
+ 1 files changed, 16 insertions(+), 16 deletions(-)
+
+commit e366bcfc1ad6cef16ebb0a639fb98870f6e8fd62
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 10:26:00 2009 +0000
+
+ More JSLint fixes. That's all, for tonight.
+
+ svn path=/trunk/; revision=808
+
+ examples/browser/BrowserView.js | 2 +-
+ examples/browser/TabbedBrowser.js | 2 +-
+ examples/clutter-shader/ShaderView.js | 2 +-
+ examples/clutter-transitions/main.js | 2 +-
+ examples/clutter-transitions/transition-library.js | 48 ++++++++++---------
+ examples/glib/timeout.js | 3 +-
+ examples/opengl/seed-gears.js | 31 +++++++-----
+ examples/opengl/triangle-actor.js | 39 ++++++++--------
+ examples/pong/pong.js | 16 +++---
+ examples/poppler.js | 2 +-
+ examples/twitter/pretty.js | 2 +-
+ examples/twitter/twitter.js | 10 ++--
+ tests/javascript/struct-union-enumerate.js | 2 +-
+ 13 files changed, 85 insertions(+), 76 deletions(-)
+
+commit 5ff2dd4947b80c55f511e1d3cb3a827ca5f44b0d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:54:50 2009 +0000
+
+ Pong should also require Clutter 0.8.
+
+ svn path=/trunk/; revision=807
+
+ examples/pong/pong.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6923ab0ec4d492da7a863bf6b1977c90874f3e7a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:52:26 2009 +0000
+
+ Fix all of the Clutter examples to require Clutter 0.8.
+
+ svn path=/trunk/; revision=806
+
+ examples/clutter-cogl.js | 2 +-
+ examples/clutter-shader/main.js | 2 +-
+ examples/clutter-transitions/transition-library.js | 2 +-
+ examples/clutter.js | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit a1ca8d8db4f0fe594635f753997a3faf80099eb8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:48:51 2009 +0000
+
+ ClutterCairo works now if you have both 0.8 and 0.9 installed.
+
+ svn path=/trunk/; revision=805
+
+ examples/clutter-cairo.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 6e1aac94cb32b9d3e771ad2f0aebcfac18564dd9
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:47:14 2009 +0000
+
+ Most of the examples pass JSLint now; JSLint now accepts "const".
+
+
+ svn path=/trunk/; revision=804
+
+ examples/accelgroup.js | 2 +-
+ examples/actions.js | 2 +-
+ examples/async-quine.js | 4 ++--
+ examples/calculator.js | 7 +++----
+ examples/clutter-cogl.js | 14 +++++++-------
+ examples/clutter.js | 8 ++++----
+ examples/gdkpixbufloader.js | 3 ++-
+ examples/gtkplug.js | 2 +-
+ examples/n-oscillator.js | 23 ++++++++++++-----------
+ examples/poppler.js | 18 ++++++++++++------
+ examples/quine.js | 2 +-
+ examples/vte-test.js | 2 +-
+ tools/jslint.js | 1 +
+ 13 files changed, 48 insertions(+), 40 deletions(-)
+
+commit 08105e580b708e067b005ba7678eb0c44e33f390
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:15:01 2009 +0000
+
+ Fix one example to pass JSLint, fixed 'with', so it doesn't complain (the maintainer doesn't /believe/ in 'with', for good reason, but ... still ...)
+
+ svn path=/trunk/; revision=803
+
+ examples/accelgroup.js | 2 +-
+ tools/jslint.js | 16 +++++++++++++++-
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit d029674a6a6f98af7ac613e9f5d0176d25cc952b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:05:10 2009 +0000
+
+ Fix one mistake I forgot to check for in last commit.
+
+ svn path=/trunk/; revision=802
+
+ tests/javascript/native-closure-exception.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d1f0724950e963ac2ae08ff7638103411c9514d0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 09:03:51 2009 +0000
+
+ Many of the tests now pass JSLint.
+
+
+ svn path=/trunk/; revision=801
+
+ doc/reference/seed-docs.sgml | 2 +-
+ tests/javascript/closure-finalization.js | 4 ++--
+ tests/javascript/function-info.js | 2 +-
+ tests/javascript/gerror.js | 4 +++-
+ tests/javascript/gtype-signal-args.js | 4 ++--
+ tests/javascript/gtype-signal.js | 4 ++--
+ tests/javascript/gtype.js | 19 +++++++++----------
+ tests/javascript/namespace-exception-test.js | 7 ++-----
+ tests/javascript/native-closure-exception.js | 5 +++--
+ tests/javascript/native-closure.js | 5 +++--
+ tests/javascript/out-test.js | 8 +++++---
+ tests/javascript/sqlite.js | 7 +++++--
+ tests/javascript/struct-union-enumerate.js | 4 ++--
+ tests/javascript/type-conversion.js | 4 ++--
+ tools/jslint.js | 2 +-
+ tools/run-lint.js | 13 ++++++++-----
+ 16 files changed, 51 insertions(+), 43 deletions(-)
+
+commit 28e2f4b5a4ff54b41a050151db7b59542776766d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 08:32:37 2009 +0000
+
+ JSLint works with Seed code now, mostly! Rev 800!
+
+ svn path=/trunk/; revision=800
+
+ tools/jslint.js | 13 ++++++++-----
+ tools/run-lint.js | 29 +++++++++++++++++++++--------
+ 2 files changed, 29 insertions(+), 13 deletions(-)
+
+commit 2fb87cd53851a5911232a08ed2eae49cd157173e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 07:51:20 2009 +0000
+
+ Tools folder; bring JSLint in, starting a script to run JSLint on stuff; need to find options to turn off to make it even remotely reasonable.
+
+
+ svn path=/trunk/; revision=799
+
+ libseed/indent.sh | 3 -
+ tools/indent.sh | 3 +
+ tools/jslint.js | 4942 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tools/run-lint.js | 20 +
+ 4 files changed, 4965 insertions(+), 3 deletions(-)
+
+commit 2bfd3d0f0c84465abfa097ee2e4f861aba0a5b7c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 25 06:54:45 2009 +0000
+
+ Fix struct union enumerate test; Introspection update catches more members!
+
+ svn path=/trunk/; revision=798
+
+ tests/javascript/struct-union-enumerate.js | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 53fa1e5748714c7eb80b573c9a2cd09f7ae3d797
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 24 07:26:26 2009 +0000
+
+ Make sure we clean typelibs.
+
+ svn path=/trunk/; revision=797
+
+ opengl-glib/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 854792aadc904de5d467aae2df4394e76d3083d3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 24 05:07:48 2009 +0000
+
+ Update runtime docs to mention workaround for loading namespaces twice.
+
+ svn path=/trunk/; revision=796
+
+ doc/runtime.html.in | 13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+commit daebaab56ab46b671ef6741a296f07841d6db88d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Jan 24 04:41:10 2009 +0000
+
+ Mode types to GLTypes-1.0.gir required for clutter-0.9 to build
+
+ svn path=/trunk/; revision=795
+
+ opengl-glib/GLTypes-1.0.gir | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 042f978212e1bddb697554fd1f1f9216dfc28fff
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Jan 24 04:34:02 2009 +0000
+
+ Update GLTypes gir to include GLhandleARB
+
+ svn path=/trunk/; revision=794
+
+ opengl-glib/GLTypes-1.0.gir | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 1603397a4fc2b7422951e7812fdeec1c19d2dea5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 22 06:28:09 2009 +0000
+
+ Only build opengl-glib stuff if we have GLUT. Should fix to be more careful, but it's a good start.
+
+
+ svn path=/trunk/; revision=793
+
+ config.h.in | 4 ++--
+ configure.ac | 18 ++++++++++++++++--
+ opengl-glib/Makefile.am | 6 ++++--
+ 3 files changed, 22 insertions(+), 6 deletions(-)
+
+commit 98a1fb3b4b260d9eb0ee3f8aefd4112885e01704
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 22 06:09:44 2009 +0000
+
+ Trying to fix WebKit ContextGroupCreate check.
+
+ svn path=/trunk/; revision=792
+
+ config.h.in | 4 ++--
+ configure.ac | 19 +++++++++++--------
+ 2 files changed, 13 insertions(+), 10 deletions(-)
+
+commit 80d6e089b998cebe211e5fd266a700ac2644513a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 22 05:31:45 2009 +0000
+
+ Oops. Pull out JSContextGroupRef check until we can fix it...
+
+
+ svn path=/trunk/; revision=791
+
+ configure.ac | 16 ++++++++--------
+ 1 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 8aa3f7ff569a55f1309d3efafe14048ff9b2c556
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 21 03:15:51 2009 +0000
+
+ Fix paths to Seed in OpenGL examples.
+
+ svn path=/trunk/; revision=790
+
+ examples/opengl/glut-teapot.js | 2 +-
+ examples/opengl/seed-gears.js | 2 +-
+ examples/opengl/triangle-actor.js | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 64dde3d62ed1b0d60cd6296125f33a341626400e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 21 02:39:55 2009 +0000
+
+ Make twitter example download images async
+
+ svn path=/trunk/; revision=789
+
+ examples/twitter/twitter.js | 47 +++++++++++++++++++++++-------------------
+ libseed/seed-closure.c | 2 +
+ 2 files changed, 28 insertions(+), 21 deletions(-)
+
+commit 450b7453a0ca59b3a76d78fe5bf5557e31347148
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 21 02:26:41 2009 +0000
+
+ Add Profile images to twitter example
+
+ svn path=/trunk/; revision=788
+
+ examples/twitter/twitter.js | 35 +++++++++++++++++++++++++++++++++--
+ 1 files changed, 33 insertions(+), 2 deletions(-)
+
+commit 0f70c22abbf80d0ae655fd73fc4223fda63c57de
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 21 02:26:31 2009 +0000
+
+ Install OpenGL girs to the correct directory
+
+ svn path=/trunk/; revision=787
+
+ opengl-glib/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 02396b746524b884f41c99ef39903245618e5066
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 21 02:19:18 2009 +0000
+
+ Update browser to use progress-in-GtkEntry, like Ephy/Safari. Shouldn't
+ break on old Gtks, just won't get progress.
+
+ svn path=/trunk/; revision=786
+
+ examples/browser/BrowserStatusbar.js | 10 ----------
+ examples/browser/BrowserToolbar.js | 6 ++++++
+ examples/browser/BrowserView.js | 8 ++------
+ examples/browser/main.js | 9 +++++++++
+ 4 files changed, 17 insertions(+), 16 deletions(-)
+
+commit 21f0422e0467d45eca0b712f548fd09ca1a2f6a4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 23:25:51 2009 +0000
+
+ Example cleanup and maintenance
+
+ svn path=/trunk/; revision=785
+
+ examples/gdkpixbufloader.js | 1 +
+ examples/twitter/twitter.js | 2 --
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 8176518d07d83d99cdbe33e0b638eebd3a916a2f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 22:37:09 2009 +0000
+
+ Add GdkPixbufLoader example
+
+ svn path=/trunk/; revision=784
+
+ examples/Makefile.am | 2 ++
+ examples/gdkpixbufloader.js | 33 +++++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 0 deletions(-)
+
+commit 24636958e0d684ae9c9957a7fcd85cd04aefa25d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 20:49:46 2009 +0000
+
+ Fix twitter example makefile
+
+ svn path=/trunk/; revision=783
+
+ examples/twitter/Makefile.am | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit b9af715325e6b63ec184c9a9eea519ef6b9fc1e4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 20:15:46 2009 +0000
+
+ Yay, all the gears render correctly now
+
+ svn path=/trunk/; revision=782
+
+ examples/opengl/seed-gears.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit d1e30c1ec50cfa6520aba5b9272b2184724e0a7a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 20:13:26 2009 +0000
+
+ Some small fixes to gears rendering
+
+ svn path=/trunk/; revision=781
+
+ examples/opengl/seed-gears.js | 16 ++++++++--------
+ 1 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 336522af5e45b8baae32dc362191ef373f036816
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 19:56:29 2009 +0000
+
+ Add glxgears port
+
+ svn path=/trunk/; revision=780
+
+ examples/opengl/Makefile.am | 5 +-
+ examples/opengl/seed-gears.js | 232 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 235 insertions(+), 2 deletions(-)
+
+commit ece29c6c5c472cad8f6c27a46f6ae6de224ed365
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 19:29:00 2009 +0000
+
+ Some annotations to GLU gir
+
+ svn path=/trunk/; revision=779
+
+ opengl-glib/GLU-1.0.gir | 12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 2c1d7c4c3b53336ebfb81c6da67ed08b6abab9e7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 19:06:31 2009 +0000
+
+ Add GLU gir/typelib
+
+ svn path=/trunk/; revision=778
+
+ opengl-glib/GLU-1.0.gir | 1578 +++++++++++++++++++++++++++++++++++++++++++++++
+ opengl-glib/Makefile.am | 6 +-
+ 2 files changed, 1582 insertions(+), 2 deletions(-)
+
+commit fedc023b20df26c52e47dc0b2218910a6a7edbea
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 18:54:55 2009 +0000
+
+ Install OpenGL typelibs to the new directory
+
+ svn path=/trunk/; revision=777
+
+ opengl-glib/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e7716bc111bc6d3a86792a0ca85c1113b03b8b14
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 18:52:32 2009 +0000
+
+ Add Ryan Pauls twitter example, with a few modifications to make the HTTP request async
+
+ svn path=/trunk/; revision=776
+
+ configure.ac | 1 +
+ examples/Makefile.am | 1 +
+ examples/twitter/pretty.js | 36 +++++++++++++++
+ examples/twitter/twitter.js | 101 +++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 139 insertions(+), 0 deletions(-)
+
+commit c8fc42141a1db727869242cca15547779b9563ad
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 20 18:33:57 2009 +0000
+
+ Add async quine example
+
+ svn path=/trunk/; revision=775
+
+ examples/Makefile.am | 2 ++
+ examples/async-quine.js | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 0 deletions(-)
+
+commit 746a6fda68d41acf83d1771ce9b1325bb294107b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 21:12:54 2009 +0000
+
+ Add a missing file to makefile.
+
+ svn path=/trunk/; revision=774
+
+ examples/browser/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 08804c861e01b38737faee7eabf706e168d26edb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 19 21:08:57 2009 +0000
+
+ Add OpenGL examples.
+
+ svn path=/trunk/; revision=773
+
+ configure.ac | 1 +
+ examples/Makefile.am | 1 +
+ examples/opengl/Makefile.am | 10 +++++++
+ examples/opengl/glut-teapot.js | 53 +++++++++++++++++++++++++++++++++++++
+ examples/opengl/triangle-actor.js | 36 +++++++++++++++++++++++++
+ 5 files changed, 101 insertions(+), 0 deletions(-)
+
+commit 07a8d245a36ab3d6c51d310ed8f394a56674865f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 21:07:58 2009 +0000
+
+ Fix readline from requiring complete seed rebuild each time you change seed.h
+
+ svn path=/trunk/; revision=772
+
+ modules/readline/Makefile.am | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 399856d1499739483763f51cd39a32f0c6b4cf53
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 19 21:07:37 2009 +0000
+
+ Add opengl-glib girs in Seed (this will be split in to it's own magical
+ project later)
+
+ svn path=/trunk/; revision=771
+
+ Makefile.am | 3 +-
+ configure.ac | 1 +
+ opengl-glib/GL-1.0.gir | 7196 +++++++++++++++++++++++++++++++++++++++++++
+ opengl-glib/GLTypes-1.0.gir | 31 +
+ opengl-glib/GLUT-1.0.gir | 2036 ++++++++++++
+ opengl-glib/Makefile.am | 14 +
+ 6 files changed, 9280 insertions(+), 1 deletions(-)
+
+commit a0f80453e38b2fade2dc8788d254c42fa987ede4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 19 16:43:04 2009 +0000
+
+ Add support for UINT8 arrays
+
+ svn path=/trunk/; revision=770
+
+ libseed/seed-types.c | 32 ++++++++++++++++++++++++++++----
+ 1 files changed, 28 insertions(+), 4 deletions(-)
+
+commit ad748ed9b3891a1f817a5454067812065d6154e2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 19 16:35:44 2009 +0000
+
+ Refactor some array code
+
+ svn path=/trunk/; revision=769
+
+ libseed/seed-types.c | 15 +++++++++------
+ 1 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 5e057df2da37d6887bccbc61140dd6b8b179b1a2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 09:43:55 2009 +0000
+
+ Better fitting progress bar!
+
+ svn path=/trunk/; revision=768
+
+ examples/browser/BrowserStatusbar.js | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 5c19464537eb9f569b201813702a4d2668cebd8c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 09:24:59 2009 +0000
+
+ Statusbar, new setting, progressbar, reorderable tab view, etc. for browserrewrite.
+
+ svn path=/trunk/; revision=767
+
+ examples/browser/BrowserSettings.js | 1 +
+ examples/browser/BrowserStatusbar.js | 28 ++++++++++++++++++++++++++++
+ examples/browser/BrowserTab.js | 9 +++++++++
+ examples/browser/BrowserView.js | 34 ++++++++++++++++++++++++++++++++--
+ examples/browser/TabbedBrowser.js | 12 +++++-------
+ examples/browser/main.js | 1 +
+ 6 files changed, 76 insertions(+), 9 deletions(-)
+
+commit 4514de67e56f25f00b81c40687625d7c5dea919f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 08:38:46 2009 +0000
+
+ Reimplement open-in-new-window. Unfortuately installed properties don't work as construction properties (they aren't available in init) (Robb?), so this is a (hopefully) temporary hack to workaround that.
+
+
+ svn path=/trunk/; revision=766
+
+ examples/browser/BrowserTab.js | 36 +++++++++++++++++-------------------
+ examples/browser/BrowserView.js | 19 +++++++------------
+ examples/browser/TabbedBrowser.js | 7 ++++---
+ 3 files changed, 28 insertions(+), 34 deletions(-)
+
+commit 938e5f1e45cc8ca643bb6f0812d7159133302f2f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 04:59:36 2009 +0000
+
+ Fix Fedora build at the expense of Arch and Gentoo. Still working on it...
+
+ svn path=/trunk/; revision=765
+
+ configure.ac | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit aed1e08bf8be16d8a39693e003524d0d99aaae5e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 19 00:33:15 2009 +0000
+
+ Working on Fedora build.
+
+ svn path=/trunk/; revision=764
+
+ libseed/Makefile.am | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit aa37ad7a9922d01c163c0ed7054c567d38a1532c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 20:55:42 2009 +0000
+
+ Working on making build work both on Fedora and Arch at the same time. Apparently, Arch and Gentoo don't have pc.s for libffi. Cool.
+
+ svn path=/trunk/; revision=763
+
+ libseed/Makefile.am | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 98f897f23c057170b3b179432b95769343cea359
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 18 20:23:32 2009 +0000
+
+ Add support for gfloat arrays.
+
+ svn path=/trunk/; revision=762
+
+ libseed/seed-types.c | 23 +++++++++++++++++++++--
+ 1 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 2213021a23c545d9e3c50333505e3ce6a177600e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 18 20:22:08 2009 +0000
+
+ Update clutter shader example to make it run again
+
+ svn path=/trunk/; revision=761
+
+ examples/clutter-shader/main.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c2d6a40e978263fc99c262ef558618a9d3c028b3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 04:46:32 2009 +0000
+
+ Bunch of look-n-feel updates to pong, etc.
+
+ svn path=/trunk/; revision=760
+
+ examples/pong/pong.js | 103 ++++++++++++++++++++++++++++++++++++++++++++----
+ 1 files changed, 94 insertions(+), 9 deletions(-)
+
+commit 3dde79645a0ece4a2181e82bfa03ce5f95e3f647
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 04:15:33 2009 +0000
+
+ Fix ball logic, etc. Lots of stuff is better now. Still not great. Hard to beat the AI.
+
+ svn path=/trunk/; revision=759
+
+ examples/pong/midline.png | Bin 779 -> 4741 bytes
+ examples/pong/pong.js | 109 +++++++++++++++++++++++++++-----------------
+ 2 files changed, 67 insertions(+), 42 deletions(-)
+
+commit 0f105450045cbc870e93df96e81b1f6ef7374b61
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 03:33:18 2009 +0000
+
+ Pong textures!
+
+
+ svn path=/trunk/; revision=758
+
+ examples/pong.js | 223 -------------------------------------------
+ examples/pong/ball.png | Bin 0 -> 1570 bytes
+ examples/pong/midline.png | Bin 0 -> 779 bytes
+ examples/pong/player.png | Bin 0 -> 1671 bytes
+ examples/pong/player2.png | Bin 0 -> 1491 bytes
+ examples/pong/pong.js | 230 +++++++++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 230 insertions(+), 223 deletions(-)
+
+commit 46503837e0184709757a87bf00892e7a7839d35c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 02:45:07 2009 +0000
+
+ Massive rework of pong beginning. Subclasses in your subclasses (I'm pretty sure this is the first time we've subclassed a subclass that was created in Seed...)
+
+ svn path=/trunk/; revision=757
+
+ examples/pong.js | 225 +++++++++++++++++++++++++++++++-----------------------
+ 1 files changed, 130 insertions(+), 95 deletions(-)
+
+commit 8ae71288b45d3114266c0d8aaa72899b098dd987
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 18 00:57:13 2009 +0000
+
+ Some small style updates for examples, nothing huge.
+
+
+ svn path=/trunk/; revision=756
+
+ examples/accelgroup.js | 3 ++-
+ examples/actions.js | 2 +-
+ examples/clutter-cairo.js | 5 +++--
+ examples/clutter-cogl.js | 38 +++++++++++++++-----------------------
+ examples/clutter.js | 7 ++++---
+ 5 files changed, 25 insertions(+), 30 deletions(-)
+
+commit e60e9ab2e2ed6855e087e8fdd4c921378dbee022
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 17 07:09:47 2009 +0000
+
+ added horribly dirty ugly pong in clutter. it's horrible. don't even open it. it's the worst code ever. it was more of a "rush to implement something really really fast" thing with Matt. I'll fix it tomorrow, add networking, scoring, fix accelerations and stuff, make the AI LOSE at some point, etc.
+
+
+ svn path=/trunk/; revision=755
+
+ examples/pong.js | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 188 insertions(+), 0 deletions(-)
+
+commit a54fc08a9351988880f7d56c7a3929cbdcb22154
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 15 23:03:56 2009 +0000
+
+ Whoops @ Seed build. Fixes module installation, examples, etc.
+
+ svn path=/trunk/; revision=754
+
+ configure.ac | 8 ++++++
+ examples/broken/browser/browser-bookmarks.js | 2 +-
+ examples/broken/browser/browser-find.js | 4 +-
+ examples/broken/browser/browser-main.js | 2 +-
+ examples/broken/browser/browser-tab.js | 34 ++++++++-----------------
+ 5 files changed, 23 insertions(+), 27 deletions(-)
+
+commit 8d394a5ea13683ce201093408d34cf8081966107
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 15 04:10:34 2009 +0000
+
+ Small style things.
+
+
+ svn path=/trunk/; revision=753
+
+ libseed/seed-gtype.c | 18 +++++++-----------
+ 1 files changed, 7 insertions(+), 11 deletions(-)
+
+commit 562c16f175a90cb646983939b51e9e487685e4ba
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 15 01:06:22 2009 +0000
+
+ Working on Browser. Due to a bug in installed properties (construction properties don't show up in init), no more for now!
+
+ svn path=/trunk/; revision=752
+
+ examples/browser/BrowserTab.js | 5 ++++-
+ examples/browser/BrowserView.js | 4 ----
+ examples/browser/TabbedBrowser.js | 6 ++++--
+ examples/browser/main.js | 2 +-
+ 4 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 07119eeff05eb224ca841fca3fbdfd54f0a19a07
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 15 00:33:15 2009 +0000
+
+ Working on new browser.
+
+ svn path=/trunk/; revision=751
+
+ examples/browser/BrowserTab.js | 30 +++++++++++++++++++++++++-----
+ examples/browser/BrowserView.js | 30 +++++++++++++++++++++++++++---
+ examples/browser/Makefile.am | 14 ++++++++++++--
+ examples/browser/TabbedBrowser.js | 13 ++++++++++---
+ 4 files changed, 74 insertions(+), 13 deletions(-)
+
+commit 1104483ab9ce4392b5e3d93aed0785e12bade467
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 23:03:06 2009 +0000
+
+ Split new browser back into bunch of files.
+
+ svn path=/trunk/; revision=750
+
+ examples/browser/BrowserSettings.js | 1 +
+ examples/browser/BrowserTab.js | 45 +++++++
+ examples/browser/BrowserToolbar.js | 60 ++++++++++
+ examples/browser/BrowserView.js | 50 ++++++++
+ examples/browser/TabbedBrowser.js | 47 ++++++++
+ examples/browser/browser.js | 223 -----------------------------------
+ examples/browser/main.js | 119 ++-----------------
+ 7 files changed, 214 insertions(+), 331 deletions(-)
+
+commit 4ce906b79545727014196fb74a539c777b7a04f8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 21:43:19 2009 +0000
+
+ Fix GI_TRANSFER_CONTAINER for GI_TYPE_TAG_ARRAY
+
+ svn path=/trunk/; revision=749
+
+ libseed/seed-types.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 8e8565fa0cd43a2a7d6676166984753ac7e06d38
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 21:37:34 2009 +0000
+
+ Missed some macports packages.
+
+ svn path=/trunk/; revision=748
+
+ INSTALL.osx | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit b00ed356174f278bbe07a1c0112ccb87277782ce
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 21:35:27 2009 +0000
+
+ Update OS X installation documentation.
+
+ svn path=/trunk/; revision=747
+
+ INSTALL.osx | 35 +++++++++++++++++++++++++++++++----
+ 1 files changed, 31 insertions(+), 4 deletions(-)
+
+commit e7c09f6d69896e1747aee049e5e458abdf794c1f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 21:25:59 2009 +0000
+
+ Add missing header to extra_dist.
+
+ svn path=/trunk/; revision=746
+
+ tests/c/Makefile.am | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit e65a64b72f603c8cf0bb810599a3a1e151531e62
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 21:20:46 2009 +0000
+
+ Update tests to remove some deprecated stuff.
+
+ svn path=/trunk/; revision=745
+
+ tests/javascript/struct-offsets.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit de266cfd088544b86f67c4bdbb25d9217389d86b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 21:19:47 2009 +0000
+
+ Fix more enums
+
+ svn path=/trunk/; revision=744
+
+ examples/vte-test.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 24e3e2574b17e462b01859088d92d1d7be6dfe10
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 21:15:56 2009 +0000
+
+ Rename instance_init to init
+
+ svn path=/trunk/; revision=743
+
+ doc/tutorial-standalone/1.js | 2 +-
+ doc/tutorial-standalone/2.js | 6 +++---
+ doc/tutorial-standalone/3.js | 8 ++++----
+ doc/tutorial-standalone/tutorial.html.in | 14 +++++++-------
+ examples/browser/browser.js | 8 ++++----
+ libseed/seed-gtype.c | 2 +-
+ tests/javascript/gtype-class-init-exception.js | 2 +-
+ tests/javascript/gtype-property.js | 2 +-
+ tests/javascript/gtype-signal-exception.js | 2 +-
+ tests/javascript/gtype-signal.js | 2 +-
+ tests/javascript/gtype.js | 2 +-
+ 11 files changed, 25 insertions(+), 25 deletions(-)
+
+commit 893a184f418b4565a437ca09f8ffe26f83baaeca
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 21:05:41 2009 +0000
+
+ More enum casing change.
+
+
+ svn path=/trunk/; revision=742
+
+ doc/tutorial-standalone/2.js | 4 ++--
+ doc/tutorial-standalone/3.js | 8 ++++----
+ doc/tutorial-standalone/tutorial.html.in | 4 ++--
+ examples/browser/browser.js | 8 ++++----
+ 4 files changed, 12 insertions(+), 12 deletions(-)
+
+commit c2688501ca53ebbb7f10947d61f0a874e867ac8f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 21:01:51 2009 +0000
+
+ Fix Soup example, and consistency with struct constructors/object
+ constructors.
+
+ svn path=/trunk/; revision=741
+
+ examples/soup.js | 3 ++-
+ libseed/seed-engine.c | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 274c341fe84c8720876a0b594de7583b0ca49991
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:58:41 2009 +0000
+
+ Build stuff for replaced browser.
+
+ svn path=/trunk/; revision=740
+
+ examples/browser/Makefile.am | 20 ++------------------
+ 1 files changed, 2 insertions(+), 18 deletions(-)
+
+commit eb1284ac3b6eab9a0afdc4cccb578c0f56f3ce25
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 20:57:00 2009 +0000
+
+ Fix the rest of the examples
+
+ svn path=/trunk/; revision=739
+
+ examples/clutter-shader/ShaderView.js | 4 ++--
+ examples/clutter-transitions/main.js | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit d7fbcedafacdd6d000b648e0970f42519959269f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:56:35 2009 +0000
+
+ Move old browser to broken, add new browser back (still has no features, though).
+
+ svn path=/trunk/; revision=738
+
+ examples/broken/browser/COPYING | 339 +++++++++++++++++++++++++
+ examples/broken/browser/Makefile.am | 27 ++
+ examples/broken/browser/browser-actions.js | 347 ++++++++++++++++++++++++++
+ examples/broken/browser/browser-bookmarks.js | 54 ++++
+ examples/broken/browser/browser-find.js | 39 +++
+ examples/broken/browser/browser-main.js | 24 ++
+ examples/broken/browser/browser-menu.js | 148 +++++++++++
+ examples/broken/browser/browser-tab.js | 160 ++++++++++++
+ examples/broken/browser/browser-toolbar.js | 25 ++
+ examples/broken/browser/main.js | 119 +++++++++
+ examples/browser/browser.js | 223 +++++++++++++++++
+ 11 files changed, 1505 insertions(+), 0 deletions(-)
+
+commit 3f0b6211aa5710e2e9ac7630fcde4f3903f8a91d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 20:53:01 2009 +0000
+
+ Example fixes
+
+ svn path=/trunk/; revision=737
+
+ examples/poppler.js | 8 ++++----
+ examples/video.js | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 95011255fde16ee241810c602362d8cc2361337b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:48:52 2009 +0000
+
+ Fixing examples to match new enum typing.
+
+ svn path=/trunk/; revision=736
+
+ examples/Gnio-server.js | 4 ++--
+ examples/clutter-cogl.js | 2 +-
+ examples/json-packing.js | 4 ++--
+ examples/n-oscillator.js | 4 ++--
+ 4 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 9a8378ec3a370e75b7c647e6f1e2d7e330f8a17b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 20:45:40 2009 +0000
+
+ Update tests to enum changes.
+
+ svn path=/trunk/; revision=735
+
+ extensions/Gtk.js | 2 +-
+ tests/javascript/enum.js | 4 ++--
+ tests/javascript/gtype-property.js | 2 +-
+ tests/javascript/struct-nested-set.js | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 9f8e5cebfad7d33b29405216b61734be1fbfb168
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 20:43:03 2009 +0000
+
+ Change enums to Namespace.Enum.BIGVALUEISBIG
+
+ svn path=/trunk/; revision=734
+
+ libseed/seed-engine.c | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit d4982ea6205e03409e018fdba6c9e219d46fcdcd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:40:52 2009 +0000
+
+ Removed one more file that doesn't need to be in SVN.
+
+ svn path=/trunk/; revision=733
+
+ m4/gtk-doc.m4 | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit dbfdc8652601fac785f3ec59cb1dd6d1d0914c8f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:37:13 2009 +0000
+
+ Remove first round of things that don't need to be in SVN
+
+
+ svn path=/trunk/; revision=732
+
+ INSTALL | 1 -
+ ltmain.sh | 7880 ---------------------------------------------------
+ mkinstalldirs | 111 -
+ 3 files changed, 0 insertions(+), 7992 deletions(-)
+
+commit 73992484499e0e4ef085c953fd64368027084534
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:17:07 2009 +0000
+
+ Add transitions to configure.
+
+ svn path=/trunk/; revision=731
+
+ configure.ac | 1 +
+ m4/gtk-doc.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit d1b6904fdd1f49102d614107342e19bdf6194aa6
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:14:11 2009 +0000
+
+ Add makefile for clutter-transitions.
+
+ svn path=/trunk/; revision=730
+
+ examples/Makefile.am | 3 +--
+ examples/clutter-transitions/Makefile.am | 15 +++++++++++++++
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit 7f0fd6fe455b761061076525c0a8ca9dca53a879
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 14 20:12:36 2009 +0000
+
+ Don't try and convert null GI_TYPE_TAG_ARRAY out arguments.
+
+ svn path=/trunk/; revision=729
+
+ libseed/seed-types.c | 3 +++
+ m4/gtk-doc.m4 | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 91df8bc1dfb3692435da859d8e8ede39dd8b8dbd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 20:07:57 2009 +0000
+
+ Fix toggleable example installation.
+
+ svn path=/trunk/; revision=728
+
+ Makefile.am | 7 ++-----
+ configure.ac | 2 +-
+ examples/Makefile.am | 3 +++
+ examples/browser/Makefile.am | 3 +++
+ examples/clutter-shader/Makefile.am | 3 +++
+ examples/glib/Makefile.am | 3 +++
+ examples/turtle/Makefile.am | 2 ++
+ 7 files changed, 17 insertions(+), 6 deletions(-)
+
+commit 0e482b58f10f3e873148c576af164d268c09f23c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 07:13:28 2009 +0000
+
+ Fix some error consistency problems in builtins, update test, add argument length test for spawn, etc.
+
+
+ svn path=/trunk/; revision=727
+
+ libseed/seed-builtins.c | 2 +-
+ tests/javascript/builtin-argument-length.js | 11 +++++++++++
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 4cd744975090036f3afbd1622777875bb31cf5da
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 07:02:29 2009 +0000
+
+ Add test for installed-from-JS signals on GTypes which have arguments.
+
+
+ svn path=/trunk/; revision=726
+
+ tests/javascript/gtype-signal-args.js | 33 +++++++++++++++++++++++++++++++++
+ 1 files changed, 33 insertions(+), 0 deletions(-)
+
+commit 01038fe9cdaf8a693bc6cb69808e04c50825ca67
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 05:35:40 2009 +0000
+
+ Use pkg-config to find Gtk for turtle example.
+
+ svn path=/trunk/; revision=725
+
+ examples/turtle/Makefile.am | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 0ef653f2f0042bea741250a20303b2df38901782
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 05:10:40 2009 +0000
+
+ Indentation update.
+
+
+ svn path=/trunk/; revision=724
+
+ libseed/indent.sh | 8 +-
+ libseed/seed-api.c | 9 +-
+ libseed/seed-builtins.c | 22 +-
+ libseed/seed-closure.c | 14 +-
+ libseed/seed-engine.c | 86 ++---
+ libseed/seed-gtype.c | 141 +++----
+ libseed/seed-signals.c | 20 +-
+ libseed/seed-structs.c | 69 ++--
+ libseed/seed-structs.h | 6 +-
+ libseed/seed-types.c | 172 ++++-----
+ libseed/seed-types.h | 5 +-
+ libseed/seed.h | 10 +-
+ modules/Multiprocessing/multi.c | 128 +++----
+ modules/canvas/seed-canvas.c | 770 +++++++++++++++++++-------------------
+ modules/readline/seed-readline.c | 53 ++--
+ modules/sqlite/seed-sqlite.c | 106 +++---
+ 16 files changed, 784 insertions(+), 835 deletions(-)
+
+commit 6a292aeca8573e5d0162bf92be42ecbb34a527e7
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 04:54:45 2009 +0000
+
+ Add ability to disable turtle example with configure.
+
+
+ svn path=/trunk/; revision=723
+
+ configure.ac | 23 +++++++++++++++++------
+ 1 files changed, 17 insertions(+), 6 deletions(-)
+
+commit 06faf0220eaf65ac0c8c857156996d052f6b5ca1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 04:25:37 2009 +0000
+
+ Some configure output cleanup.
+
+ svn path=/trunk/; revision=722
+
+ configure.ac | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 6eaa449c59adca7b759e7140d077964fa50eaad6
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 04:20:33 2009 +0000
+
+ Add warning if we're not building the readline module.
+
+ svn path=/trunk/; revision=721
+
+ configure.ac | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 836514c57ad9feda216d3d5b8749351016b88204
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 04:16:21 2009 +0000
+
+ Users can now toggle the build of /any/ module with --[en|dis]able-*-module at configure time. Of course, if they don't have the required libraries, they don't get the module, too. Should leave more of a warning if readline isn't included.
+
+
+ svn path=/trunk/; revision=720
+
+ configure.ac | 161 ++++++++++++++++++++++------------
+ modules/Multiprocessing/Makefile.am | 4 +
+ modules/example/Makefile.am | 4 +
+ modules/sqlite/Makefile.am | 2 +-
+ 4 files changed, 113 insertions(+), 58 deletions(-)
+
+commit 59255eb73d6a8d7bcdcfdc05ca03e0430200d4f7
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 03:22:26 2009 +0000
+
+ Move OS X specific instructions to a separate INSTALL file.
+
+ svn path=/trunk/; revision=719
+
+ INSTALL.osx | 4 ++++
+ README | 5 -----
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+commit e1b1a8eb63635c7f315f4d111b71dfef003bed2a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 14 03:18:27 2009 +0000
+
+ Fix Gtk detection on Linux.
+
+ svn path=/trunk/; revision=718
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 126040f7b6b0370a53c830f0348fbdd4b6a6c2cd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Jan 13 21:23:59 2009 +0000
+
+ Fix build on OS X, again.
+
+ svn path=/trunk/; revision=717
+
+ configure.ac | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 571467b157c6da2b4f3bd42748971fc42780268b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Jan 13 04:47:58 2009 +0000
+
+ Update readme for OS X installation.
+
+ svn path=/trunk/; revision=716
+
+ README | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 4efd1a892cbc2e8cd8eeabc90cbfcb433584861c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Jan 13 04:45:39 2009 +0000
+
+ Check for JSContextGroupCreate, and warn on too-old WebKit revisions.
+
+ svn path=/trunk/; revision=715
+
+ config.h.in | 3 +++
+ configure.ac | 7 +++++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 66e0824ddf4714a417b9dcbaaa5826906a8c73b8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 12 00:41:53 2009 +0000
+
+ Fix linux build.
+
+ svn path=/trunk/; revision=714
+
+ config.h.in | 4 +
+ configure.ac | 19 +-
+ ltmain.sh |12738 +++++++++++++++++++++++++++++++--------------------------
+ m4/gtk-doc.m4 | 2 +-
+ 4 files changed, 6848 insertions(+), 5915 deletions(-)
+
+commit db215d4d8d061455af601b4882cbc04a0639323a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 12 00:26:55 2009 +0000
+
+ Only build turtle if we have Gtk.
+
+ svn path=/trunk/; revision=713
+
+ configure.ac | 8 ++++++++
+ examples/turtle/Makefile.am | 4 ++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 620caae2f2028ec8c1ced7cfb9477ac0c24fbd00
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 12 00:18:30 2009 +0000
+
+ Fix seed build on OS X. All of libseed and most of the modules build, we fail on building turtle (because of lack of Gtk) now!
+
+ svn path=/trunk/; revision=712
+
+ INSTALL | 2 +-
+ config.h.in | 4 -
+ libseed/Makefile.am | 3 +-
+ libseed/seed-closure.c | 2 +
+ libseed/seed-closure.h | 2 +-
+ ltmain.sh |12698 ++++++++++++++++++++++--------------------------
+ m4/gtk-doc.m4 | 2 +-
+ 7 files changed, 5893 insertions(+), 6820 deletions(-)
+
+commit e744e9bb60312298d30bdd968525081bcbf254e4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 11 22:48:30 2009 +0000
+
+ Fixed build on OS X. Robb has to fix the flat namespace thing, and then we're golden.
+
+
+ svn path=/trunk/; revision=711
+
+ configure.ac | 16 ++++++++++++++--
+ libseed/Makefile.am | 24 ++++++++----------------
+ libseed/seed-engine.c | 2 +-
+ 3 files changed, 23 insertions(+), 19 deletions(-)
+
+commit 38f8e0c55ba02f0ad7b389d342298153ffecf92e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 11 20:54:15 2009 +0000
+
+ I give up with the autoconf readme thing. Broke matt's build again.
+
+ svn path=/trunk/; revision=710
+
+ README | 27 +++++++++++++++++++++++++++
+ README.in | 27 ---------------------------
+ configure.ac | 1 -
+ 3 files changed, 27 insertions(+), 28 deletions(-)
+
+commit f70a3b03b979b38a4b48061502437fc3378d2442
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 11 07:10:22 2009 +0000
+
+ Move readme back to autoconf'd so we get the version number (I understand my mistake now).
+
+
+ svn path=/trunk/; revision=709
+
+ README | 27 ---------------------------
+ README.in | 27 +++++++++++++++++++++++++++
+ autogen.sh | 8 ++++----
+ configure.ac | 1 +
+ 4 files changed, 32 insertions(+), 31 deletions(-)
+
+commit 131503f39289d5ca9bd316f1cf769170026dbe0f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 11 06:32:10 2009 +0000
+
+ Working on fixing build on Mac OS X. Still fails because it can't find libwebkit, of course.
+
+ svn path=/trunk/; revision=708
+
+ README | 4 ++++
+ autogen.sh | 5 +++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 83e37eb24beec26d54e29de3027765bbdd26c04c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 03:51:39 2009 +0000
+
+ Readme doesn't need to be versioned, this fixes the need for autoconf magic.
+
+ svn path=/trunk/; revision=707
+
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e4f17114e3b1cc5deb395182df10ea16b0810a43
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 03:30:57 2009 +0000
+
+ Remove broken autoconfd readme.
+
+ svn path=/trunk/; revision=706
+
+ README.in | 23 -----------------------
+ 1 files changed, 0 insertions(+), 23 deletions(-)
+
+commit 9b62a582ab2242c9d8121d169e47e1c416fed0bc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 03:26:39 2009 +0000
+
+ Something went horribly wrong with making the readme autoconf'd.
+
+
+ svn path=/trunk/; revision=705
+
+ README | 23 +++++++++++++++++++++++
+ configure.ac | 1 -
+ 2 files changed, 23 insertions(+), 1 deletions(-)
+
+commit bb8379dee1bdde0aa00bb609941e08aa649c9aa4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 03:16:14 2009 +0000
+
+ Fix optimization flag nonsense. (We only get one -O flag now; 0 for profile or debug, 3 normally).
+
+
+ svn path=/trunk/; revision=704
+
+ configure.ac | 10 +++++++---
+ 1 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 3308c85b8e6275bb46c6989bb17b050300a6e620
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 02:44:14 2009 +0000
+
+ Use autoconf to insert the current seed version number into the documentation.
+
+ svn path=/trunk/; revision=703
+
+ configure.ac | 9 +
+ doc/conventions.html | 30 ---
+ doc/conventions.html.in | 30 +++
+ doc/modules/canvas.html | 34 ---
+ doc/modules/canvas.html.in | 34 +++
+ doc/modules/multiprocessing.html | 23 --
+ doc/modules/multiprocessing.html.in | 23 ++
+ doc/modules/readline.html | 41 ---
+ doc/modules/readline.html.in | 41 +++
+ doc/modules/sqlite.html | 68 -----
+ doc/modules/sqlite.html.in | 68 +++++
+ doc/runtime.html | 299 ----------------------
+ doc/runtime.html.in | 299 ++++++++++++++++++++++
+ doc/tutorial-standalone/tutorial.html | 402 ------------------------------
+ doc/tutorial-standalone/tutorial.html.in | 402 ++++++++++++++++++++++++++++++
+ 15 files changed, 906 insertions(+), 897 deletions(-)
+
+commit 62fcb64a0ec5fe8aed6acc3f99e95e7d6c1f88a8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 10 02:36:10 2009 +0000
+
+ Automatically update README version number.
+
+ svn path=/trunk/; revision=702
+
+ Makefile.am | 3 ---
+ README | 23 -----------------------
+ README.in | 23 +++++++++++++++++++++++
+ configure.ac | 1 +
+ ltmain.sh | 4 ++--
+ 5 files changed, 26 insertions(+), 28 deletions(-)
+
+commit e9bdcfbb8a4b3662020b41ac86ce638a3428afb9
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 23:28:33 2009 +0000
+
+ Robb fixed lists yesterday, so this test needed to be updated.
+
+ svn path=/trunk/; revision=701
+
+ tests/javascript/list-test.js | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 0f580d722664b4aaf7eb8a70c9d3c19f5ea75db6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 13:53:20 2009 +0000
+
+ If argument type conversion fails, out_values array is not freed.
+
+ svn path=/trunk/; revision=700
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 205819a35d8999383d28154c588b887a721f4253
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 13:42:11 2009 +0000
+
+ Tiiiiny leaks in builtins.
+
+ svn path=/trunk/; revision=699
+
+ libseed/seed-builtins.c | 9 +++++++--
+ ltmain.sh | 4 ++--
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 9a2fe843832f27597a5b59e589df9e75e99e723b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 08:15:37 2009 +0000
+
+ Still working on "Everything" test.
+
+ svn path=/trunk/; revision=698
+
+ tests/javascript/everything.js | 24 +++++++++++++++++++++++-
+ 1 files changed, 23 insertions(+), 1 deletions(-)
+
+commit 2fc02fe66894cb32eafe85e8677f1f4a26ce4c9f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 07:09:26 2009 +0000
+
+ GClosure argument releasing.
+
+ svn path=/trunk/; revision=697
+
+ libseed/seed-types.c | 14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 644a29e92c71337e0a397c3aacf8ada76cd97a2e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 06:42:50 2009 +0000
+
+ Fix leak of GI_TYPE_TAG_ARRAY in.
+
+ svn path=/trunk/; revision=696
+
+ libseed/seed-types.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 5f813da44c1cfe64e5ffa5ab83852b4f54c9b012
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 06:41:08 2009 +0000
+
+ Robb's fixing things that make more of Everything.gir tests work.
+
+ svn path=/trunk/; revision=695
+
+ tests/javascript/everything.js | 14 +++++++-------
+ 1 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 89ab2277fee4c32182a6b032ccb65d2675213726
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 06:37:33 2009 +0000
+
+ Add support for GI_TYPE_TAG_FILENAME.
+
+ svn path=/trunk/; revision=694
+
+ libseed/seed-types.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-types.h | 8 ++++++++
+ libseed/seed.h | 8 ++++++++
+ 3 files changed, 65 insertions(+), 0 deletions(-)
+
+commit 6f8afdac6de0d7ee8e202220a1855984ea35d211
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 06:09:59 2009 +0000
+
+ Make returned GList/GSlist real arrays as opposed to objects with
+ properties at indexes.
+
+ svn path=/trunk/; revision=693
+
+ libseed/seed-types.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2e295e3b875f850edab9b5b027dbd681f86ddec6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 06:05:05 2009 +0000
+
+ Fix GSList/GList segfaulting with GI_TYPE_TAG_VOID
+
+ svn path=/trunk/; revision=692
+
+ libseed/seed-types.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit e8bdfe02a937da8d01d671092acebc20f277298f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 05:58:40 2009 +0000
+
+ Start of Everything.gir tests.
+
+ svn path=/trunk/; revision=691
+
+ tests/javascript/Makefile.am | 3 +-
+ tests/javascript/everything.js | 45 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+), 1 deletions(-)
+
+commit 0c09bc84809ce3fb7106ad3bcc755ebacbd66707
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 04:52:29 2009 +0000
+
+ Sync with seed changes.
+
+ svn path=/trunk/; revision=690
+
+ examples/clutter-shader/ShaderView.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0d932542de9174ff68a90e956e5e0ac8d0e06127
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 9 03:40:22 2009 +0000
+
+ Add support for GI_TYPE_TAG_ARRAY in return.
+
+ svn path=/trunk/; revision=689
+
+ libseed/seed-types.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 54 insertions(+), 2 deletions(-)
+
+commit 0099a854f575fbd1c62bf86f40683aee98afcdc0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Jan 9 02:04:22 2009 +0000
+
+ Quick closure tests.
+
+ svn path=/trunk/; revision=688
+
+ tests/c/Makefile.am | 3 ++-
+ tests/c/api-closure.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/c/api-types.c | 26 ++++++++++++--------------
+ tests/c/main.c | 4 ++++
+ tests/c/test-common.h | 8 ++++----
+ 5 files changed, 68 insertions(+), 19 deletions(-)
+
+commit acfdef8f1bc6aa1ba3c27f72cf52312597e5f8e3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 23:23:02 2009 +0000
+
+ A bunch of very simple type conversion tests with the Seed API.
+
+
+ svn path=/trunk/; revision=687
+
+ tests/c/Makefile.am | 3 +-
+ tests/c/api-types.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/c/main.c | 2 +
+ tests/c/test-common.h | 1 +
+ 4 files changed, 74 insertions(+), 1 deletions(-)
+
+commit 75c2dfa25e370a09cebb837758ffb99f388cebaa
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 20:56:50 2009 +0000
+
+ ROBB! It's /usr/bin/env seed...
+
+
+ svn path=/trunk/; revision=686
+
+ examples/json-reddit.js | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit a723546d379d41294a7fdc1239de5b3b576ae471
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 09:15:48 2009 +0000
+
+ Rename C tests, cleanup. Done for now.
+
+ svn path=/trunk/; revision=685
+
+ tests/c/basic.c | 6 +-----
+ tests/c/main.c | 17 +++--------------
+ 2 files changed, 4 insertions(+), 19 deletions(-)
+
+commit e1563b228c7dec9f8ee4d790543dfd96c4eebf87
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 09:08:23 2009 +0000
+
+ Integrate C tests into the little python test script.
+
+ svn path=/trunk/; revision=684
+
+ examples/clutter-cogl.js | 2 +-
+ libseed/seed-builtins.c | 23 +++++++++++++++--------
+ tests/c/basic.c | 7 +++++--
+ tests/c/main.c | 5 +++--
+ tests/run-tests.py | 19 +++++++++++++++++--
+ 5 files changed, 41 insertions(+), 15 deletions(-)
+
+commit 98cdd0f9b3fedc3705ee19c8d641389b3fcf33cf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 8 08:35:43 2009 +0000
+
+ Funny example of GIO + JSON to pretty print the reddit home page.
+
+ svn path=/trunk/; revision=683
+
+ examples/json-reddit.js | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+commit b4ceba49caeef340ba7edea374f0e1af45ec835c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 08:28:13 2009 +0000
+
+ C Tests don't disable asserts (yay!) and stuff now.
+
+ svn path=/trunk/; revision=682
+
+ tests/c/Makefile.am | 18 +++---------
+ tests/c/basic.c | 9 ++++++
+ tests/c/main.c | 56 ++++++++++++++++++++++++++++++++++++++
+ tests/c/test-main.c | 73 --------------------------------------------------
+ tests/c/test-tests.c | 10 -------
+ tests/run-tests.py | 3 +-
+ 6 files changed, 71 insertions(+), 98 deletions(-)
+
+commit f25190c74bec2b2a46b3e1b283146b5ea8bfddd3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 08:00:57 2009 +0000
+
+ Fix building.
+
+ svn path=/trunk/; revision=681
+
+ tests/c/Makefile.am | 14 ++------------
+ 1 files changed, 2 insertions(+), 12 deletions(-)
+
+commit d37b68ba2ecf8598002b41afc81c83a178135603
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 07:53:34 2009 +0000
+
+ Preliminary support for C tests.
+
+
+ svn path=/trunk/; revision=680
+
+ configure.ac | 1 +
+ libseed/seed.h | 20 +-------------
+ ltmain.sh | 4 +-
+ tests/Makefile.am | 2 +-
+ tests/c/Makefile.am | 32 +++++++++++++++++++++
+ tests/c/test-common.h | 20 +++++++++++++
+ tests/c/test-main.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/c/test-tests.c | 10 +++++++
+ 8 files changed, 140 insertions(+), 22 deletions(-)
+
+commit 968d94019a8dc8ed2a692c39f5d032373d988c58
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 8 05:04:41 2009 +0000
+
+ Fix a hypothetical base info reference leak (if one day we were to allow
+ scoped imports). Fix a not so hypothetical string leak in
+ seed_struct_prototype.
+
+ svn path=/trunk/; revision=679
+
+ libseed/seed-engine.c | 1 +
+ libseed/seed-structs.c | 4 ++++
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit c18eae11c80d511b0ca4bd1607f47eb29b8d629e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 8 04:48:40 2009 +0000
+
+ Base memory usage is down another 100k or so.
+
+ svn path=/trunk/; revision=678
+
+ libseed/seed-engine.c | 6 +++++-
+ libseed/seed-structs.c | 24 +++++++++++++++++-------
+ 2 files changed, 22 insertions(+), 8 deletions(-)
+
+commit 24aef6ffc0c33a71c7dab1ceffea6f225d31365d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 04:12:10 2009 +0000
+
+ Transition driver script.
+
+ svn path=/trunk/; revision=677
+
+ examples/clutter-transitions/clutter.js | 704 --------------------
+ examples/clutter-transitions/main.js | 74 ++
+ examples/clutter-transitions/transition-library.js | 662 ++++++++++++++++++
+ 3 files changed, 736 insertions(+), 704 deletions(-)
+
+commit 219b35d662af91d15e541617aea52a9877ae7eeb
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 8 01:09:59 2009 +0000
+
+ Finished moving LO out of SVN.
+
+
+ svn path=/trunk/; revision=676
+
+ examples/HACKING | 8 +-
+ examples/clutter-transitions/clutter.js | 183 +++++++++++++++----------------
+ 2 files changed, 94 insertions(+), 97 deletions(-)
+
+commit f60ce28e5e858330545696a4594e009bc3cebbca
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Jan 7 23:49:09 2009 +0000
+
+ Add clutter transitions library to SVN; going to make a demo script in an hour or two.
+
+
+ svn path=/trunk/; revision=675
+
+ examples/clutter-transitions/clutter.js | 709 +++++++++++++++++++++++++++++++
+ examples/clutter-transitions/one.jpg | Bin 0 -> 379735 bytes
+ examples/clutter-transitions/two.jpg | Bin 0 -> 218469 bytes
+ 3 files changed, 709 insertions(+), 0 deletions(-)
+
+commit 43327909f6424380cff3a0d72924cb845eae9785
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 7 10:47:56 2009 +0000
+
+ More example cleanups.
+
+ svn path=/trunk/; revision=674
+
+ examples/accelgroup.js | 4 ++--
+ examples/clutter.js | 6 +-----
+ examples/soup.js | 1 +
+ 3 files changed, 4 insertions(+), 7 deletions(-)
+
+commit c0ded92b71d2ee4430767a61dc021475c7cd8d69
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 7 10:41:24 2009 +0000
+
+ I could play with clutter for hours...
+
+ svn path=/trunk/; revision=673
+
+ examples/clutter-cogl.js | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 0a072a9fe9e0f931db65ed3c5218ac18aea7af18
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 7 10:25:29 2009 +0000
+
+ More.
+
+ svn path=/trunk/; revision=672
+
+ examples/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 4e8678f176e308124d8ad71ebcc2eabe7e785f70
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 7 10:25:26 2009 +0000
+
+ Clean up the clutter examples a bit.
+
+ svn path=/trunk/; revision=671
+
+ examples/clutter-cogl.js | 42 ++++++++++++++++++++++++++++++++++--------
+ examples/clutter.js | 46 ++++++++++++++++++++++------------------------
+ 2 files changed, 56 insertions(+), 32 deletions(-)
+
+commit a4e02ef26c3ed651cf252998ac68129421203ff5
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Jan 7 10:10:58 2009 +0000
+
+ Add clutter COGL example.
+
+ svn path=/trunk/; revision=670
+
+ examples/clutter-cogl.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 116 insertions(+), 0 deletions(-)
+
+commit a3ad4fd24c83d9e643bd0df960cdf5a31d57ffb9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 6 11:43:47 2009 +0000
+
+ Fix bad owner_type v. value_type in property getters.
+
+ svn path=/trunk/; revision=669
+
+ libseed/seed-gtype.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 57cff0d5b952c8b78ea59badda7fe5b642a859ea
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 6 10:48:05 2009 +0000
+
+ Fix incorrect definition of an additional (protected nonetheless...)
+ constructor object in GType subclassing.
+
+ svn path=/trunk/; revision=668
+
+ libseed/seed-gtype.c | 5 ++++-
+ ltmain.sh | 4 ++--
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit d40b67b4003d45683f35edd5cb7e933aa4fddb64
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Jan 6 07:34:27 2009 +0000
+
+ Starting to make example installation optional.
+
+ svn path=/trunk/; revision=667
+
+ Makefile.am | 8 +++++++-
+ configure.ac | 12 ++++++++++++
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 635848d36c5ca81965addbd6f2888de6a1190bca
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Jan 6 03:21:09 2009 +0000
+
+ Lightsoff is now hosted in gnome-games SVN.
+
+ svn path=/trunk/; revision=666
+
+ configure.ac | 1 -
+ examples/Makefile.am | 2 +-
+ examples/gtktreeview.js | 8 +-
+ examples/lightsoff/0.svg | 209 --------------------
+ examples/lightsoff/1.svg | 177 -----------------
+ examples/lightsoff/2.svg | 187 ------------------
+ examples/lightsoff/3.svg | 207 -------------------
+ examples/lightsoff/4.svg | 165 ----------------
+ examples/lightsoff/5.svg | 187 ------------------
+ examples/lightsoff/6.svg | 209 --------------------
+ examples/lightsoff/7.svg | 187 ------------------
+ examples/lightsoff/8.svg | 227 ---------------------
+ examples/lightsoff/9.svg | 209 --------------------
+ examples/lightsoff/COPYING | 339 --------------------------------
+ examples/lightsoff/Makefile.am | 49 -----
+ examples/lightsoff/arrow-l.svg | 174 ----------------
+ examples/lightsoff/arrow-r.svg | 191 ------------------
+ examples/lightsoff/arrow.js | 38 ----
+ examples/lightsoff/board.js | 224 ---------------------
+ examples/lightsoff/lcd-back.svg | 117 -----------
+ examples/lightsoff/lcd-front.svg | 113 -----------
+ examples/lightsoff/lcd-off.svg | 228 ---------------------
+ examples/lightsoff/legacy/lightsoff.js | 268 -------------------------
+ examples/lightsoff/light-off.svg | 228 ---------------------
+ examples/lightsoff/light-on.svg | 204 -------------------
+ examples/lightsoff/light.js | 93 ---------
+ examples/lightsoff/main.js | 61 ------
+ examples/lightsoff/score.js | 113 -----------
+ 28 files changed, 5 insertions(+), 4410 deletions(-)
+
+commit 04ae59fcf7fcccf11e517fdfb8a55219b6d59a34
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 14:23:37 2009 +0000
+
+ 64-bit build fix.
+
+
+ svn path=/trunk/; revision=665
+
+ libseed/seed-gtype.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 44c024d8eaecc06cd62ae9077e4a4f22fd5ea2b9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 11:06:14 2009 +0000
+
+ Add a simple GtkTreeView example..and some small changes to make it
+ work.
+
+ svn path=/trunk/; revision=664
+
+ examples/Makefile.am | 2 ++
+ examples/gtktreeview.js | 35 +++++++++++++++++++++++++++++++++++
+ libseed/seed-types.c | 2 +-
+ 3 files changed, 38 insertions(+), 1 deletions(-)
+
+commit 4d5fb5d70b7769e815518b6550ee372b34592501
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 11:06:10 2009 +0000
+
+ Add support for GValue arguments, with a heuristic for giving the type,
+ or the ability to force the type (i.e. [GObject.TYPE_INT, 3.3]), will
+ force the casting, where GObject casting would fail.
+
+ svn path=/trunk/; revision=663
+
+ libseed/seed-types.c | 80 ++++++++++++++++++++++++++++++++++-
+ tests/javascript/Makefile.am | 2 +
+ tests/javascript/gvalue-argument.js | 16 +++++++
+ 3 files changed, 97 insertions(+), 1 deletions(-)
+
+commit a264f55c0f304a16472b05e60db44fe9f616cc0b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 11:06:05 2009 +0000
+
+ Add support for GType arrays.
+
+ svn path=/trunk/; revision=662
+
+ tests/javascript/array-gtype.js | 12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 102ac5c6b8526efbb566031e846ed8e9016cd426
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 09:18:05 2009 +0000
+
+ Add the basic code to handle property getter/setters.
+
+ svn path=/trunk/; revision=661
+
+ libseed/seed-gtype.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 119 insertions(+), 2 deletions(-)
+
+commit cf6fb11e16db5fa5df2dc47c035a44bdcb629ae0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 08:41:17 2009 +0000
+
+ Make lightsoff work with more versions of Clutter.
+
+ svn path=/trunk/; revision=660
+
+ examples/lightsoff/score.js | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit b946a2f692e3174c3a36a076adc89822a8a59996
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 08:28:39 2009 +0000
+
+ Memory...
+
+ svn path=/trunk/; revision=659
+
+ libseed/seed-engine.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 93e07616edeff98cc47c65e99d613a0eccd0a42f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 08:20:38 2009 +0000
+
+ Found some more /usr/local/bin/seed garbage.
+
+ svn path=/trunk/; revision=658
+
+ modules/Multiprocessing/bi.js | 7 +++++--
+ modules/Multiprocessing/fork.js | 3 ++-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 992223aa8e804e61d0a85852c8b94b451afcd63f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 08:16:47 2009 +0000
+
+ Add the new tests from earlier to automake.
+
+ svn path=/trunk/; revision=657
+
+ tests/javascript/Makefile.am | 70 ++++++++++++++++++++++--------------------
+ 1 files changed, 37 insertions(+), 33 deletions(-)
+
+commit bcd002ee85a149d519552e138f7ffd7d973aa9ed
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 08:16:10 2009 +0000
+
+ Continue to pound on memory usage.
+
+ svn path=/trunk/; revision=656
+
+ libseed/seed-engine.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit a5e11bc54f3a76c93a9cfe112624359d65654c6a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 08:13:42 2009 +0000
+
+ One addition to last patch.
+
+ svn path=/trunk/; revision=655
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 6dd4716d8ec27d64034a3223e9a0b7da6a41e041
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 08:13:17 2009 +0000
+
+ Move tests into a subdir. Getting ready to add C tests (to test API, etc.)
+
+ svn path=/trunk/; revision=654
+
+ tests/Makefile.am | 54 +---------------------
+ tests/argv.js | 6 ---
+ tests/builtin-argument-length.js | 54 ----------------------
+ tests/c-module.js | 6 ---
+ tests/check-syntax.js | 12 -----
+ tests/closure-finalization.js | 23 ---------
+ tests/compare.js | 15 ------
+ tests/constructor-args.js | 34 --------------
+ tests/constructor-prototype.js | 12 -----
+ tests/enum.js | 15 ------
+ tests/fork.js | 16 -------
+ tests/function-info.js | 11 -----
+ tests/gdk-event.js | 28 -----------
+ tests/gerror.js | 18 -------
+ tests/gobject-scope.js | 15 ------
+ tests/gtype-class-init-exception.js | 22 ---------
+ tests/gtype-property.js | 36 ---------------
+ tests/gtype-signal-exception.js | 46 -------------------
+ tests/gtype-signal.js | 34 --------------
+ tests/gtype-typerror.js | 16 -------
+ tests/gtype.js | 34 --------------
+ tests/include-syntax.js | 6 ---
+ tests/include.js | 7 ---
+ tests/introspect.js | 10 ----
+ tests/javascript/COPYING | 1 +
+ tests/javascript/Makefile.am | 58 ++++++++++++++++++++++++
+ tests/javascript/argv.js | 6 +++
+ tests/javascript/builtin-argument-length.js | 54 ++++++++++++++++++++++
+ tests/javascript/c-module.js | 6 +++
+ tests/javascript/check-syntax.js | 12 +++++
+ tests/javascript/closure-finalization.js | 23 +++++++++
+ tests/javascript/compare.js | 15 ++++++
+ tests/javascript/constructor-args.js | 34 ++++++++++++++
+ tests/javascript/constructor-prototype.js | 12 +++++
+ tests/javascript/enum.js | 15 ++++++
+ tests/javascript/fork.js | 16 +++++++
+ tests/javascript/function-info.js | 11 +++++
+ tests/javascript/gdk-event.js | 28 +++++++++++
+ tests/javascript/gerror.js | 18 +++++++
+ tests/javascript/gobject-scope.js | 15 ++++++
+ tests/javascript/gtype-class-init-exception.js | 22 +++++++++
+ tests/javascript/gtype-property.js | 36 +++++++++++++++
+ tests/javascript/gtype-signal-exception.js | 46 +++++++++++++++++++
+ tests/javascript/gtype-signal.js | 34 ++++++++++++++
+ tests/javascript/gtype-typerror.js | 16 +++++++
+ tests/javascript/gtype.js | 34 ++++++++++++++
+ tests/javascript/include-syntax.js | 6 +++
+ tests/javascript/include.js | 7 +++
+ tests/javascript/introspect.js | 10 ++++
+ tests/javascript/json-constructor.js | 15 ++++++
+ tests/javascript/json.js | 14 ++++++
+ tests/javascript/list-test.js | 19 ++++++++
+ tests/javascript/namespace-exception-test.js | 26 +++++++++++
+ tests/javascript/native-closure-exception.js | 17 +++++++
+ tests/javascript/native-closure.js | 18 +++++++
+ tests/javascript/object-info.js | 20 ++++++++
+ tests/javascript/out-test.js | 13 +++++
+ tests/javascript/print.js | 7 +++
+ tests/javascript/printf.js | 11 +++++
+ tests/javascript/printprint.js | 6 +++
+ tests/javascript/property-benchmark.js | 17 +++++++
+ tests/javascript/property-glib-exception.js | 11 +++++
+ tests/javascript/quit.js | 7 +++
+ tests/javascript/quit2.js | 7 +++
+ tests/javascript/readline.js | 8 +++
+ tests/javascript/readline_bind.js | 9 ++++
+ tests/javascript/signal-connect.js | 21 +++++++++
+ tests/javascript/signal-exception.js | 12 +++++
+ tests/javascript/signal-expects.js | 17 +++++++
+ tests/javascript/signal-userdata.js | 17 +++++++
+ tests/javascript/signal.js | 18 +++++++
+ tests/javascript/spawn.js | 8 +++
+ tests/javascript/sqlite.js | 24 ++++++++++
+ tests/javascript/struct-constructor.js | 12 +++++
+ tests/javascript/struct-enumerate.js | 12 +++++
+ tests/javascript/struct-functions.js | 10 ++++
+ tests/javascript/struct-nested-set.js | 17 +++++++
+ tests/javascript/struct-offsets.js | 16 +++++++
+ tests/javascript/struct-set-member.js | 15 ++++++
+ tests/javascript/struct-union-enumerate.js | 21 +++++++++
+ tests/javascript/syntax-test.js | 7 +++
+ tests/javascript/type-conversion.js | 28 +++++++++++
+ tests/json-constructor.js | 15 ------
+ tests/json.js | 14 ------
+ tests/list-test.js | 19 --------
+ tests/namespace-exception-test.js | 26 -----------
+ tests/native-closure-exception.js | 17 -------
+ tests/native-closure.js | 18 -------
+ tests/object-info.js | 20 --------
+ tests/out-test.js | 13 -----
+ tests/print.js | 7 ---
+ tests/printf.js | 11 -----
+ tests/printprint.js | 6 ---
+ tests/property-benchmark.js | 17 -------
+ tests/property-glib-exception.js | 11 -----
+ tests/quit.js | 7 ---
+ tests/quit2.js | 7 ---
+ tests/readline.js | 8 ---
+ tests/readline_bind.js | 9 ----
+ tests/run-tests.py | 36 +++++----------
+ tests/signal-connect.js | 21 ---------
+ tests/signal-exception.js | 12 -----
+ tests/signal-expects.js | 17 -------
+ tests/signal-userdata.js | 17 -------
+ tests/signal.js | 18 -------
+ tests/spawn.js | 8 ---
+ tests/sqlite.js | 24 ----------
+ tests/struct-constructor.js | 12 -----
+ tests/struct-enumerate.js | 12 -----
+ tests/struct-functions.js | 10 ----
+ tests/struct-nested-set.js | 17 -------
+ tests/struct-offsets.js | 16 -------
+ tests/struct-set-member.js | 15 ------
+ tests/struct-union-enumerate.js | 21 ---------
+ tests/syntax-test.js | 7 ---
+ tests/type-conversion.js | 28 -----------
+ 116 files changed, 1027 insertions(+), 1034 deletions(-)
+
+commit 85ac9057c1d76c280eb5f7fd4a8638b25b21a57c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 07:14:10 2009 +0000
+
+ Added test for readline_bind.
+
+ svn path=/trunk/; revision=653
+
+ tests/readline_bind.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 45def7a61a347e330f9f6feb2135607d56ef2b5d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 06:40:08 2009 +0000
+
+ Put errors back into sqlite.
+
+ svn path=/trunk/; revision=652
+
+ modules/sqlite/seed-sqlite.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 8509a7eade45bc7fc223fe0bd6541141bf554fad
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 06:34:54 2009 +0000
+
+ Enable profiling for some modules, simple SQLite test.
+
+ When we have tests for Multiprocessing and canvas, add them to the lcov call in Makefile.am
+
+
+ svn path=/trunk/; revision=651
+
+ Makefile.am | 15 ++++++++++++++-
+ ltmain.sh | 4 ++--
+ modules/Multiprocessing/Makefile.am | 5 ++++-
+ modules/canvas/Makefile.am | 7 +++++--
+ modules/example/Makefile.am | 5 ++++-
+ modules/readline/Makefile.am | 5 ++++-
+ modules/sqlite/Makefile.am | 7 +++++--
+ modules/sqlite/example.js | 4 ++--
+ tests/quit2.js | 7 +++++++
+ tests/sqlite.js | 24 ++++++++++++++++++++++++
+ 10 files changed, 71 insertions(+), 12 deletions(-)
+
+commit 52a2be6734b46db2a20ebae2817a72765b0b1e4a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 05:10:41 2009 +0000
+
+ Simple evaluation API.
+
+ svn path=/trunk/; revision=650
+
+ extensions/GObject.js | 1 -
+ libseed/seed-api.c | 11 +++++++++++
+ libseed/seed.h | 1 +
+ 3 files changed, 12 insertions(+), 1 deletions(-)
+
+commit f268515bd526de4541b694461e218b3343b20c3b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Jan 5 05:10:34 2009 +0000
+
+ Refactor some of the property handling code in order to prepare for
+ getters/setters.
+
+ svn path=/trunk/; revision=649
+
+ libseed/seed-engine.c | 8 +++++++-
+ libseed/seed-gtype.c | 33 +++++++++++++++++++++++++--------
+ tests/function-info.js | 1 +
+ tests/gtype-property.js | 2 +-
+ tests/object-info.js | 1 +
+ 5 files changed, 35 insertions(+), 10 deletions(-)
+
+commit 33d060733d6d47f2dd5ba7364bfbf3b1a576b730
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 03:55:05 2009 +0000
+
+ Work on canvas module docs.
+
+ svn path=/trunk/; revision=648
+
+ doc/modules/canvas.html | 17 -----------------
+ 1 files changed, 0 insertions(+), 17 deletions(-)
+
+commit afe1fb97dc7e9b6a99d948cb61c5e7a4aae855af
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 03:38:24 2009 +0000
+
+ Starting Canvas documentation.
+
+ svn path=/trunk/; revision=647
+
+ doc/modules/canvas.html | 28 ++++++++++++++++++++++++++++
+ 1 files changed, 28 insertions(+), 0 deletions(-)
+
+commit 8924332373ac18113d6aa02adeaa4d7492d11289
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 02:40:33 2009 +0000
+
+ Finished SQLite module documentation.
+
+ svn path=/trunk/; revision=646
+
+ doc/modules/sqlite.html | 23 +++++++++++++++++++++++
+ modules/sqlite/example.js | 2 ++
+ 2 files changed, 25 insertions(+), 0 deletions(-)
+
+commit 059ed78df0f30514ad7578cb4f9d5d4bcb7f0da4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Jan 5 01:52:03 2009 +0000
+
+ Working on sqlite docs.
+
+ svn path=/trunk/; revision=645
+
+ doc/modules/example.html | 23 -----------------------
+ doc/modules/sqlite.html | 22 ++++++++++++++++++++++
+ 2 files changed, 22 insertions(+), 23 deletions(-)
+
+commit 80879ea1bcefab29e333ba08cad5fa471a70654f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 4 23:09:12 2009 +0000
+
+ Add documentation templates for the other modules (SQLite, multiprocessing, Canvas, and the example module).
+
+
+ svn path=/trunk/; revision=644
+
+ doc/modules/canvas.html | 23 +++++++++++++++++++++++
+ doc/modules/example.html | 23 +++++++++++++++++++++++
+ doc/modules/multiprocessing.html | 23 +++++++++++++++++++++++
+ doc/modules/sqlite.html | 23 +++++++++++++++++++++++
+ 4 files changed, 92 insertions(+), 0 deletions(-)
+
+commit 095eabb458a7db60e58db11e54ae3d5f6ca20290
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 15:47:33 2009 +0000
+
+ Add GObject propery installation support.
+
+ svn path=/trunk/; revision=643
+
+ libseed/seed-gtype.c | 43 +++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am | 1 +
+ tests/gtype-property.js | 36 ++++++++++++++++++++++++++++++++++++
+ 3 files changed, 80 insertions(+), 0 deletions(-)
+
+commit a4cd8a300337fec67d7dca228c9d0168cba0b1a5
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 10:10:42 2009 +0000
+
+ Avoid defining methods on struct constructors, as this is wrong. Shaves
+ another 0.1-0.2 megs off import of Gtk...quickly approaching half of
+ python!
+ starting
+
+ svn path=/trunk/; revision=642
+
+ libseed/seed-engine.c | 22 ++++++++++++++++++----
+ 1 files changed, 18 insertions(+), 4 deletions(-)
+
+commit 75b40661f590133bbef2bc2f4be40b45d0e81069
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 10:03:51 2009 +0000
+
+ Merge branch 'struct-prototypes'
+
+ svn path=/trunk/; revision=641
+
+ libseed/seed-engine.c | 12 ++++
+ libseed/seed-structs.c | 133 +++++++++++++++++++++++++++++++++++++-----------
+ libseed/seed-structs.h | 5 ++
+ 3 files changed, 120 insertions(+), 30 deletions(-)
+
+commit 8ca643f741783ea890ca73f8cdbb3cd517d30007
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 08:14:02 2009 +0000
+
+ More warnings.
+
+ svn path=/trunk/; revision=640
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 71929c80a57376228ce680aaf884aa99d97fff38
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 07:11:35 2009 +0000
+
+ Fix more examples, and the Gio extension.
+
+ svn path=/trunk/; revision=639
+
+ examples/Gnio.js | 6 +++---
+ examples/clutter-cairo.js | 2 +-
+ examples/clutter.js | 2 +-
+ examples/gtkplug.js | 2 +-
+ examples/soup.js | 2 +-
+ extensions/Gio.js | 6 +++---
+ 6 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 7890df05a047a5a05958d4ffd1c8ca7f028edb19
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 07:07:13 2009 +0000
+
+ Update examples to the new constructor stuff, etc...
+
+ svn path=/trunk/; revision=638
+
+ examples/lightsoff/arrow.js | 2 +-
+ examples/lightsoff/board.js | 4 ++--
+ examples/lightsoff/light.js | 9 +++++----
+ examples/lightsoff/score.js | 8 ++++----
+ examples/poppler.js | 4 ++--
+ libseed/seed-engine.c | 2 ++
+ 6 files changed, 16 insertions(+), 13 deletions(-)
+
+commit 24458d76663c0cc3bf354d1b11d9e4568ace55d2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 07:07:08 2009 +0000
+
+ Named constructor rework:
+ Clutter.Texture.new_from_file --> new Clutter.Texture.from_file
+
+ svn path=/trunk/; revision=637
+
+ libseed/seed-engine.c | 21 +++++++++++++++++++--
+ 1 files changed, 19 insertions(+), 2 deletions(-)
+
+commit 4b47956675997f4370bf53540e3bafb3f2d305e4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 07:07:04 2009 +0000
+
+ Add seed_gobject_named_constructor
+
+ svn path=/trunk/; revision=636
+
+ libseed/seed-engine.c | 36 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 36 insertions(+), 0 deletions(-)
+
+commit 31d38e14e2a59c3cd03a27f7be6647d270b50265
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Jan 4 06:33:40 2009 +0000
+
+ -Wall...apparently this got switched off at some point.
+
+ svn path=/trunk/; revision=635
+
+ libseed/Makefile.am | 2 +-
+ libseed/seed-api.c | 12 ++++++------
+ libseed/seed-builtins.c | 1 +
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-engine.c | 12 ++++--------
+ libseed/seed-exceptions.c | 1 +
+ libseed/seed-gtype.c | 18 +++++++-----------
+ libseed/seed-signals.c | 11 ++++++-----
+ libseed/seed-structs.c | 20 ++++++--------------
+ libseed/seed-types.c | 10 +++++-----
+ ltmain.sh | 4 ++--
+ modules/Multiprocessing/bi.js | 8 +++++---
+ 12 files changed, 45 insertions(+), 56 deletions(-)
+
+commit c5eed8064d55df4f289e99503c2c7e605df01cea
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 4 00:40:57 2009 +0000
+
+ Didn't need the first part of last two patches.
+
+ svn path=/trunk/; revision=634
+
+ examples/lightsoff/arrow.js | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 40c7b3bf409b6fbe2df652058f08cb6d850c0e7b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 4 00:39:59 2009 +0000
+
+ Continuation of last patch.
+
+ svn path=/trunk/; revision=633
+
+ examples/lightsoff/arrow.js | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit b392f4737fdaa4d13da41f34bf765ab195a4243f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Jan 4 00:37:18 2009 +0000
+
+ Readd unnecessary show because of a clutter bug.
+
+ svn path=/trunk/; revision=632
+
+ examples/lightsoff/arrow.js | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c5476609b89caf4c39a71d152eb1ce864ef63b59
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Jan 3 14:01:39 2009 +0000
+
+ Big Lights Off cleanup.
+
+ svn path=/trunk/; revision=631
+
+ examples/lightsoff/arrow.js | 49 +++++++++++---------------------
+ examples/lightsoff/board.js | 64 +++++++++++++++++++-----------------------
+ examples/lightsoff/light.js | 32 +++++++++++++++++-----
+ examples/lightsoff/main.js | 14 ---------
+ examples/lightsoff/score.js | 32 ++++++++++++++++-----
+ 5 files changed, 95 insertions(+), 96 deletions(-)
+
+commit 2a8cc90743421114e73f093e10da362d5e9fc8de
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 2 22:02:28 2009 +0000
+
+ Make some SEED_NOTES more useful. Also fix slices...again...
+
+ svn path=/trunk/; revision=629
+
+ libseed/seed-structs.c | 14 ++++++++------
+ 1 files changed, 8 insertions(+), 6 deletions(-)
+
+commit f51398ab00e8cc8d799b33883646de238ee02ae1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Jan 2 21:22:24 2009 +0000
+
+ Fix struct fail.
+
+ svn path=/trunk/; revision=628
+
+ examples/Gnio-server.js | 2 +-
+ libseed/seed-structs.c | 7 +++++--
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 8a756fc253f3d25b82837ebb83ecf134d28e5d3d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 23:42:26 2009 +0000
+
+ Hopefully final 64-bit build fixes.
+
+ svn path=/trunk/; revision=625
+
+ libseed/seed-gtype.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 05ed8ea1164994eb59e9fc3fa8416d05b1e39bb3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 23:20:15 2009 +0000
+
+ MORE 64 bit build fixes. Silly LP.
+
+ svn path=/trunk/; revision=624
+
+ libseed/seed-signals.c | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 58e59c52c3f6d6a829c193e097652514a6f90d24
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 23:13:36 2009 +0000
+
+ Small tutorial fix that Matt found.
+
+ svn path=/trunk/; revision=623
+
+ doc/tutorial-standalone/tutorial.html | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit dd62dfada32c8b0b34f7822de6f7a3b87d070a3d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 21:53:57 2009 +0000
+
+ More 64bit fixes.
+
+ svn path=/trunk/; revision=622
+
+ libseed/seed-engine.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2a5fb9ce050c76a79934ea27abc4bb2990441be1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 21:32:38 2009 +0000
+
+ Arch build fix. This does /not/ reverse the Fedora one.
+
+ svn path=/trunk/; revision=621
+
+ configure.ac | 4 ++--
+ ltmain.sh | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 0c5a324c9995df61f31daa91eed68e16c1a1d4f0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 11:49:17 2009 +0000
+
+ Build fixes for 64-bit.
+
+ svn path=/trunk/; revision=620
+
+ libseed/seed-builtins.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 3bc64bc628700f5ae7986c7326789254bfcb7981
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Jan 1 10:57:52 2009 +0000
+
+ Fix some warnings...that only seem to exist on the GCC used by
+ launchpads build stuff.
+
+ svn path=/trunk/; revision=618
+
+ libseed/seed-closure.c | 5 +----
+ ltmain.sh | 4 ++--
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 966168c861d75bc57c323b3d87c0823d8ba80815
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 05:40:17 2009 +0000
+
+ Another fedora build fix.
+
+ svn path=/trunk/; revision=616
+
+ modules/readline/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit e9e0f887b00445dd177a40ffb136571f056b4165
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Jan 1 05:37:43 2009 +0000
+
+ Fedora build fix.
+
+ svn path=/trunk/; revision=615
+
+ configure.ac | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 6090567f694a86b7d2363a91554fb8326baaa6e5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 10:55:54 2008 +0000
+
+ Update help messages.
+
+ svn path=/trunk/; revision=613
+
+ libseed/seed-engine.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 79018e9bbc061727918ce75aece682a304f5ff60
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 10:15:21 2008 +0000
+
+ Some work on release ChangeLog
+
+ svn path=/trunk/; revision=612
+
+ ChangeLog | 26 +++++++++++++++++++++-----
+ 1 files changed, 21 insertions(+), 5 deletions(-)
+
+commit f82d4f05300de954db3af03dfcb89ef1c46ad67a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 09:37:39 2008 +0000
+
+ Use stack allocations for small strings, and slice allocations for
+ structs/private objects.
+
+ svn path=/trunk/; revision=611
+
+ libseed/seed-engine.c | 16 +++-------------
+ libseed/seed-signals.c | 4 ++--
+ libseed/seed-structs.c | 46 +++++++++++++++++++++++++++-------------------
+ 3 files changed, 32 insertions(+), 34 deletions(-)
+
+commit 12533e957828a09a48098b7b42acf01639830cb3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 08:58:47 2008 +0000
+
+ Race condition.
+
+ svn path=/trunk/; revision=610
+
+ libseed/seed-closure.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c1d58f9ec1ff07a5cbaacf58e0592c5216e6084e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 08:38:01 2008 +0000
+
+ Another possible leak of an info...
+
+ svn path=/trunk/; revision=609
+
+ libseed/seed-types.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 172d14ad5ca466033bbe3984e3cc88c53f1de824
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 08:34:06 2008 +0000
+
+ More leaks.
+
+ svn path=/trunk/; revision=608
+
+ libseed/seed-closure.c | 3 +++
+ libseed/seed-engine.c | 2 ++
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 0659f523c2d129261927ced1cfd542d4040ca023
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 08:24:58 2008 +0000
+
+ A few more small leaks.
+
+ svn path=/trunk/; revision=607
+
+ libseed/seed-closure.c | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 06e53a2b732d0a4ff7cbd3762da3ffc7693ebef8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 06:27:51 2008 +0000
+
+ Change some of the closure handling semantics. Connecting user_data
+ shouldnt take a reference (e.g. protect) the JavaScript value.
+
+ svn path=/trunk/; revision=606
+
+ libseed/seed-signals.c | 16 ++++++++++------
+ 1 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 89e8c322c82aec5eff323d51ce08a45405451707
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 06:08:32 2008 +0000
+
+ Oh! Easy way to get help with GOption.
+
+ svn path=/trunk/; revision=605
+
+ libseed/seed-engine.c | 7 +++----
+ ltmain.sh | 4 ++--
+ 2 files changed, 5 insertions(+), 6 deletions(-)
+
+commit 8f1a5f169d9304a5479275c2b388f20e16016cbd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 06:08:19 2008 +0000
+
+ Implement GClosure invalidation handler
+
+ svn path=/trunk/; revision=604
+
+ libseed/seed-signals.c | 20 ++++++++++++++++++--
+ 1 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 2bda9e40074f55391d855dccae5856c35970d212
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 05:47:00 2008 +0000
+
+ More conservative handling of closures...may leak some anonymous
+ functions used as signal handlers for a while until we implement this
+ properly.
+
+ svn path=/trunk/; revision=603
+
+ libseed/seed-signals.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit c93095552d8b5d9456c6765864b9ad1323ca44e1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 05:40:59 2008 +0000
+
+ Add some extra .shows to lightsoff that seem to be required in some
+ circumstances which I can not begin to comprehend.
+
+ svn path=/trunk/; revision=602
+
+ examples/lightsoff/arrow.js | 2 +-
+ examples/lightsoff/score.js | 5 +++++
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit df0037faffa373471b87f0eb0d8bffc025d3d31a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 05:28:16 2008 +0000
+
+ Remove test for something we don't reliably support now and might not
+ for a while.
+
+ svn path=/trunk/; revision=601
+
+ tests/Makefile.am | 1 -
+ tests/gtype-signal2.js | 34 ----------------------------------
+ 2 files changed, 0 insertions(+), 35 deletions(-)
+
+commit bf9b6691df7063c65d8bb7dbca989329f0a5167d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 05:23:21 2008 +0000
+
+ Consolidate some of the reference handling code.
+
+ svn path=/trunk/; revision=600
+
+ libseed/seed-engine.c | 16 +++++++++-------
+ 1 files changed, 9 insertions(+), 7 deletions(-)
+
+commit ce6f12fe2c1378c80efbfe64e1c8804071c8befb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 31 04:47:11 2008 +0000
+
+ Fix test. Remove old TODO.
+
+ svn path=/trunk/; revision=599
+
+ libseed/seed-engine.c | 1 -
+ ltmain.sh | 4 ++--
+ tests/gtype-signal2.js | 4 ++--
+ 3 files changed, 4 insertions(+), 5 deletions(-)
+
+commit d4df240d43fe5af8162e61df3fed680e6358784e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 04:23:09 2008 +0000
+
+ Bump version numbers, still poking at changelog.
+
+ svn path=/trunk/; revision=598
+
+ ChangeLog | 6 +++---
+ configure.ac | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 2879ccbdc3977b8b943bbf6a29cfb17d3e9565f8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 04:19:09 2008 +0000
+
+ Clean up changelog language.
+
+ svn path=/trunk/; revision=597
+
+ ChangeLog | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 5bab00848ed1c0e852caa01a768514cf44db1f41
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 04:16:07 2008 +0000
+
+ ChangeLog updated.
+
+ svn path=/trunk/; revision=596
+
+ ChangeLog | 53 ++++++++++++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/seed.sgml | 2 +-
+ 2 files changed, 54 insertions(+), 1 deletions(-)
+
+commit 5530077fe3ad29cf5bb705c200c100416ecfe410
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 04:01:45 2008 +0000
+
+ Update hacking file.
+
+ svn path=/trunk/; revision=595
+
+ examples/HACKING | 20 +++++++++++---------
+ 1 files changed, 11 insertions(+), 9 deletions(-)
+
+commit ed21cb5e568b5621f0fee373033646ee9704c43d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 03:51:24 2008 +0000
+
+ Update more examples, add spawn test.
+
+ svn path=/trunk/; revision=594
+
+ examples/turtle/turtle.c | 3 ++-
+ examples/vte-test.js | 1 +
+ tests/spawn.js | 8 ++++++++
+ 3 files changed, 11 insertions(+), 1 deletions(-)
+
+commit ea8339c9c831dbb4c26fcb1495a168fa43a7708a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 03:37:13 2008 +0000
+
+ Whoops. Deleted menu but didn't remove from autotools.
+
+ svn path=/trunk/; revision=593
+
+ examples/lightsoff/Makefile.am | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 732e65fc86346e9ed315b5a9b7bf8d885312220e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 03:30:00 2008 +0000
+
+ I think I'm done reorganizing lightsoff for now.
+
+ svn path=/trunk/; revision=592
+
+ examples/lightsoff/board.js | 88 ++++++++++++++++++++++++------------------
+ examples/lightsoff/main.js | 6 ++-
+ examples/lightsoff/score.js | 3 +
+ 3 files changed, 57 insertions(+), 40 deletions(-)
+
+commit 25eb72797fea5df1c2302b253643130a07fb4cdc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 03:14:32 2008 +0000
+
+ Still working on lightsoff.
+
+ svn path=/trunk/; revision=591
+
+ examples/lightsoff/arrow.js | 6 +-
+ examples/lightsoff/board.js | 12 +++---
+ examples/lightsoff/light.js | 41 +++++++++++--------
+ examples/lightsoff/main.js | 4 +-
+ examples/lightsoff/menu.js | 43 --------------------
+ examples/lightsoff/score.js | 91 ++++++++++++++++++++++--------------------
+ 6 files changed, 83 insertions(+), 114 deletions(-)
+
+commit a4ef4990c8a672dfb51d615e1bc03069bb45d76f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 02:23:46 2008 +0000
+
+ Continued LO reorg.
+
+ svn path=/trunk/; revision=590
+
+ examples/lightsoff/arrow.js | 2 --
+ examples/lightsoff/board.js | 18 +++++++++---------
+ examples/lightsoff/light.js | 28 ++++++++++++++--------------
+ 3 files changed, 23 insertions(+), 25 deletions(-)
+
+commit 9d36c136c2007bdb74c04942f23415cb985677e8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 02:10:13 2008 +0000
+
+ Restructuring and reindenting lightsoff.
+
+ svn path=/trunk/; revision=589
+
+ examples/lightsoff/arrow.js | 91 ++++++++++++++++++++----------------------
+ examples/lightsoff/board.js | 22 +++++-----
+ examples/lightsoff/light.js | 26 ++++++------
+ examples/lightsoff/menu.js | 68 ++++++++++++++++----------------
+ examples/lightsoff/score.js | 24 ++++++------
+ 5 files changed, 113 insertions(+), 118 deletions(-)
+
+commit 787acbb6c11c955a091a6a0d2ab13792c7d89288
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:53:52 2008 +0000
+
+ More example updates.
+
+ svn path=/trunk/; revision=588
+
+ examples/video.js | 3 ---
+ examples/vte-test.js | 6 +++---
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 31a7cefe68f0913455d7ee6fb179213f9eaa4358
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:48:35 2008 +0000
+
+ Updating examples, also fix threaded repl to new readline stuff.
+
+ svn path=/trunk/; revision=587
+
+ examples/ls.js | 8 +-
+ examples/n-oscillator.js | 7 +--
+ examples/poppler.js | 179 +++++++++++++++++++++++----------------------
+ examples/soup.js | 13 ++--
+ examples/threaded-repl.js | 4 +-
+ extensions/Seed.js | 22 +++++-
+ 6 files changed, 127 insertions(+), 106 deletions(-)
+
+commit 13f250e876e863090b3dc54edb1f4c413a0d0417
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:27:15 2008 +0000
+
+ Numerous example updates.
+
+ svn path=/trunk/; revision=586
+
+ examples/gtkplug.js | 5 ++++-
+ examples/introspect.js | 11 +++++++----
+ examples/json-packing.js | 36 ++++++++++++++++++++++--------------
+ 3 files changed, 33 insertions(+), 19 deletions(-)
+
+commit cdfaea341519fe692c8f20fca3846f04a138fb7e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:18:55 2008 +0000
+
+ Update clutter examples.
+
+ svn path=/trunk/; revision=585
+
+ examples/clutter-cairo.js | 1 +
+ examples/clutter.js | 103 ++++++++++++++++++++++-----------------------
+ 2 files changed, 51 insertions(+), 53 deletions(-)
+
+commit 9bfc55f818d482aff043103a1dfaa2972e33df34
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:05:56 2008 +0000
+
+ Update actions example.
+
+ svn path=/trunk/; revision=584
+
+ examples/actions.js | 42 ++++++++++++++++++++----------------------
+ 1 files changed, 20 insertions(+), 22 deletions(-)
+
+commit 1b081c61dbe59d6926c40d2c904bcb182a647a5e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 01:02:14 2008 +0000
+
+ Update accelgroup example to cleaner style, etc.
+
+ svn path=/trunk/; revision=583
+
+ examples/accelgroup.js | 25 +++++++++++++------------
+ 1 files changed, 13 insertions(+), 12 deletions(-)
+
+commit fcfce7ae3c3c3e82900aa11b0b0308879672f4e3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 31 00:14:29 2008 +0000
+
+ Fix make dist with GtkDoc stuff...
+
+ svn path=/trunk/; revision=582
+
+ doc/Makefile.am | 8 ++++++--
+ doc/reference/Makefile.am | 3 +--
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 26d57b25a2b9511bc9a1bc42d2d339dce5de0474
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 23:30:40 2008 +0000
+
+ Update readme to have dependencies.
+
+ svn path=/trunk/; revision=581
+
+ README | 24 +++++++++++++++++++++++-
+ 1 files changed, 23 insertions(+), 1 deletions(-)
+
+commit 074913c36993b5dea6f033cd91d702bb7e38ebb4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 08:36:02 2008 +0000
+
+ Update indentation.
+
+ svn path=/trunk/; revision=580
+
+ libseed/seed-api.c | 39 +++----
+ libseed/seed-builtins.c | 53 ++++-----
+ libseed/seed-closure.c | 28 ++---
+ libseed/seed-closure.h | 2 +-
+ libseed/seed-engine.c | 161 +++++++++++--------------
+ libseed/seed-engine.h | 2 +-
+ libseed/seed-exceptions.c | 21 ++--
+ libseed/seed-gtype.c | 55 ++++-----
+ libseed/seed-private.h | 2 +-
+ libseed/seed-signals.c | 93 +++++++--------
+ libseed/seed-signals.h | 2 +-
+ libseed/seed-structs.c | 174 ++++++++++++---------------
+ libseed/seed-structs.h | 19 +--
+ libseed/seed-types.c | 291 ++++++++++++++++++---------------------------
+ libseed/seed-types.h | 85 +++++---------
+ libseed/seed.h | 223 +++++++++++++++--------------------
+ 16 files changed, 525 insertions(+), 725 deletions(-)
+
+commit 10595d67fbd52a86500fe8847145eeb0adb5a552
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 08:15:07 2008 +0000
+
+ Tutorial maybe done?
+
+
+ svn path=/trunk/; revision=579
+
+ doc/tutorial-standalone/tutorial.html | 92 ++++++++++++++++-----------------
+ 1 files changed, 45 insertions(+), 47 deletions(-)
+
+commit 40d5fc9696085050db55debe972f5d7f877ca3ed
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 06:50:01 2008 +0000
+
+ One more bit for part two.
+
+ svn path=/trunk/; revision=578
+
+ doc/tutorial-standalone/tutorial.html | 65 ++++++++++++++++++++++++++++++++-
+ 1 files changed, 64 insertions(+), 1 deletions(-)
+
+commit 93ff82868333fae764a9b442750c5f693455f9cd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 06:21:00 2008 +0000
+
+ Almost through part two.
+
+ svn path=/trunk/; revision=577
+
+ doc/tutorial-standalone/tutorial.html | 36 ++++++++++++++++++--------------
+ 1 files changed, 20 insertions(+), 16 deletions(-)
+
+commit e89b6e6bb25c409be97fc069bf6533a117cb9504
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 05:26:02 2008 +0000
+
+ Work work work on tutorial.
+
+ svn path=/trunk/; revision=576
+
+ doc/tutorial-standalone/tutorial.html | 51 +++++++++++++++++----------------
+ 1 files changed, 26 insertions(+), 25 deletions(-)
+
+commit 4c1c6c67cf9ff1278f7bcd9fccfac1b1d69d88c1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 30 04:22:56 2008 +0000
+
+ Updating tutorial. Now have highlighting of changed things...
+
+
+ svn path=/trunk/; revision=575
+
+ doc/sh.css | 2 +-
+ doc/style.css | 5 -----
+ doc/tutorial-standalone/tutorial.html | 28 +++++++++++++++++-----------
+ 3 files changed, 18 insertions(+), 17 deletions(-)
+
+commit ebf64c4d51022ed7ced9e71348c2816aa96f499b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 29 11:26:31 2008 +0000
+
+ The whole first part of the tutorial is done.
+
+ svn path=/trunk/; revision=574
+
+ doc/tutorial-standalone/packing.png | Bin 8794 -> 14227 bytes
+ doc/tutorial-standalone/packing.svg | 57 ++++++++++++++++++--------
+ doc/tutorial-standalone/tutorial.html | 71 ++++++++++++++++++++++----------
+ 3 files changed, 89 insertions(+), 39 deletions(-)
+
+commit dc9671239cd814725083deb4e09457c28f5c88f4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 29 11:08:40 2008 +0000
+
+ Global doc style work, updating tutorial.
+
+ svn path=/trunk/; revision=573
+
+ doc/sh.css | 2 +-
+ doc/style.css | 7 ++-
+ doc/tutorial-standalone/tutorial.html | 89 ++++++++++++++++-----------------
+ 3 files changed, 48 insertions(+), 50 deletions(-)
+
+commit 529fa2f0dd9ec564205c9ff98b14914257b0db05
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 29 10:37:53 2008 +0000
+
+ Add coding conventions file, working on browser tut.
+
+ svn path=/trunk/; revision=572
+
+ doc/conventions.html | 30 +++++++++++++
+ doc/tutorial-standalone/tutorial.html | 76 ++++++++++++++-------------------
+ 2 files changed, 62 insertions(+), 44 deletions(-)
+
+commit f9d72afbf96c527f341cff663800ff0893e070b1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 22:22:53 2008 +0000
+
+ Whoops! Haven't been using an overlapping window manager, didn't notice
+ that the new tutorial browser doesn't set a size...
+
+ svn path=/trunk/; revision=571
+
+ doc/tutorial-standalone/2.js | 1 +
+ doc/tutorial-standalone/3.js | 1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+
+commit ec442b7b315b0333f991450c40c51bc52794abb3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 22:19:50 2008 +0000
+
+ Better error if we don't have gtk-doc.
+
+ svn path=/trunk/; revision=570
+
+ autogen.sh | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 70e353dfa047a2d0a9200d9b8bbd0426bfd7bd56
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 04:16:08 2008 +0000
+
+ Break back into three parts.
+
+ svn path=/trunk/; revision=569
+
+ doc/tutorial-standalone/1.js | 21 ++++++++++++---------
+ 1 files changed, 12 insertions(+), 9 deletions(-)
+
+commit f9e64fcca84e040dd98d2572b7ddfdd5f421d44e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 04:12:54 2008 +0000
+
+ Update tutorial.
+
+ svn path=/trunk/; revision=568
+
+ doc/tutorial-standalone/2.js | 99 ++-------------
+ doc/tutorial-standalone/3.js | 285 +++++++++++++++++++++++++++++++-----------
+ 2 files changed, 222 insertions(+), 162 deletions(-)
+
+commit 7a282eadc71315a3e8e6a3744ee1c202bfffd497
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 04:03:42 2008 +0000
+
+ Cleaning up tutorial browser.
+
+ svn path=/trunk/; revision=567
+
+ doc/tutorial-standalone/2.js | 77 ++++++++++++++++++++++++------------------
+ 1 files changed, 44 insertions(+), 33 deletions(-)
+
+commit de2706df74f3bea3e5dfbf77210016143eaabaa1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 03:40:53 2008 +0000
+
+ Working on tutorial browser...
+
+ svn path=/trunk/; revision=566
+
+ doc/tutorial-standalone/2.js | 9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+commit da7c6138503d2e649a5135175b600641744fc8e3
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 28 03:24:30 2008 +0000
+
+ Working on tutorial.
+
+ svn path=/trunk/; revision=565
+
+ doc/tutorial-standalone/2.js | 236 ++++++++++++++++++++++++++++++------------
+ 1 files changed, 168 insertions(+), 68 deletions(-)
+
+commit 7df3f25986088d93114c1f9ba192cacc2d61cecd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 27 23:41:39 2008 +0000
+
+ Emacs coloring. Better, muted, quieter.
+
+ svn path=/trunk/; revision=564
+
+ doc/sh.css | 67 +-----------------------------------------------------------
+ 1 files changed, 1 insertions(+), 66 deletions(-)
+
+commit dd89b495f7167a7a311f870602545607eb4a4d9d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 27 23:39:39 2008 +0000
+
+ Syntax highlighting for documentation!!
+
+ It's not the prettiest, but it's better than nothing...
+
+
+ svn path=/trunk/; revision=563
+
+ doc/modules/readline.html | 11 +-
+ doc/runtime.html | 39 ++--
+ doc/sh.css | 66 +++++++
+ doc/sh.js | 4 +
+ doc/sh_js.js | 347 +++++++++++++++++++++++++++++++++
+ doc/tutorial-standalone/tutorial.html | 51 +++---
+ 6 files changed, 472 insertions(+), 46 deletions(-)
+
+commit 4b577ec9555131d0a649afe57016fbff42b77f85
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 08:17:07 2008 +0000
+
+ Still working on tutorial browser.
+
+ svn path=/trunk/; revision=562
+
+ doc/tutorial-standalone/2.js | 39 ++++++++++++++++++++++++++++-----------
+ 1 files changed, 28 insertions(+), 11 deletions(-)
+
+commit b8f1d1a2fd27d3d641ce7353a9142b01802c4a09
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 24 07:53:29 2008 +0000
+
+ Protect class_init and instance_init functions because references only
+ exist on the heap.
+
+ svn path=/trunk/; revision=561
+
+ libseed/seed-gtype.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 7cd511a3d5ce42b5c4497148f0079bae93aa47a6
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 07:38:21 2008 +0000
+
+ Push tutorial stuff.
+
+ svn path=/trunk/; revision=560
+
+ doc/tutorial-standalone/1.js | 18 ++++----
+ doc/tutorial-standalone/2.js | 108 +++++++++++++++++++++--------------------
+ 2 files changed, 64 insertions(+), 62 deletions(-)
+
+commit 8edc465bb69ad101e278ec0fc37553fb8e5d38d1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 07:03:07 2008 +0000
+
+ Make tests use /usr/bin/env seed.
+
+ svn path=/trunk/; revision=559
+
+ tests/c-module.js | 2 +-
+ tests/closure-finalization.js | 2 +-
+ tests/constructor-prototype.js | 2 +-
+ tests/function-info.js | 2 +-
+ tests/gtype-typerror.js | 2 +-
+ tests/include-syntax.js | 2 +-
+ tests/object-info.js | 2 +-
+ tests/signal-exception.js | 2 +-
+ tests/struct-constructor.js | 2 +-
+ tests/struct-enumerate.js | 2 +-
+ tests/struct-nested-set.js | 2 +-
+ tests/struct-offsets.js | 2 +-
+ tests/struct-set-member.js | 2 +-
+ tests/struct-union-enumerate.js | 2 +-
+ 14 files changed, 14 insertions(+), 14 deletions(-)
+
+commit ae285ed2845947f9843de4334a1533b80dd914e8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 02:06:16 2008 +0000
+
+ Make buttons do things.
+
+ svn path=/trunk/; revision=558
+
+ doc/tutorial-standalone/2.js | 20 +++++++++++++++-----
+ 1 files changed, 15 insertions(+), 5 deletions(-)
+
+commit 56ccba4dadf39af820a4a95f3354532ecd98ca6e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 01:47:27 2008 +0000
+
+ Standardize on underscores, not camelCase
+
+ svn path=/trunk/; revision=557
+
+ doc/tutorial-standalone/1.js | 24 ++++++++++++------------
+ doc/tutorial-standalone/2.js | 28 ++++++++++++++--------------
+ 2 files changed, 26 insertions(+), 26 deletions(-)
+
+commit d197c9eeb9f3724a9b46fbdea92b2c50b5016b52
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 01:41:25 2008 +0000
+
+ Keep tab.
+
+ svn path=/trunk/; revision=556
+
+ doc/tutorial-standalone/2.js | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit f08e886d140f6bb50c36e8ee09175b03ad8d8986
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 24 01:30:21 2008 +0000
+
+ Updating tutorial. Slowly.
+
+ svn path=/trunk/; revision=555
+
+ doc/tutorial-standalone/2.js | 129 ++++++++++++++++++++++-------------------
+ 1 files changed, 69 insertions(+), 60 deletions(-)
+
+commit 46168cfed54bc3f5d017371ee3c552002d46f262
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:55:10 2008 +0000
+
+ New GType inheritance indentation/syntax style.
+
+ svn path=/trunk/; revision=554
+
+ doc/runtime.html | 32 ++++++++++++++++----------------
+ doc/tutorial-standalone/1.js | 5 ++---
+ 2 files changed, 18 insertions(+), 19 deletions(-)
+
+commit fc44f920ee7548830d677cc85a0e407314802424
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:40:05 2008 +0000
+
+ Robb and I are trying to come up with a consistent and pretty ... style to follow from now on.
+
+ svn path=/trunk/; revision=553
+
+ doc/tutorial-standalone/1.js | 35 ++++++++++++++++++++---------------
+ 1 files changed, 20 insertions(+), 15 deletions(-)
+
+commit f1ebe6a4dae2cff1b9f05f26fccebe7c4a0a1b72
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:34:21 2008 +0000
+
+ Robb's suggestions?
+
+ svn path=/trunk/; revision=552
+
+ doc/tutorial-standalone/1.js | 70 ++++++++++++++++++++----------------------
+ 1 files changed, 33 insertions(+), 37 deletions(-)
+
+commit b6298c7ba9802b87cbc2e10db6f28564cf79af1a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:26:20 2008 +0000
+
+ Redo first part of tutorial (the code, not the tut. yet)
+
+ svn path=/trunk/; revision=551
+
+ doc/tutorial-standalone/1.js | 63 ++++++++++++++++++------------------------
+ 1 files changed, 27 insertions(+), 36 deletions(-)
+
+commit 8dca91ea19628f08744392b4b2cf9e08c6526237
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:14:48 2008 +0000
+
+ runtime docs grammar + consistency
+
+
+ svn path=/trunk/; revision=550
+
+ doc/runtime.html | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit ceeef72a77a0328add877a8efdb618343d9efdf1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:08:14 2008 +0000
+
+ Grammar.
+
+ svn path=/trunk/; revision=549
+
+ doc/runtime.html | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 0bba37441603d724962e33d66887686d498de001
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 09:06:24 2008 +0000
+
+ Lots of little things.
+
+ svn path=/trunk/; revision=548
+
+ doc/modules/readline.html | 2 +-
+ doc/runtime.html | 15 ++++++++++-----
+ doc/tutorial-standalone/tutorial.html | 7 +++++++
+ 3 files changed, 18 insertions(+), 6 deletions(-)
+
+commit ecaaa7e4b7aa68afb436e452bd85e2c7008185f8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 08:56:20 2008 +0000
+
+ Split out modules CSS too, update versions, use Helvetica if we have it (this makes things not fail on OS X, where we don't /have/ a "sans-serif" font link)
+
+ svn path=/trunk/; revision=547
+
+ doc/modules/readline.html | 66 +--------------------------------
+ doc/runtime.html | 2 +-
+ doc/style.css | 2 +-
+ doc/tutorial-standalone/tutorial.html | 2 +-
+ 4 files changed, 5 insertions(+), 67 deletions(-)
+
+commit 95064e7665fcb6fde79f407b2349129b925cbd90
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 08:52:31 2008 +0000
+
+ Add style.css to automakefile.
+
+ svn path=/trunk/; revision=546
+
+ doc/Makefile.am | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit cb07ca1351e7349c9ad5cd8401b6d03b57e33341
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 08:51:58 2008 +0000
+
+ Split out CSS.
+
+ svn path=/trunk/; revision=545
+
+ doc/runtime.html | 64 +--------------------------------
+ doc/style.css | 61 +++++++++++++++++++++++++++++++
+ doc/tutorial-standalone/tutorial.html | 65 +--------------------------------
+ 3 files changed, 63 insertions(+), 127 deletions(-)
+
+commit def3ab4c9231738f218a8859e5b44b256b31d5dc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 08:00:39 2008 +0000
+
+ Why were we disabling optimizations on non debug builds?
+
+ svn path=/trunk/; revision=544
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 710f8e11529e65eef2ebbbab1c8734e7ebbb91c2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 07:38:26 2008 +0000
+
+ Make turtle build against included seed header.
+
+ svn path=/trunk/; revision=543
+
+ examples/turtle/turtle.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d8bf94ed57428a84e9e315533dd0b0fbc74272bc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 07:26:44 2008 +0000
+
+ Autotools fix.
+
+ svn path=/trunk/; revision=542
+
+ examples/browser/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ea3d3b17b73a52a68cf1760efb257ed1eecd9a44
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 07:22:16 2008 +0000
+
+ Fix robb's license problem.
+
+ svn path=/trunk/; revision=541
+
+ examples/browser/COPYING | 344 ++++++++++++++++++++++++++++++++++++++++++-
+ examples/lightsoff/COPYING | 344 ++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 672 insertions(+), 16 deletions(-)
+
+commit df4a8308f6808803ce09348c3ebd037e2e1acbc0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 07:18:17 2008 +0000
+
+ Small LO fixes.
+
+ svn path=/trunk/; revision=540
+
+ examples/lightsoff/arrow.js | 25 ++++++++++++++-----------
+ examples/lightsoff/main.js | 8 +++++---
+ 2 files changed, 19 insertions(+), 14 deletions(-)
+
+commit d7ecdc35bb6a24a10b2042f70fbab44ae53543f1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 06:56:58 2008 +0000
+
+ Catch LO GConf exceptions.
+
+ svn path=/trunk/; revision=539
+
+ examples/lightsoff/arrow.js | 10 +++++++++-
+ examples/lightsoff/board.js | 11 ++++++++++-
+ examples/lightsoff/main.js | 11 +++++++++++
+ examples/lightsoff/score.js | 2 +-
+ 4 files changed, 31 insertions(+), 3 deletions(-)
+
+commit a11ce10fc58ea67a137b3c254b6bc37267d3f99b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 06:23:55 2008 +0000
+
+ Sync browser.
+
+ svn path=/trunk/; revision=538
+
+ examples/browser/browser-actions.js | 23 +++++++++++++++++++++++
+ examples/browser/browser-find.js | 6 +++---
+ examples/browser/browser-menu.js | 20 +++++++++++++++++++-
+ examples/browser/browser-tab.js | 4 ++++
+ examples/browser/main.js | 9 ++++++++-
+ 5 files changed, 57 insertions(+), 5 deletions(-)
+
+commit ae90a8a55854022788173c801f08aef314465518
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 23 03:37:54 2008 +0000
+
+ Character arrays.
+
+ svn path=/trunk/; revision=537
+
+ libseed/seed-types.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 98 insertions(+), 4 deletions(-)
+
+commit 3c59d38d38b7fa6b06eadf37d9a2fe377ab25cdd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 23 00:46:17 2008 +0000
+
+ Remove bak files.
+
+ svn path=/trunk/; revision=536
+
+ doc/reference/tmpl/seed-builtins.sgml.bak | 31 -
+ doc/reference/tmpl/seed-closure.sgml.bak | 72 --
+ doc/reference/tmpl/seed-debug.sgml.bak | 66 --
+ doc/reference/tmpl/seed-engine.sgml.bak | 19 -
+ doc/reference/tmpl/seed-exceptions.sgml.bak | 19 -
+ doc/reference/tmpl/seed-gtype.sgml.bak | 29 -
+ doc/reference/tmpl/seed-private.sgml.bak | 19 -
+ doc/reference/tmpl/seed-signals.sgml.bak | 58 --
+ doc/reference/tmpl/seed-structs.sgml.bak | 19 -
+ doc/reference/tmpl/seed-types.sgml.bak | 19 -
+ doc/reference/tmpl/seed-unused.sgml.bak | 1121 ---------------------------
+ doc/reference/tmpl/seed.sgml.bak | 19 -
+ 12 files changed, 0 insertions(+), 1491 deletions(-)
+
+commit a14212a60d57ad430fddc1443f135d14a0bc4201
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 22 23:18:48 2008 +0000
+
+ Update tutorial to readline changes. Whoops!
+
+ svn path=/trunk/; revision=535
+
+ doc/tutorial-standalone/tutorial.html | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit dc13976c8aaf658299f6f2b89d4e146df458ed72
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 22 23:12:36 2008 +0000
+
+ Update docs to connect having no more this argument.
+
+ svn path=/trunk/; revision=534
+
+ doc/runtime.html | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c541885f8027a5067d7441ebca4b92c7df4c3d3f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 21 21:18:27 2008 +0000
+
+ Remove random unnecessary backup file.
+
+
+ svn path=/trunk/; revision=533
+
+ examples/browser/Makefile.am~ | 51 -----------------------------------------
+ 1 files changed, 0 insertions(+), 51 deletions(-)
+
+commit 07cde4b0b037353c1446112242ff478dbb20b657
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 21 07:00:45 2008 +0000
+
+ Add browser to autoconf so things ... go.
+
+ svn path=/trunk/; revision=532
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c5c02377e99bad264484d4eef6c5812f1d32c4cf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 06:19:17 2008 +0000
+
+ Examples and tests are under MIT license. Except for lightsoff which is
+ under GPLv3. Also remerge browser in to SVN, which is also under GPLv3.
+
+ svn path=/trunk/; revision=531
+
+ examples/COPYING | 6 +
+ examples/Makefile.am | 2 +
+ examples/browser/COPYING | 11 +
+ examples/browser/Makefile.am | 24 +++
+ examples/browser/Makefile.am~ | 51 +++++
+ examples/browser/browser-actions.js | 324 +++++++++++++++++++++++++++++++++
+ examples/browser/browser-bookmarks.js | 54 ++++++
+ examples/browser/browser-find.js | 39 ++++
+ examples/browser/browser-main.js | 24 +++
+ examples/browser/browser-menu.js | 130 +++++++++++++
+ examples/browser/browser-tab.js | 156 ++++++++++++++++
+ examples/browser/browser-toolbar.js | 25 +++
+ examples/browser/main.js | 112 +++++++++++
+ examples/lightsoff/COPYING | 11 +
+ tests/COPYING | 1 +
+ tests/Makefile.am | 1 +
+ 16 files changed, 971 insertions(+), 0 deletions(-)
+
+commit 8c41fa486f28b84acfe79a2fbdd07cdf3a89e6e8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 06:09:04 2008 +0000
+
+ Relicense under LGPL3. This change has been approved by all
+ contributors.
+
+ svn path=/trunk/; revision=530
+
+ COPYING | 826 +++++++++--------------------------------------
+ libseed/seed-api.c | 17 +
+ libseed/seed-builtins.c | 36 ++-
+ libseed/seed-closure.c | 36 ++-
+ libseed/seed-engine.c | 33 +-
+ libseed/seed-gtype.c | 33 +-
+ libseed/seed-signals.c | 33 +-
+ libseed/seed-structs.c | 33 +-
+ libseed/seed-types.c | 36 ++-
+ libseed/seed.h | 32 +-
+ 10 files changed, 311 insertions(+), 804 deletions(-)
+
+commit 32f5403a4a53676880574792812b8bf4c34d4192
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 06:00:43 2008 +0000
+
+ Fix mixup where _INITIALLY_UNOWNED but not floating objects would lose
+ one reference introduced a few commits ago.
+
+ svn path=/trunk/; revision=529
+
+ examples/lightsoff/board.js | 1 -
+ examples/lightsoff/light.js | 4 +---
+ libseed/seed-engine.c | 7 +++----
+ 3 files changed, 4 insertions(+), 8 deletions(-)
+
+commit 7bb1e61260e291b7c14dbe3296e6fbdb3e985011
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 01:51:23 2008 +0000
+
+ Fix dubious JSValueProtect.
+
+ svn path=/trunk/; revision=528
+
+ libseed/seed-engine.c | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 83a92b200c960b78c3b8206428991411eb6b853e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 01:46:56 2008 +0000
+
+ I fail at GIT.
+
+ svn path=/trunk/; revision=527
+
+ examples/lightsoff/board.js | 3 +++
+ examples/lightsoff/light.js | 2 ++
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit d27966433d282d8ce91e1c9eca3367ec237a38d0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 21 01:46:48 2008 +0000
+
+ Fix some reference leaks for some weird objects.
+
+ svn path=/trunk/; revision=526
+
+ libseed/seed-engine.c | 8 ++++++--
+ libseed/seed-signals.c | 4 ++--
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit f3dfa0bb79ff4fca5e1964a8fe830a74e5d6e660
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 21:31:06 2008 +0000
+
+ Don't just connect to main_quit. Need a return value (or default).
+
+ svn path=/trunk/; revision=525
+
+ examples/actions.js | 2 +-
+ examples/json-packing.js | 2 +-
+ examples/poppler.js | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 71773fc6ee1a2dd956e57bb9610e0a72617a0721
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 21:24:43 2008 +0000
+
+ Fix some explicit paths to the interpreter.
+
+ svn path=/trunk/; revision=524
+
+ examples/Gnio-server.js | 2 +-
+ examples/Gnio.js | 2 +-
+ examples/calculator.js | 2 +-
+ examples/clutter-cairo.js | 2 +-
+ examples/glib/env.js | 2 +-
+ examples/glib/thread.js | 2 +-
+ examples/glib/timeout.js | 2 +-
+ examples/glib/timer.js | 2 +-
+ examples/threaded-repl.js | 2 +-
+ examples/video.js | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 617a8cde3103fc1c2864cb13e94be21f7202c58e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 21:12:10 2008 +0000
+
+ Whoops! Forgot to add makefile for modules docs.
+
+
+ svn path=/trunk/; revision=523
+
+ doc/modules/Makefile.am | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+commit faf5d6c3dc6562512ab5bd1b170269d16586f2fc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 08:46:09 2008 +0000
+
+ Make sure to install new docs1
+
+ svn path=/trunk/; revision=522
+
+ configure.ac | 1 +
+ doc/Makefile.am | 2 +-
+ examples/Makefile.am | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 46f7ffe5ffe69986100d8f5c893c471a56f2cd51
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 08:37:24 2008 +0000
+
+ Fix readline build warning.
+
+ svn path=/trunk/; revision=521
+
+ modules/readline/seed-readline.c | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 82935b5068e8e872d7aa12bb026c4557e33b9ca1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 08:28:27 2008 +0000
+
+ Updated docs to reflect readline changes.
+
+ svn path=/trunk/; revision=520
+
+ doc/modules/readline.html | 100 +++++++++++++++++++++++++++++++++++++++++++++
+ doc/runtime.html | 18 --------
+ 2 files changed, 100 insertions(+), 18 deletions(-)
+
+commit bbc42e484e98fee2691aa5d7fd485ad8beafed50
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 08:28:01 2008 +0000
+
+ Some compilation fixes on some systems for readline module.
+
+ svn path=/trunk/; revision=519
+
+ modules/readline/seed-readline.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 27066f56710f57883ea94b2542f043281ed374a8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 08:22:44 2008 +0000
+
+ More GTK examples
+
+ svn path=/trunk/; revision=518
+
+ examples/Makefile.am | 2 ++
+ examples/gtkplug.js | 37 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+), 0 deletions(-)
+
+commit d696528aac5f64cc5cb458d036c2729d6f289430
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 08:21:16 2008 +0000
+
+ Remove readline builtin, fix everything everywhere that uses it...
+
+ svn path=/trunk/; revision=517
+
+ Makefile.am | 24 +++-----
+ config.h.in | 3 -
+ configure.ac | 11 ++-
+ examples/repl.js | 22 ++++----
+ examples/turtle/Makefile.am | 2 +-
+ libseed/seed-builtins.c | 114 --------------------------------------
+ modules/readline/Makefile.am | 4 +-
+ src/main.c | 6 +-
+ tests/builtin-argument-length.js | 9 +---
+ tests/readline.js | 3 +-
+ 10 files changed, 37 insertions(+), 161 deletions(-)
+
+commit c7e6b6a14906ecc1d2cc86b366ebc691b6625c21
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 07:55:16 2008 +0000
+
+ Add readline module. Next commit will remove the old one and fix tests and repl and stuff.........
+
+ svn path=/trunk/; revision=516
+
+ configure.ac | 1 +
+ modules/Makefile.am | 2 +-
+ modules/readline/Makefile.am | 20 ++++++
+ modules/readline/seed-readline.c | 139 ++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 161 insertions(+), 1 deletions(-)
+
+commit 7fee7e273f76127222a9e19f090a1e97a3b8083c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 06:32:59 2008 +0000
+
+ Adding some docs...
+
+ svn path=/trunk/; revision=515
+
+ doc/runtime.html | 83 ++++++++++++++++++++++++++++++++++++++++++-----------
+ 1 files changed, 65 insertions(+), 18 deletions(-)
+
+commit f3d6d173f6b157e2f8d3aa291f14084457db376c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 05:34:35 2008 +0000
+
+ Add gtk-doc to Build Configuration output
+
+ svn path=/trunk/; revision=514
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit dacfad0bb012599b01df620449e7314b2a4f0776
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 20 05:31:35 2008 +0000
+
+ Initial conditional module compilation patch, and adding a reminder to the docs....
+
+ svn path=/trunk/; revision=513
+
+ configure.ac | 14 ++++++++++++++
+ doc/runtime.html | 4 ++++
+ modules/canvas/Makefile.am | 8 +++++---
+ modules/sqlite/Makefile.am | 8 +++++---
+ 4 files changed, 28 insertions(+), 6 deletions(-)
+
+commit 34d2cfab796e608c160b37a63c9ab4de3bc867bf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:49:31 2008 +0000
+
+ Add m4 directory to unbreak autotools
+
+ svn path=/trunk/; revision=512
+
+ m4/gtk-doc.m4 | 1 +
+ m4/intltool.m4 | 200 ++
+ m4/libtool.m4 | 7325 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ m4/ltoptions.m4 | 368 +++
+ m4/ltsugar.m4 | 123 +
+ m4/ltversion.m4 | 23 +
+ m4/lt~obsolete.m4 | 92 +
+ 7 files changed, 8132 insertions(+), 0 deletions(-)
+
+commit fdac50c3024e969919cb0417bcbef522555a74f8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:43:09 2008 +0000
+
+ More leaks. All hail Instruments
+
+ svn path=/trunk/; revision=511
+
+ libseed/seed-structs.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 744a7632f11d27652c54ac8b8321bf721d10bbde
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:32:41 2008 +0000
+
+ Make lightsoff wrap quit in an anonymous function as introspection now throws a
+ GInvoke error if we pass too many arguments.
+
+ svn path=/trunk/; revision=510
+
+ examples/lightsoff/main.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ea420c738760817647a912ef70d4abda31b3e2af
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:31:38 2008 +0000
+
+ More leaks
+
+ svn path=/trunk/; revision=509
+
+ libseed/seed-engine.c | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit f4d91e8421767b192746e0d0d9ad3c6d756c6e9b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:27:53 2008 +0000
+
+ More leaks
+
+ svn path=/trunk/; revision=508
+
+ libseed/seed-closure.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit b5bbb38cb7d691834a1b58e9d7a36cc3a703c966
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:14:59 2008 +0000
+
+ Stop confusing Gobject by (in some cases) attempting to remove toggle
+ refs twice.
+
+ svn path=/trunk/; revision=507
+
+ libseed/seed-engine.c | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit d2e08aee88d3a6399432a2731db1c45b8941c09e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 04:07:03 2008 +0000
+
+ Fix small leak courtesty of XCode Instruments and Tim.
+
+ svn path=/trunk/; revision=506
+
+ libseed/seed-closure.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit d4e3784f268ce69d78c9ad1f7371a8346e1746e6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:55:11 2008 +0000
+
+ Ok gtk-doc is somewhat sane now.
+
+ svn path=/trunk/; revision=505
+
+ doc/reference/tmpl/seed-builtins.sgml | 19 +
+ doc/reference/tmpl/seed-builtins.sgml.bak | 31 +
+ doc/reference/tmpl/seed-closure.sgml | 19 +
+ doc/reference/tmpl/seed-closure.sgml.bak | 72 ++
+ doc/reference/tmpl/seed-debug.sgml | 64 ++
+ doc/reference/tmpl/seed-debug.sgml.bak | 66 ++
+ doc/reference/tmpl/seed-engine.sgml | 44 +
+ doc/reference/tmpl/seed-engine.sgml.bak | 19 +
+ doc/reference/tmpl/seed-exceptions.sgml | 80 ++
+ doc/reference/tmpl/seed-exceptions.sgml.bak | 19 +
+ doc/reference/tmpl/seed-gtype.sgml | 19 +
+ doc/reference/tmpl/seed-gtype.sgml.bak | 29 +
+ doc/reference/tmpl/seed-private.sgml | 28 +
+ doc/reference/tmpl/seed-private.sgml.bak | 19 +
+ doc/reference/tmpl/seed-signals.sgml | 19 +
+ doc/reference/tmpl/seed-signals.sgml.bak | 58 ++
+ doc/reference/tmpl/seed-structs.sgml | 29 +
+ doc/reference/tmpl/seed-structs.sgml.bak | 19 +
+ doc/reference/tmpl/seed-types.sgml | 328 ++++++++
+ doc/reference/tmpl/seed-types.sgml.bak | 19 +
+ doc/reference/tmpl/seed-unused.sgml | 344 ++++++++
+ doc/reference/tmpl/seed-unused.sgml.bak | 1121 +++++++++++++++++++++++++++
+ doc/reference/tmpl/seed.sgml | 863 +++++++++++++++++++++
+ doc/reference/tmpl/seed.sgml.bak | 19 +
+ 24 files changed, 3347 insertions(+), 0 deletions(-)
+
+commit 1d8823d9fd59a7281008fb9e96a890b5c9219865
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:52:16 2008 +0000
+
+ More gtk-doc cleanup
+
+ svn path=/trunk/; revision=504
+
+ doc/reference/seed-docs.sgml | 18 ++++--------------
+ 1 files changed, 4 insertions(+), 14 deletions(-)
+
+commit 1226c8cf733886392fedf9f09dea33590394e0b9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:47:41 2008 +0000
+
+ Some gtk-doc fixes...it's still entirely rediculous
+
+ svn path=/trunk/; revision=503
+
+ doc/reference/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f0f7f6ef6288aba91261253bee5092f679fd90fd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:47:39 2008 +0000
+
+ gtk-doc actually builds now...
+
+ svn path=/trunk/; revision=502
+
+ Makefile.am | 2 +
+ autogen.sh | 2 +
+ configure.ac | 1 +
+ doc/Makefile.am | 2 +-
+ doc/reference/Makefile.am | 87 ++++++++++++++++
+ doc/reference/seed-docs.sgml | 28 +++++
+ doc/reference/seed-sections.txt | 211 +++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 332 insertions(+), 1 deletions(-)
+
+commit 7e37f4774d58850566a3c2d858184a31835c953e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:47:37 2008 +0000
+
+ Begin adding GTK doc...
+
+ svn path=/trunk/; revision=501
+
+ configure.ac | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 22b9039b886248e45113b8dd8301913a65f87166
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:13:20 2008 +0000
+
+ Avoid some heap allocations.
+
+ svn path=/trunk/; revision=500
+
+ libseed/seed-closure.c | 45 +++++++++++++++++++++------------------------
+ 1 files changed, 21 insertions(+), 24 deletions(-)
+
+commit b922ee6644377842cfaa17a69e3a6fd47ad5c8c6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:04:17 2008 +0000
+
+ Add a test of native closure exceptions.
+
+ svn path=/trunk/; revision=499
+
+ tests/Makefile.am | 1 +
+ tests/native-closure-exception.js | 17 +++++++++++++++++
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit de1787a67a4a6f4882a342575c47feba80508551
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 03:04:14 2008 +0000
+
+ Exceptions in ffi closures.
+
+ svn path=/trunk/; revision=498
+
+ libseed/seed-closure.c | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+commit b5bd5f10aae0d6020183a3837bfeb30c5a87e890
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:59 2008 +0000
+
+ Fix the rest of the examples to enum change.
+
+ svn path=/trunk/; revision=497
+
+ examples/clutter-shader/ShaderView.js | 4 ++--
+ examples/lightsoff/arrow.js | 4 ++--
+ examples/lightsoff/light.js | 4 ++--
+ examples/lightsoff/score.js | 8 ++++----
+ 4 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 26f80444e99895debb322e4b92cc25ea70b04ea8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:57 2008 +0000
+
+ Fix trash in REPL.
+
+ svn path=/trunk/; revision=496
+
+ examples/repl.js | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 55ed65c50cfbbea14340c0043c5cb992aab47e78
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:54 2008 +0000
+
+ First round of example fixes.
+
+ svn path=/trunk/; revision=495
+
+ examples/Gnio-server.js | 4 ++--
+ examples/clutter.js | 2 +-
+ examples/json-packing.js | 2 +-
+ examples/n-oscillator.js | 4 ++--
+ examples/poppler.js | 8 ++++----
+ examples/video.js | 2 +-
+ examples/vte-test.js | 4 ++--
+ extensions/Gtk.js | 2 +-
+ 8 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 08f74c8ac026086d64f82b47e5324570fcf14480
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:51 2008 +0000
+
+ Update tests to enum change.
+
+ svn path=/trunk/; revision=494
+
+ libseed/seed-engine.c | 1 +
+ tests/enum.js | 4 ++--
+ tests/struct-nested-set.js | 2 +-
+ 3 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 97eb839195f066b42e9250d640931f3544162212
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:48 2008 +0000
+
+ Rewrite enums from (for example) Gtk.WindowType.toplevel to
+ Gtk.WindowType.Toplevel
+
+ svn path=/trunk/; revision=493
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ee0c7a348cf0c0c8bc3505cf3dd703f25760a53a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 20 02:56:45 2008 +0000
+
+ Consistently use glong for enums.
+
+ svn path=/trunk/; revision=492
+
+ libseed/seed-engine.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 5263b96849dfc77968d27633ad4c0d6d0187a255
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 02:04:00 2008 +0000
+
+ No more GCC warnings. The one in main was silly, but w/e.
+
+ svn path=/trunk/; revision=491
+
+ modules/canvas/seed-canvas.c | 2 +-
+ src/main.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit bf64bebc22b4c1fca92df6941c748dec5e96748f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 01:57:06 2008 +0000
+
+ Fix some warnings in turtle example.
+
+ svn path=/trunk/; revision=490
+
+ examples/turtle/turtle.c | 27 +++++++++++++++++++--------
+ 1 files changed, 19 insertions(+), 8 deletions(-)
+
+commit 9a1e5cb14dbd55a1d84f10183abb761b74b5a504
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 01:50:21 2008 +0000
+
+ Re-remove ide.
+
+ svn path=/trunk/; revision=489
+
+commit bc4e617f22b28048d0e9792d2f7aa5070cdab760
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 01:47:47 2008 +0000
+
+ Re-remove browser. Whoops.
+
+ svn path=/trunk/; revision=488
+
+ examples/HACKING | 3 ---
+ examples/Makefile.am | 2 ++
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 9792783afac12f3c57584c810f1da99d7ee1d18a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 01:39:43 2008 +0000
+
+ Update Makefile to robb's new all-in-one tests.
+
+ svn path=/trunk/; revision=487
+
+ modules/canvas/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 327e0c2b22d338a9c163ef6b40ca93c1b512e752
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 01:36:14 2008 +0000
+
+ Update the HACKING file to match what we've got right now.
+
+ svn path=/trunk/; revision=486
+
+ examples/HACKING | 27 +++++++++++++++++++++------
+ 1 files changed, 21 insertions(+), 6 deletions(-)
+
+commit 8f4a028254d33108b05b624d7c49bdf1bb2dbdc6
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 00:55:43 2008 +0000
+
+ Don't use GtkClutter, at least for drawing. It's not clear we can get rid of it for /everything/ yet. Robb?
+
+
+ svn path=/trunk/; revision=485
+
+ examples/lightsoff/main.js | 26 +++++++++-----------------
+ 1 files changed, 9 insertions(+), 17 deletions(-)
+
+commit 4a8f614f1568c18e53a2552d9ebe449febd67f5a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 18 00:36:21 2008 +0000
+
+ Add Seed.readline_bind to docs, remove comment suggesting its addition.
+
+ svn path=/trunk/; revision=484
+
+ doc/runtime.html | 9 +++++++++
+ libseed/seed-builtins.c | 4 ----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 0522a1b2389fd1e5d9a8ad71f3ffa867a7193c10
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Dec 17 00:37:41 2008 +0000
+
+ Add makefile for turtle. Also installs
+ as seed_turtle, but it would be nice if
+ we could figure out how to prevent
+ that!!
+
+
+ svn path=/trunk/; revision=483
+
+ configure.ac | 1 +
+ examples/Makefile.am | 7 ++++---
+ examples/turtle/Makefile.am | 17 +++++++++++++++++
+ examples/turtle/turtle.c | 21 +++++++++++----------
+ 4 files changed, 33 insertions(+), 13 deletions(-)
+
+commit a986da0309e0806545b444a33c62c79a75f10c63
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 16 01:15:15 2008 +0000
+
+ Add Seed.spawn. Change server to cowsay server.
+
+ svn path=/trunk/; revision=482
+
+ examples/Gnio-server.js | 7 ++++---
+ libseed/seed-builtins.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 48 insertions(+), 3 deletions(-)
+
+commit 127937f7ea6bd4cb79c789dd1149f515e54539a7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 16 00:58:33 2008 +0000
+
+ Add Gnio server example.
+
+ svn path=/trunk/; revision=481
+
+ examples/Gnio-server.js | 41 +++++++++++++++++++++++++++++++++++++++++
+ examples/Makefile.am | 2 ++
+ 2 files changed, 43 insertions(+), 0 deletions(-)
+
+commit 2d87d31439b9e6b11f90904396937773661aac0c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 16 00:24:01 2008 +0000
+
+ Add Gnio example.
+
+ svn path=/trunk/; revision=480
+
+ examples/Gnio.js | 24 ++++++++++++++++++++++++
+ examples/Makefile.am | 2 ++
+ 2 files changed, 26 insertions(+), 0 deletions(-)
+
+commit cf71dcf5d2bbf2ca795cadddda2991aecfe9533d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:54:29 2008 +0000
+
+ Update shader example to track Seed changes.
+
+ svn path=/trunk/; revision=479
+
+ examples/clutter-shader/ShaderView.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit dcaf38a4f986f31bbe3126a14716c3be7368ce85
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:53:22 2008 +0000
+
+ Add threaded repl example. Still a little screwy, but can do things like
+ manipulate objects, connect signals, etc, without worrying about any
+ threading issues from JS.
+
+ svn path=/trunk/; revision=478
+
+ examples/Makefile.am | 1 +
+ examples/threaded-repl.js | 10 ++++++++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit feb3e2c6802fca68406081a593444e8801e212bf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:43:58 2008 +0000
+
+ Fix makefile.
+
+ svn path=/trunk/; revision=477
+
+ examples/Makefile.am | 2 +-
+ extensions/Seed.js | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 2106b85498e45219c920d1227ad882f1efed6e5c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:26 2008 +0000
+
+ Using the old signal connection format is now an exception, everything
+ seems to have been updated...
+
+ svn path=/trunk/; revision=476
+
+ libseed/seed-signals.c | 9 ++-------
+ 1 files changed, 2 insertions(+), 7 deletions(-)
+
+commit 674da50130522aa8f145f9b3b66721380479480f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:23 2008 +0000
+
+ Remove browser, it's now hosted elsewhere.
+
+ svn path=/trunk/; revision=475
+
+ configure.ac | 1 -
+ examples/Makefile.am | 1 -
+ examples/browser/Makefile.am | 21 ---
+ examples/browser/browser-actions.js | 301 ---------------------------------
+ examples/browser/browser-bookmarks.js | 56 ------
+ examples/browser/browser-find.js | 39 -----
+ examples/browser/browser-main.js | 24 ---
+ examples/browser/browser-menu.js | 130 --------------
+ examples/browser/browser-tab.js | 155 -----------------
+ examples/browser/browser-toolbar.js | 25 ---
+ examples/browser/main.js | 112 ------------
+ 11 files changed, 0 insertions(+), 865 deletions(-)
+
+commit 8bb7cd6feef9c8e945638bf273947acd39d39b1a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:21 2008 +0000
+
+ Fix VTE example.
+
+ svn path=/trunk/; revision=474
+
+ examples/vte-test.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 9ff95da5e1e9628024e161d8b693f5d33603608f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:18 2008 +0000
+
+ Update lightsoff to new changes.
+
+ svn path=/trunk/; revision=473
+
+ examples/lightsoff/board.js | 6 +++---
+ examples/lightsoff/light.js | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 015319563bc9e9b0a5ef8f1a1437fad968c09e90
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:16 2008 +0000
+
+ Update tests.
+
+ svn path=/trunk/; revision=472
+
+ libseed/seed-signals.c | 2 +-
+ tests/signal-userdata.js | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 158a8023cbcec8f16526b62606cce13d6f40b18b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:13 2008 +0000
+
+ Get rid of the 3 argument form of signal connection.
+
+ svn path=/trunk/; revision=471
+
+ libseed/seed-signals.c | 19 ++++++++-----------
+ 1 files changed, 8 insertions(+), 11 deletions(-)
+
+commit 17d35b64e44919fc6a7ba26fe4b8d8c66ce4bfc1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 08:32:11 2008 +0000
+
+ "this" in signals is now the object the signal was connected on.
+
+ svn path=/trunk/; revision=470
+
+ libseed/seed-signals.c | 10 +++++++---
+ 1 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 90684c0772b8a2f683f2c6cb55c18067ddb9b936
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 01:09:56 2008 +0000
+
+ Move ide into broken.
+
+ svn path=/trunk/; revision=469
+
+ configure.ac | 1 -
+ examples/Makefile.am | 3 +-
+ examples/broken/ide/Makefile.am | 26 ++++
+ examples/broken/ide/exception.svg | 76 ++++++++++++
+ examples/broken/ide/ide-actions.js | 126 ++++++++++++++++++++
+ examples/broken/ide/ide-messagearea.js | 121 +++++++++++++++++++
+ examples/broken/ide/ide-sourceview.js | 203 ++++++++++++++++++++++++++++++++
+ examples/broken/ide/ide-tab.js | 65 ++++++++++
+ examples/broken/ide/ide-tabheader.js | 27 ++++
+ examples/broken/ide/ide-tabview.js | 80 +++++++++++++
+ examples/broken/ide/ide-toolbar.js | 26 ++++
+ examples/broken/ide/ide-window.js | 40 ++++++
+ examples/broken/ide/legacy/ide.js | 155 ++++++++++++++++++++++++
+ examples/broken/ide/legacy/tabview.js | 77 ++++++++++++
+ examples/broken/ide/legacy/toolbar.js | 143 ++++++++++++++++++++++
+ examples/broken/ide/main.js | 30 +++++
+ examples/ide/Makefile.am | 26 ----
+ examples/ide/exception.svg | 76 ------------
+ examples/ide/ide-actions.js | 126 --------------------
+ examples/ide/ide-messagearea.js | 121 -------------------
+ examples/ide/ide-sourceview.js | 203 --------------------------------
+ examples/ide/ide-tab.js | 65 ----------
+ examples/ide/ide-tabheader.js | 27 ----
+ examples/ide/ide-tabview.js | 80 -------------
+ examples/ide/ide-toolbar.js | 26 ----
+ examples/ide/ide-window.js | 40 ------
+ examples/ide/legacy/ide.js | 155 ------------------------
+ examples/ide/legacy/tabview.js | 77 ------------
+ examples/ide/legacy/toolbar.js | 143 ----------------------
+ examples/ide/main.js | 30 -----
+ 30 files changed, 1196 insertions(+), 1198 deletions(-)
+
+commit 077bc4cbd9d7e839be784cd4cb3c135885c7e8cd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 01:05:39 2008 +0000
+
+ Git SVN is hard.
+
+ svn path=/trunk/; revision=468
+
+ libseed/seed-engine.c | 66 ++++++++++++++----------------------------------
+ 1 files changed, 19 insertions(+), 47 deletions(-)
+
+commit 3d17df20eab388c4dffab82c63e176bfb77ef148
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 00:42:23 2008 +0000
+
+ Small leak in constructor.
+
+ svn path=/trunk/; revision=467
+
+ libseed/seed-engine.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 670ee7c614e05ec8335622ddff2502748043ae4c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 00:42:21 2008 +0000
+
+ Some constructor cleanup.
+
+ svn path=/trunk/; revision=466
+
+ libseed/seed-engine.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit e0de3f4a4f9ed3713ef9c7fe3d6eef57cb0bdb17
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 00:42:19 2008 +0000
+
+ A proper implementation of supporting non "strict" construction
+ params in JSON constructors.
+
+ svn path=/trunk/; revision=465
+
+ libseed/seed-engine.c | 59 ++++++++++++++++++++++++++++++++++---------------
+ 1 files changed, 41 insertions(+), 18 deletions(-)
+
+commit 93f65153e7fdba65112fbb1ac787a2414a766319
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 15 00:42:18 2008 +0000
+
+ Back out construction property change.
+
+ svn path=/trunk/; revision=464
+
+ libseed/seed-engine.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 8572c696baf3b18144e49d734d9b21f553f9cfb0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 23:04:56 2008 +0000
+
+ Add Seed.repl, which just launches a repl and returns false if continue
+ is entered. Then add Seed.glib_repl which does GLib.idle_add(Seed.repl)
+ so you get a repl which doesn't halt the GLib main loop.
+
+ svn path=/trunk/; revision=463
+
+ examples/accelgroup.js | 3 ++-
+ extensions/Seed.js | 22 ++++++++++++++++++++++
+ 2 files changed, 24 insertions(+), 1 deletions(-)
+
+commit 70d45e292305e1d9343cb0fd9603f377ee96b6bd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 22:48:57 2008 +0000
+
+ Fix small leak in constructors.
+
+ svn path=/trunk/; revision=462
+
+ libseed/seed-engine.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 901d6bbc9a2eec3dbf4a85c1210623ab2fc0d612
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 22:48:55 2008 +0000
+
+ Let non "construction" properties be used from Seed constructors.
+
+ svn path=/trunk/; revision=461
+
+ libseed/seed-engine.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit c5de5d49e75b8b2ab252ac3be71dda8009e33c59
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Dec 14 16:38:20 2008 +0000
+
+ Fix build failure from big reorg last night.
+
+ svn path=/trunk/; revision=460
+
+ examples/Makefile.am | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit 817b3289baa609a4b84142d97cba8a59c149b2de
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 08:23:47 2008 +0000
+
+ Interface around rl_bind_key.
+
+ svn path=/trunk/; revision=459
+
+ examples/repl.js | 6 ++++--
+ libseed/seed-builtins.c | 19 +++++++++++++++++--
+ 2 files changed, 21 insertions(+), 4 deletions(-)
+
+commit dfab96a9481b526f0b5c70d4cdd70ceec0a03cdb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 08:23:45 2008 +0000
+
+ Add interface around rl_bind_key.
+
+ svn path=/trunk/; revision=458
+
+ libseed/seed-builtins.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 57 insertions(+), 0 deletions(-)
+
+commit cda177cf23d9151acc67ac2c026db83c5a11db2b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 07:56:47 2008 +0000
+
+ Add struct enumeration tests, including a recursive enumeration of
+ GdkEvent.
+
+ svn path=/trunk/; revision=457
+
+ tests/Makefile.am | 2 ++
+ tests/struct-enumerate.js | 12 ++++++++++++
+ tests/struct-union-enumerate.js | 21 +++++++++++++++++++++
+ 3 files changed, 35 insertions(+), 0 deletions(-)
+
+commit e9f9724a45614dba6d12cd9a7fa1f05f62a4ed29
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 07:56:45 2008 +0000
+
+ Implement property enumerators for structs.
+
+ svn path=/trunk/; revision=456
+
+ libseed/seed-structs.c | 51 +++++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 48 insertions(+), 3 deletions(-)
+
+commit 23034044c8a4ac7c6543379a2f2289578b7e76d1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 07:27:04 2008 +0000
+
+ Merge all canvas tests in to one file.
+
+ svn path=/trunk/; revision=455
+
+ modules/canvas/run-tests.js | 384 +++++++++++++++++++++++++++++++++++++++++++
+ modules/canvas/test1.js | 34 ----
+ modules/canvas/test10.js | 47 ------
+ modules/canvas/test11.js | 49 ------
+ modules/canvas/test12.js | 44 -----
+ modules/canvas/test13.js | 35 ----
+ modules/canvas/test14.js | 47 ------
+ modules/canvas/test15.js | 40 -----
+ modules/canvas/test16.js | 97 -----------
+ modules/canvas/test2.js | 32 ----
+ modules/canvas/test3.js | 33 ----
+ modules/canvas/test4.js | 38 -----
+ modules/canvas/test5.js | 43 -----
+ modules/canvas/test6.js | 47 ------
+ modules/canvas/test7.js | 37 ----
+ modules/canvas/test8.js | 37 ----
+ modules/canvas/test9.js | 94 -----------
+ 17 files changed, 384 insertions(+), 754 deletions(-)
+
+commit 99f321e2d407225fa6b7096663b5303aa532966f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 07:12:55 2008 +0000
+
+ Merge branch 'fix-examples'
+
+ svn path=/trunk/; revision=454
+
+ examples/broken/pango-fontset.js | 18 ++++
+ examples/broken/pango.js | 194 ++++++++++++++++++++++++++++++++++++++
+ examples/n-oscillator.js | 70 +++++++-------
+ examples/pango-fontset.js | 18 ----
+ examples/pango.js | 194 --------------------------------------
+ 5 files changed, 247 insertions(+), 247 deletions(-)
+
+commit f633b85bb18100242cb715a1605fe5bfadffd610
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 07:12:53 2008 +0000
+
+ Shader example cleanup.
+
+ svn path=/trunk/; revision=453
+
+ examples/clutter-shader/ShaderView.js | 68 ++++++++++++++++----------------
+ 1 files changed, 34 insertions(+), 34 deletions(-)
+
+commit a04c900f0f6aa88872d84f92fada2f4517bba9d4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:10 2008 +0000
+
+ Fix lightsoff to not use signal this..
+
+ svn path=/trunk/; revision=452
+
+ examples/lightsoff/arrow.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 4c283b656758cec21ad2e5c1fd074c1393488e9e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:09 2008 +0000
+
+ Update vte example.
+
+ svn path=/trunk/; revision=451
+
+ examples/pango-fontset.js | 1 -
+ examples/vte-test.js | 4 ++--
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 4802acec32067fae8305189e2b90e7ccbb4d3855
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:07 2008 +0000
+
+ Update oscillator example to not use signal this.
+
+ svn path=/trunk/; revision=450
+
+ examples/n-oscillator.js | 30 +++++++++++++++---------------
+ 1 files changed, 15 insertions(+), 15 deletions(-)
+
+commit f3b752a3fa99c27957d428da9238ab3437e14938
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:05 2008 +0000
+
+ Update clutter-shader example.
+
+ svn path=/trunk/; revision=449
+
+ examples/clutter-shader/ShaderView.js | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit f36563275f002c90c7ab1c55f53864fada5f1669
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:03 2008 +0000
+
+ Update calculator example to remove signal this usage.
+
+ svn path=/trunk/; revision=448
+
+ examples/calculator.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c52742b3049d8eef77a7efdffc16e6bb3d36c88d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:02 2008 +0000
+
+ Fix deprecation.
+
+ svn path=/trunk/; revision=447
+
+ examples/calculator.js | 2 +-
+ libseed/seed-signals.c | 1 -
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit f5fa94d4b5e3a3e59b2ed68c0c6603677ec4aeec
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:53:00 2008 +0000
+
+ Remove signal-this test.
+
+ svn path=/trunk/; revision=446
+
+ tests/Makefile.am | 1 -
+ tests/signal-this.js | 17 -----------------
+ 2 files changed, 0 insertions(+), 18 deletions(-)
+
+commit 7a2154fdb5dfc527f3ca24e04d772b2914b611e6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:52:58 2008 +0000
+
+ Add notice of deprecated signal this usage.
+
+ svn path=/trunk/; revision=445
+
+ libseed/seed-signals.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit db1796b2bb7f11dc7d80f631f3f929cf217c3e91
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:29:38 2008 +0000
+
+ Add test of exception in class init.
+
+ svn path=/trunk/; revision=444
+
+ tests/Makefile.am | 1 +
+ tests/gtype-class-init-exception.js | 22 ++++++++++++++++++++++
+ 2 files changed, 23 insertions(+), 0 deletions(-)
+
+commit ae2d1fd68aba289d196207f4470e067944a26821
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:29:36 2008 +0000
+
+ Fix class init closure exception propogation.
+
+ svn path=/trunk/; revision=443
+
+ libseed/seed-gtype.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7453703df497551f2a66e11c4d5b304e559ac30a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:29:33 2008 +0000
+
+ Add test of Seed.include syntax exception.
+
+ svn path=/trunk/; revision=442
+
+ tests/Makefile.am | 1 +
+ tests/include-syntax.js | 6 ++++++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit a150e2fb6d1fe8e7629b31470006dca56a2a4934
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Dec 14 06:29:31 2008 +0000
+
+ Pass exception in to JSEvaluateScript for Seed.include.
+
+ svn path=/trunk/; revision=441
+
+ libseed/seed-builtins.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 91e6550979f4618fcb78dfec1eb99e5791c413cd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 13 00:20:10 2008 +0000
+
+ Clean up some of the examples
+
+ svn path=/trunk/; revision=440
+
+ examples/accelgroup.js | 41 +++++++++--------
+ examples/actions.js | 116 +++++++++++++++++++++++++-----------------------
+ examples/repl.js | 17 ++++---
+ examples/vte-test.js | 41 +++++++++--------
+ 4 files changed, 115 insertions(+), 100 deletions(-)
+
+commit 307b4ba1d03f66415af5f8f083c3402b06c0f7ad
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 13 00:10:16 2008 +0000
+
+ Fix cairo example.
+
+ svn path=/trunk/; revision=439
+
+ examples/clutter-cairo.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e48f7913f61267aa37a3fdd2cb33eb859cc9d8ba
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 13 00:07:20 2008 +0000
+
+ Add clutter-cairo example.
+
+ svn path=/trunk/; revision=438
+
+ examples/Makefile.am | 2 ++
+ examples/clutter-cairo.js | 30 ++++++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 0 deletions(-)
+
+commit dcf955788dab838f33ef384840477a4dc0b17f33
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 13 00:06:51 2008 +0000
+
+ Canvas.destroy.
+
+ svn path=/trunk/; revision=437
+
+ modules/canvas/seed-canvas.c | 18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+commit b5d4dd6a3e3c802ad7e5fe8963bce41b588fd801
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 12 23:56:16 2008 +0000
+
+ Canvas.ImageCanvas
+
+ svn path=/trunk/; revision=436
+
+ modules/canvas/seed-canvas.c | 46 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 45 insertions(+), 1 deletions(-)
+
+commit 338c4bf7211b644dc32b6289e47c7fbfa23e5b67
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 12 19:11:28 2008 +0000
+
+ Fix small leak at import_namespace time.
+
+ svn path=/trunk/; revision=435
+
+ libseed/seed-engine.c | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 0658eea45ad15271a5deb98b352f441d2839de58
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Dec 12 05:02:52 2008 +0000
+
+ Sync browser with bzr.
+
+
+ svn path=/trunk/; revision=434
+
+ examples/browser/Makefile.am | 9 +-
+ examples/browser/browser-actions.js | 274 +++++++++++++++++++++++++++++----
+ examples/browser/browser-bookmarks.js | 56 +++++++
+ examples/browser/browser-find.js | 39 +++++
+ examples/browser/browser-main.js | 2 +-
+ examples/browser/browser-menu.js | 130 ++++++++++++++++
+ examples/browser/browser-tab.js | 43 +++++-
+ examples/browser/browser-toolbar.js | 24 ++--
+ examples/browser/main.js | 71 +++++++--
+ 9 files changed, 588 insertions(+), 60 deletions(-)
+
+commit 349e7211f6b755d9db446589768f488d9a38d15b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 12 01:26:47 2008 +0000
+
+ Fix reference counting bug.
+
+ svn path=/trunk/; revision=433
+
+ libseed/seed-engine.c | 29 +++++++++++++----------------
+ 1 files changed, 13 insertions(+), 16 deletions(-)
+
+commit 1e8b902c76441d465d46d85a2312dd1a53bfa811
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 11 18:50:24 2008 +0000
+
+ Hardy build fix.
+
+ svn path=/trunk/; revision=432
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit f999dcbe1193e79bce2bcf366a5a8dae2764b20a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Dec 11 00:54:42 2008 +0000
+
+ More deprecation.
+
+ svn path=/trunk/; revision=431
+
+ examples/pango-fontset.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5a318be777805721a3b7c4f0db11322efc65d27e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Dec 11 00:50:25 2008 +0000
+
+ Deprecated ._new stuff in clutter example.
+
+ svn path=/trunk/; revision=430
+
+ examples/clutter.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 424740ce04a6dcfee7ac71f503cdc636b4104a91
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Dec 11 00:49:32 2008 +0000
+
+ Cleanup accelgroup example.
+
+ svn path=/trunk/; revision=429
+
+ examples/accelgroup.js | 9 ++++++---
+ examples/notify-test.js | 2 +-
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 2743d92c49bccc96371ec1e59df14b87b61d2832
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Dec 11 00:02:34 2008 +0000
+
+ Fix browser install dir.
+
+ svn path=/trunk/; revision=428
+
+ examples/browser/Makefile.am | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit cc90d1abd44cb24ca3e1de0ed65a238f6edcd3c6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 10 01:14:31 2008 +0000
+
+ Some signal stuff temporary hack...
+
+ svn path=/trunk/; revision=427
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit f00e5ad2d652b2914fec09bb12e49dcea05f9b2d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 10 00:57:34 2008 +0000
+
+ Some small browser cleanup.
+
+ svn path=/trunk/; revision=426
+
+ examples/browser/main.js | 11 ++++-------
+ 1 files changed, 4 insertions(+), 7 deletions(-)
+
+commit b5b289cc2ead5b318e35b092fa41ba2cf5e51602
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 10 00:42:33 2008 +0000
+
+ Close pipes when Pipe object is collected.
+
+ svn path=/trunk/; revision=425
+
+ modules/Multiprocessing/multi.c | 14 ++++++++++++++
+ 1 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 670f169c62b5d8b46d3f2fa6ba528b40899805bd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Dec 10 00:37:27 2008 +0000
+
+ Multiprocessing: Bidirectional pipes.
+
+ svn path=/trunk/; revision=424
+
+ modules/Multiprocessing/Makefile.am | 2 +-
+ modules/Multiprocessing/bi.js | 21 +++++++++++++
+ modules/Multiprocessing/multi.c | 54 ++++++++++++++++++++++++-----------
+ 3 files changed, 59 insertions(+), 18 deletions(-)
+
+commit 1c42c7b2f2ff0ab261581c4fd6f3d1de73573697
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 9 23:44:08 2008 +0000
+
+ Browser. add code to initialize forker process.
+
+ svn path=/trunk/; revision=423
+
+ examples/browser/main.js | 19 +++++++++++++++++++
+ 1 files changed, 19 insertions(+), 0 deletions(-)
+
+commit a3d3774d4b83ccb672ed2e4d374b6d4fce753be3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 9 23:01:11 2008 +0000
+
+ Add multiprocessing module.
+
+ svn path=/trunk/; revision=422
+
+ configure.ac | 1 +
+ modules/Makefile.am | 2 +-
+ modules/Multiprocessing/Makefile.am | 19 ++++
+ modules/Multiprocessing/fork.js | 39 ++++++++
+ modules/Multiprocessing/multi.c | 164 +++++++++++++++++++++++++++++++++++
+ 5 files changed, 224 insertions(+), 1 deletions(-)
+
+commit 5bd2968d88150c3ff38e9a2d8e72ae7cb2098f75
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 21:19:23 2008 +0000
+
+ Add status bar to browser, other fixes.
+
+ svn path=/trunk/; revision=421
+
+ examples/browser/browser-tab.js | 10 +++++++---
+ examples/browser/browser-toolbar.js | 6 +++---
+ examples/browser/main.js | 10 +++++++++-
+ 3 files changed, 19 insertions(+), 7 deletions(-)
+
+commit 13c8f0735648b38a6fb747ddf1e9e71b6b6a7416
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 20:27:10 2008 +0000
+
+ Add new browser stuff to autotools...
+
+
+ svn path=/trunk/; revision=420
+
+ configure.ac | 1 +
+ examples/Makefile.am | 5 ++---
+ examples/browser/Makefile.am | 16 ++++++++++++++++
+ 3 files changed, 19 insertions(+), 3 deletions(-)
+
+commit c5a66b6a8a84698192ffc2fe5765653f60409ece
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 9 20:18:28 2008 +0000
+
+ API: Add seed_object_set_property_at_index.
+
+ svn path=/trunk/; revision=419
+
+ libseed/seed-api.c | 9 +++++++++
+ libseed/seed.h | 6 ++++++
+ 2 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 52f616f39b7966767dae933bb958fa5407de71fa
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 19:53:08 2008 +0000
+
+ Split browser into files.
+
+
+ svn path=/trunk/; revision=418
+
+ examples/browser/browser-actions.js | 87 ++++++++++++
+ examples/browser/browser-main.js | 24 ++++
+ examples/browser/browser-tab.js | 110 +++++++++++++++
+ examples/browser/browser-toolbar.js | 25 ++++
+ examples/browser/main.js | 255 +----------------------------------
+ 5 files changed, 250 insertions(+), 251 deletions(-)
+
+commit c389e9c3ae1ff7820b3ee352016f37cca8c803a9
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 19:45:08 2008 +0000
+
+ Ctrl-L focuses URL bar.
+
+
+ svn path=/trunk/; revision=417
+
+ examples/browser/main.js | 12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit eab8224de94bbf23bae5e5aaa1bac53453d93033
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 18:57:41 2008 +0000
+
+ Move mini browser to a directory, going to split it out and make it not
+ so mini, today. If anyone has name suggestions, now would be the time.
+
+ svn path=/trunk/; revision=416
+
+ examples/browser/main.js | 280 ++++++++++++++++++++++++++++++++++++++++++++++
+ examples/mini-browser.js | 280 ----------------------------------------------
+ 2 files changed, 280 insertions(+), 280 deletions(-)
+
+commit a5f98c731ffece05312d57a3af2b20f6c61e69ff
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 17:21:14 2008 +0000
+
+ Add Ctrl-T and Ctrl-W key combos, scrolled window, todo list.
+
+ svn path=/trunk/; revision=415
+
+ examples/mini-browser.js | 74 +++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 63 insertions(+), 11 deletions(-)
+
+commit b09204ce56e6e50cc5b746e8698939330f86c188
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 16:53:17 2008 +0000
+
+ Replace mini browser completely. Now uses GObject subclassing. Yay!
+
+
+ svn path=/trunk/; revision=414
+
+ examples/mini-browser.js | 320 +++++++++++++++++++++++++---------------------
+ 1 files changed, 176 insertions(+), 144 deletions(-)
+
+commit 85780b4e011d2ec8b28f0481a5a5933ab047a8b2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 14:04:11 2008 +0000
+
+ Update runtime docs, move closure-related JSClassDef. to closure.h,
+ instead of builtins (where it belonged before we got rid of
+ Seed.closure,etc.)
+
+
+ svn path=/trunk/; revision=413
+
+ doc/runtime.html | 47 +++++++++++++++++++++++++++++------------------
+ libseed/seed-builtins.c | 3 ---
+ libseed/seed-closure.h | 2 +-
+ 3 files changed, 30 insertions(+), 22 deletions(-)
+
+commit 9182e9fa0d83aeba1e9151209af578a7c3807cfa
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 02:00:28 2008 +0000
+
+ Add missing test to makefile.
+
+ svn path=/trunk/; revision=412
+
+ tests/Makefile.am | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c1046029a86d8b9ffb67336f924191e17cc57c46
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Dec 9 01:59:17 2008 +0000
+
+ Whoops forgot to commit turtle pen stuff...
+
+ svn path=/trunk/; revision=411
+
+ examples/turtle/turtle.c | 50 ++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 48 insertions(+), 2 deletions(-)
+
+commit 3dc20360c83c818442e286db43c6a86522c00ec5
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Dec 9 00:16:25 2008 +0000
+
+ Enable web inspector in minibrowser.
+
+ svn path=/trunk/; revision=410
+
+ examples/mini-browser.js | 29 +++++++++++++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
+
+commit 825e287d9bc7c6f6f7f4fea8d367e138496c18a2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 8 22:41:09 2008 +0000
+
+ Remove some dead code in examples.
+
+ svn path=/trunk/; revision=409
+
+ examples/ide/ide-toolbar.js | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit c2f7b47e36c813eea9816e6867c536efe6ebf524
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 8 20:30:43 2008 +0000
+
+ Make second signal installation test enforce Gtk.Window.type as the return type rather than GObject.TYPE_OBJECT.
+
+ svn path=/trunk/; revision=408
+
+ tests/gtype-signal2.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f369ee1901e53fad6d6e94e81f379ff2cfff6ed8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 8 04:28:09 2008 +0000
+
+ seed-canvas: Support miterLimit.
+
+ svn path=/trunk/; revision=407
+
+ modules/canvas/seed-canvas.c | 16 ++++++++++++++++
+ 1 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 302dc8ef02d34224f3aebd10a3b22791bf9d970d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Dec 8 04:18:56 2008 +0000
+
+ Add SVGCanvas. Clean up some of the context construction code.
+
+ svn path=/trunk/; revision=406
+
+ modules/canvas/seed-canvas.c | 170 ++++++++++++++++++++++++++++++++++++++----
+ 1 files changed, 155 insertions(+), 15 deletions(-)
+
+commit 55a3c8610ce1a59641b57d90747892ef0909ecac
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Dec 6 06:23:54 2008 +0000
+
+ Formatting fixes for seed.h, turtle updates.
+
+ svn path=/trunk/; revision=405
+
+ examples/turtle/turtle.c | 210 +++++++++++++++++++++++++++++++++++++++-------
+ libseed/seed.h | 9 +-
+ 2 files changed, 184 insertions(+), 35 deletions(-)
+
+commit f436976ad06ba80025ea7f04557c4da17fc3a556
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 04:13:56 2008 +0000
+
+ Another test.
+
+ svn path=/trunk/; revision=404
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/test16.js | 97 ++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 98 insertions(+), 1 deletions(-)
+
+commit 7858307f36b68cb151df1fc69e3c2115ab8ec195
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 04:03:04 2008 +0000
+
+ Seed-canvas: Line join..test.
+
+ svn path=/trunk/; revision=403
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 25 ++++++++++++++++++++++++-
+ modules/canvas/test15.js | 40 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 65 insertions(+), 2 deletions(-)
+
+commit b7229c94bec0d9e6ceda1ba78b7d9f61df2dcf53
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 03:52:59 2008 +0000
+
+ Seed-canvas: Refactor lineCap to actually work to spec.
+
+ svn path=/trunk/; revision=402
+
+ modules/canvas/seed-canvas.c | 65 ++++++++++++++++++++++++++++-------------
+ 1 files changed, 44 insertions(+), 21 deletions(-)
+
+commit 0dc4185a37c9eb1d962be065a98282ecbdef16f9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 03:36:51 2008 +0000
+
+ Seed-canvas: Line caps.
+
+ svn path=/trunk/; revision=401
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 20 +++++++++++++++++
+ modules/canvas/test14.js | 47 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 68 insertions(+), 1 deletions(-)
+
+commit 3fb45abc00f2edc7fbbbb63f6f6c96cc9140a14b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 03:27:01 2008 +0000
+
+ Seed-canvas module. Add lineWidth and a test. refactor some code out in to seed_canvas_stroke_setup.
+
+ svn path=/trunk/; revision=400
+
+ modules/canvas/Makefile.am | 4 +-
+ modules/canvas/seed-canvas.c | 157 ++++++++++++++++++++++--------------------
+ modules/canvas/test13.js | 35 +++++++++
+ 3 files changed, 118 insertions(+), 78 deletions(-)
+
+commit 0efbb6a0207ffd88bea2798f082089c3c1be49e9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 03:16:05 2008 +0000
+
+ Another Canvas test.
+
+ svn path=/trunk/; revision=399
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/test12.js | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 1 deletions(-)
+
+commit 55a6efb57227a98767bc2b24ecaaced044af4483
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 03:14:55 2008 +0000
+
+ Some more color tests/bugfixing. Support globalAlpha.
+
+ svn path=/trunk/; revision=398
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 67 +++++++++++++++++++++++++++++++++--------
+ modules/canvas/test10.js | 14 ++++++++-
+ modules/canvas/test11.js | 49 ++++++++++++++++++++++++++++++
+ 4 files changed, 117 insertions(+), 15 deletions(-)
+
+commit 5e0bdb4084f4cae7a3b76c993f5dcc74a47ee82f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 02:51:20 2008 +0000
+
+ Add color parsing test.
+
+ svn path=/trunk/; revision=397
+
+ modules/canvas/test10.js | 35 +++++++++++++++++++++++++++++++++++
+ 1 files changed, 35 insertions(+), 0 deletions(-)
+
+commit e78e2c82fb71f43ff0f72646a6563e065272b705
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 02:49:10 2008 +0000
+
+ Fun pacman example. and Canvas.rect()
+
+ svn path=/trunk/; revision=396
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 19 ++++++++
+ modules/canvas/test9.js | 94 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 114 insertions(+), 1 deletions(-)
+
+commit b5c7f6b9a2be6fff5ae1232bb228222334d854ee
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 02:37:22 2008 +0000
+
+ Add Canvas.bezierCurveTo
+
+ svn path=/trunk/; revision=395
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 23 +++++++++++++++++++++++
+ modules/canvas/test8.js | 37 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 61 insertions(+), 1 deletions(-)
+
+commit 753b182b4a2bad3533d8187700e83b644e9bffd3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 02:32:38 2008 +0000
+
+ Implement Canvas.quadraticCurveTo.
+
+ svn path=/trunk/; revision=394
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/seed-canvas.c | 33 +++++++++++++++++++++++++++++++++
+ modules/canvas/test7.js | 37 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 71 insertions(+), 1 deletions(-)
+
+commit e98eaed636d7feedd7850528cc40c33e269e5fa2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Dec 6 01:50:30 2008 +0000
+
+ Hey wow a realish canvas implementation. and 6 tests.
+
+ svn path=/trunk/; revision=393
+
+ modules/canvas/Makefile.am | 2 +-
+ modules/canvas/example.js | 18 ---
+ modules/canvas/seed-canvas.c | 256 +++++++++++++++++++++++++++++++++++++++---
+ modules/canvas/test1.js | 34 ++++++
+ modules/canvas/test2.js | 32 +++++
+ modules/canvas/test3.js | 33 ++++++
+ modules/canvas/test4.js | 38 ++++++
+ modules/canvas/test5.js | 43 +++++++
+ modules/canvas/test6.js | 47 ++++++++
+ 9 files changed, 470 insertions(+), 33 deletions(-)
+
+commit 6e4e41cbdb570a9518c2f976790c56e28e15b0a5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Dec 5 20:27:00 2008 +0000
+
+ Add turtle example. Just started.
+
+ svn path=/trunk/; revision=392
+
+ examples/turtle/turtle.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 98 insertions(+), 0 deletions(-)
+
+commit 8714741d403ceffd79b6f10332da6a6cf27fc3c0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 5 08:09:39 2008 +0000
+
+ Beginnings of a toy canvas implementation.
+
+ svn path=/trunk/; revision=391
+
+ configure.ac | 1 +
+ libseed/seed-api.c | 10 ++
+ libseed/seed.h | 6 +-
+ modules/Makefile.am | 2 +-
+ modules/canvas/Makefile.am | 20 ++++
+ modules/canvas/example.js | 18 +++
+ modules/canvas/seed-canvas.c | 254 ++++++++++++++++++++++++++++++++++++++++++
+ modules/sqlite/seed-sqlite.c | 4 +-
+ 8 files changed, 311 insertions(+), 4 deletions(-)
+
+commit a780fefc73364a55ff7cff5fd6bf320f9b0d7131
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Dec 5 05:12:29 2008 +0000
+
+ Make sqlite example executable.
+
+ svn path=/trunk/; revision=390
+
+ 0 files changed, 0 insertions(+), 0 deletions(-)
+
+commit 7d895f32120e93442a3267ea10b4e69ff9da954a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 5 05:10:50 2008 +0000
+
+ I'm very sick so I don't remember all the API changes I just made. But they are all very nice and work. Also we have sqlite bindings now.
+
+ svn path=/trunk/; revision=389
+
+ libseed/seed-api.c | 16 ++++++++
+ libseed/seed-engine.c | 1 +
+ libseed/seed-private.h | 2 +
+ libseed/seed.h | 11 +++++-
+ modules/sqlite/Makefile.am | 2 +
+ modules/sqlite/example.js | 10 +++++
+ modules/sqlite/seed-sqlite.c | 83 +++++++++++++++++++++++++++++++++++++++++-
+ 7 files changed, 123 insertions(+), 2 deletions(-)
+
+commit 27001fe91d9d7e89d28e2decdd40e7d7d20f810b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 5 03:32:41 2008 +0000
+
+ Add seed_object_call to API. some more fleshing out of sqlite bindings...
+
+ svn path=/trunk/; revision=388
+
+ libseed/seed-api.c | 12 ++++++++++++
+ libseed/seed.h | 14 ++++++++++----
+ modules/sqlite/seed-sqlite.c | 18 ++++++++++++++++++
+ 3 files changed, 40 insertions(+), 4 deletions(-)
+
+commit af7d596f4953f0a6cc8361ed95767eccd25eab1f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Dec 5 03:15:37 2008 +0000
+
+ Lots more API...flesh out sqlite bindings. a little.
+
+ svn path=/trunk/; revision=387
+
+ libseed/seed-api.c | 27 ++++++++++++++++
+ libseed/seed.h | 38 ++++++++++++++++++++++-
+ modules/sqlite/seed-sqlite.c | 68 ++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 125 insertions(+), 8 deletions(-)
+
+commit 78571b0aa9ee64ee5dff250b56fc8e9882b48938
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Dec 4 21:04:50 2008 +0000
+
+ More API. New enums: SeedType, SeedPropertyAttributes, SeedClassAttributes. New callbacks, SeedObjectInitializeCallback, SeedObjectFinalizeCallback, SeedObjectHasPropertyCallback, SeedObjectGetPropertyCallback, SeedObjectSetPropertyCallback, SeedObjectDeletePropertyCallback, SeedObjectGetPropertyNamesCallback, SeedObjectCallAsFunctionCallback, SeedObjectCallAsConstructorCallback, SeedObjectHasInstanceCallback, SeedObjectConvertToTypeCallback. Add seed_static_value, and seed_static_function. Add seed_class_definition.
+
+ svn path=/trunk/; revision=386
+
+ libseed/seed.h | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 files changed, 102 insertions(+), 5 deletions(-)
+
+commit 1564febc5a87f7bca507868f9cf8ed324d32303b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Dec 4 20:42:34 2008 +0000
+
+ API changes, add: seed_string_ref, seed_string_unref, seed_string_get_maximum_size, seed_string_to_utf8_buffer, seed_string_is_equal, seed_string_is_equal utf8.
+
+ svn path=/trunk/; revision=385
+
+ libseed/seed-api.c | 32 ++++++++++++++++++++++++++++++++
+ libseed/seed.h | 25 +++++++++++++++++++++++++
+ 2 files changed, 57 insertions(+), 0 deletions(-)
+
+commit 938e573953bb1b2c9c4144a55f71dc3db2ba83da
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 04:26:45 2008 +0000
+
+ Print doubles, not floats.
+
+ svn path=/trunk/; revision=384
+
+ libseed/seed-types.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit be316ebba6ea9d26a63cdd7495eb13844ac9d74f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:18:37 2008 +0000
+
+ Update builtin test.
+
+ svn path=/trunk/; revision=383
+
+ tests/builtin-argument-length.js | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 3546b2f95bca563cd60873d1e2fe56e3adf13b36
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:17:41 2008 +0000
+
+ Fix Seed.quit. Allow arbitrary exit codes...
+
+ svn path=/trunk/; revision=382
+
+ libseed/seed-builtins.c | 15 ++++++++++-----
+ 1 files changed, 10 insertions(+), 5 deletions(-)
+
+commit acf0285d8daa6d8f3501e71be5693fe45039ee47
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:10:34 2008 +0000
+
+ Add test on builtin argument-length exceptions.
+
+ svn path=/trunk/; revision=381
+
+ tests/builtin-argument-length.js | 55 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 55 insertions(+), 0 deletions(-)
+
+commit 79b9760ddbe040830b5bb0aa329d75ca5ebd4feb
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:08:09 2008 +0000
+
+ Remove Seed.prototype, Seed.closure, Seed.closure_native. All have since
+ been superceded by more javascript-y methods. Look at tests and
+ examples.
+
+ svn path=/trunk/; revision=380
+
+ libseed/seed-builtins.c | 99 -----------------------------------------------
+ 1 files changed, 0 insertions(+), 99 deletions(-)
+
+commit a3ea09892e64f24252a6053ba7d9de49d62f8722
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:05:29 2008 +0000
+
+ Fix formatting of builtin exceptions.
+
+ svn path=/trunk/; revision=379
+
+ libseed/seed-builtins.c | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 2a122a14bf9973f6b8056b0cb73eba1f3520f852
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 03:00:11 2008 +0000
+
+ Fix name of Seed.introspect in the argument error message...
+
+
+ svn path=/trunk/; revision=378
+
+ libseed/seed-builtins.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit ca96d4c6f59e5bc9a73c761e8e062dccfbbe6932
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Dec 1 02:45:26 2008 +0000
+
+ Remove timeout private struct (don't need it anymore because we removed
+ Seed.setTimeout)...
+
+
+ svn path=/trunk/; revision=377
+
+ libseed/seed-builtins.c | 5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+commit b8a6b47a533bb3b8fe68fcbaa3656237d493332e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 22:47:23 2008 +0000
+
+ Fix permissions.
+
+ svn path=/trunk/; revision=376
+
+ 0 files changed, 0 insertions(+), 0 deletions(-)
+
+commit ed5bbd64d6d1cf34621262774cfd942c6dcd6489
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 30 22:39:20 2008 +0000
+
+ Offline changes from train ride.
+ Add closure finalization test.
+ Add Gst video example.
+ Fix memory leak of GIBaseInfo in closures.
+ Fix leak of property name array in object/struct constructors when exceptions
+ are thrown.
+ Add SEED_DEBUG_CONSTRUCTION and struct constructor logging.
+ Add SEED_DEBUG_GTYPE
+ Add SEED_NOTE for property installation
+ Add SEED_NOTE for class init closure.
+ Fix extra newline in struct finalization.
+ Add SEED_NOTE for instance init closure
+ Add SEED_NOTE for type registration.
+ Make union/struct/boxed ref their infos. Will make leaks until reviewed a bit
+ more.
+ Import GIRepository namespace automatically.
+ Set .info property on functions to be their GIBaseInfo. (Note, any use of
+ GIBaseInfos will have to be manually memory managed for now...).
+ Add test for .info and GIRepository GIR.
+ Add support for GI_TYPE_TAG_GTYPE in argument_make_js and make_argument.
+ Add test for GIObjectInfo, prints out interfaces of object.
+ Define constructor.prototype on constructors, i.e. Gtk.Window.prototype.
+ Update tests to use .prototype.
+ Update Gio.js and Gtk.js to use .prototype.
+ Update introspect.js to use .prototype
+ Add a test which verifies .prototype is the prototype of an instantiated
+ object.
+ Update n-oscillator to track GI changes.
+
+ svn path=/trunk/; revision=375
+
+ examples/Makefile.am | 4 +++-
+ examples/introspect.js | 4 ++--
+ examples/n-oscillator.js | 6 +++---
+ examples/video.js | 24 ++++++++++++++++++++++++
+ extensions/Gio.js | 2 +-
+ extensions/Gtk.js | 6 +++---
+ libseed/seed-closure.c | 5 +++++
+ libseed/seed-debug.h | 8 +++++---
+ libseed/seed-engine.c | 31 ++++++++++++++++++++++++-------
+ libseed/seed-gtype.c | 18 ++++++++++++++++--
+ libseed/seed-structs.c | 16 ++++++++++------
+ libseed/seed-types.c | 5 +++++
+ tests/Makefile.am | 6 +++++-
+ tests/closure-finalization.js | 23 +++++++++++++++++++++++
+ tests/constructor-prototype.js | 12 ++++++++++++
+ tests/function-info.js | 10 ++++++++++
+ tests/object-info.js | 19 +++++++++++++++++++
+ 17 files changed, 170 insertions(+), 29 deletions(-)
+
+commit 0a54dbf853069982d192a46c1891c061db7adda2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 05:24:06 2008 +0000
+
+ Forgot one file in last commit.
+
+ svn path=/trunk/; revision=374
+
+ examples/glib/Makefile.am | 14 ++++++++++++++
+ 1 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 18b1c524f8d356d2db62656f55b76c07c2c693c2
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 05:23:25 2008 +0000
+
+ Seed.introspect test; update automake files to include robb's new glib
+ examples, my tests, etc.
+
+
+ svn path=/trunk/; revision=373
+
+ configure.ac | 1 +
+ examples/Makefile.am | 3 ++-
+ tests/Makefile.am | 4 ++++
+ tests/introspect.js | 10 ++++++++++
+ 4 files changed, 17 insertions(+), 1 deletions(-)
+
+commit 572877b94dae5defa323eccd110b9cdb4019b050
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 05:09:09 2008 +0000
+
+ Tests now check return value! Added more builtin tests... removed
+ setTimeout completely. Look in examples/glib for a example of how to do
+ timeouts with GLib yourself...
+
+
+ svn path=/trunk/; revision=372
+
+ libseed/seed-builtins.c | 46 ----------------------------------------------
+ tests/check-syntax.js | 12 ++++++++++++
+ tests/fork.js | 16 ++++++++++++++++
+ tests/quit.js | 7 +++++++
+ tests/run-tests.py | 27 ++++++++++++++++++---------
+ tests/syntax-test.js | 13 +------------
+ 6 files changed, 54 insertions(+), 67 deletions(-)
+
+commit 228a0d0483a0359c09d6ddaf8498da67f8c6d861
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 02:40:05 2008 +0000
+
+ Add profile-gui make target which runs lcov and opens your browser when
+ you're done...
+
+
+ svn path=/trunk/; revision=371
+
+ Makefile.am | 4 ++++
+ configure.ac | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit d525c665cf9d9258e8ec3ff251e54e7ce352bad4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 02:35:06 2008 +0000
+
+ Somewhat more useful output from configure.
+
+ svn path=/trunk/; revision=370
+
+ configure.ac | 10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+commit afbf1d2991b53b6266a24f006c3a874ad434d706
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 01:49:35 2008 +0000
+
+ Missed one fix to module building...
+
+ svn path=/trunk/; revision=369
+
+ modules/example/Makefile.am | 3 ++-
+ modules/sqlite/Makefile.am | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 5257a53126a1980995708fac60fd5b8085dc0dcc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 30 01:45:53 2008 +0000
+
+ Trying to fix module building...
+
+ svn path=/trunk/; revision=368
+
+ modules/example/Makefile.am | 4 +++-
+ modules/sqlite/Makefile.am | 4 +++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit e37baa7b8db6055f3d2897a4547e6eceb29213d4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 30 01:22:05 2008 +0000
+
+ Add some glib examples.
+
+ svn path=/trunk/; revision=367
+
+ examples/glib/env.js | 7 +++++++
+ examples/glib/thread.js | 27 +++++++++++++++++++++++++++
+ examples/glib/timeout.js | 19 +++++++++++++++++++
+ examples/glib/timer.js | 12 ++++++++++++
+ 4 files changed, 65 insertions(+), 0 deletions(-)
+
+commit d55603ed3f19fcc5141e8e7649039c803492ce2b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 29 05:54:02 2008 +0000
+
+ Update mini browser to take advantage of WebKit upstream adding support
+ for new 'windows'... (we open them in new tabs) YAY!
+
+ svn path=/trunk/; revision=366
+
+ examples/mini-browser.js | 39 +++++++++++++++++++++++++--------------
+ tests/Makefile.am | 1 +
+ 2 files changed, 26 insertions(+), 14 deletions(-)
+
+commit 47578065822ad809290068768bacc50f6a84cbe0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 29 01:09:57 2008 +0000
+
+ Less gcov output.
+
+ svn path=/trunk/; revision=365
+
+ Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 01f60beb009489262ccc25d25826f57c992e6cff
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 29 01:02:24 2008 +0000
+
+ More coverage data; when profiling, don't optimize!
+
+ svn path=/trunk/; revision=364
+
+ Makefile.am | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 79e43372e405da07e7cb8cb1bc90267dc4f327c4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 29 00:34:13 2008 +0000
+
+ Add coverage support with --enable-profile, cleaned up debug so it's
+ just --enable-debug, etc.
+
+
+ svn path=/trunk/; revision=363
+
+ Makefile.am | 10 +++++++-
+ configure.ac | 50 ++++++++++++++++++++++++++------------------
+ libseed/Makefile.am | 4 +-
+ src/Makefile.am | 5 ++-
+ tests/struct-functions.js | 10 +++++++++
+ 5 files changed, 52 insertions(+), 27 deletions(-)
+
+commit 4f45938c409910867eea993a7b2dd907799bea96
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 29 00:28:21 2008 +0000
+
+ Add Tim to Maintainers.
+
+ svn path=/trunk/; revision=362
+
+ MAINTAINERS | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 1d00692877b84fc53f264a4fe6a452d7867a9bc0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 28 05:17:26 2008 +0000
+
+ Non floating objects from fake constructors (Clutter.EffectTemplate._new) were getting an extra reference.
+
+ svn path=/trunk/; revision=361
+
+ libseed/seed-engine.c | 10 ++++++++--
+ 1 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 8ff8592c6d309df6feb519003cf33b43b8a1442c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 28 05:06:49 2008 +0000
+
+ Finalize handler for gobject methods...more of a formality than anything as methods are tied to prototypes and there is no scope on imports right now...
+
+ svn path=/trunk/; revision=360
+
+ libseed/seed-engine.c | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 7ff443ffda9dbb2a29198ba6f1ace2dccd65bfb8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 28 05:01:55 2008 +0000
+
+ Small string leak.
+
+ svn path=/trunk/; revision=359
+
+ libseed/seed-engine.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 5b121a67c1d73f23451df5153473ed86e4a17da0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 28 04:34:12 2008 +0000
+
+ Put "not methods" on constructor instead of putting just constructor methods or all methods. Gives us methods like GConf.Client.get_default
+
+ svn path=/trunk/; revision=358
+
+ libseed/seed-engine.c | 14 +++++++-------
+ 1 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 9d54f6590c1807021c08780e7490ef6284789186
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 28 04:28:19 2008 +0000
+
+ Track GI changes.
+
+ svn path=/trunk/; revision=357
+
+ examples/gconf.js | 2 +-
+ examples/ide/ide-sourceview.js | 6 +++---
+ examples/lightsoff/main.js | 2 +-
+ examples/pango.js | 2 +-
+ libseed/seed-engine.c | 14 +++++++-------
+ libseed/seed-structs.c | 2 +-
+ 6 files changed, 14 insertions(+), 14 deletions(-)
+
+commit ec762fa27a94a9bae63770ffb42df1aa5039eb7c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 27 04:04:45 2008 +0000
+
+ Update seed_value_is_gobject...everything is pretty much global context free now.
+
+ svn path=/trunk/; revision=356
+
+ libseed/seed-types.c | 13 +++++++------
+ 1 files changed, 7 insertions(+), 6 deletions(-)
+
+commit 8b170840ee7d4840763d50139fc631606c57684f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 27 04:03:43 2008 +0000
+
+ All the type conversion uses a local context now...
+
+ svn path=/trunk/; revision=355
+
+ libseed/seed-builtins.c | 8 +-
+ libseed/seed-engine.c | 27 ++--
+ libseed/seed-exceptions.c | 2 +-
+ libseed/seed-gtype.c | 25 ++--
+ libseed/seed-types.c | 375 +++++++++++++++++++++++++-----------------
+ libseed/seed-types.h | 123 ++++++++++----
+ libseed/seed.h | 127 ++++++++++----
+ modules/sqlite/seed-sqlite.c | 2 +-
+ 8 files changed, 432 insertions(+), 257 deletions(-)
+
+commit 6068de46780082ea223d6046b051fc1793ed456b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 27 03:40:30 2008 +0000
+
+ Module build shouldn't use installed seed header for now...
+
+ svn path=/trunk/; revision=354
+
+ modules/sqlite/seed-sqlite.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d49d97e2bdf972dfa9d1466d2d7119786b63551a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 26 00:59:00 2008 +0000
+
+ More global context rework. Add context group. Custom context for signals.
+
+ svn path=/trunk/; revision=353
+
+ libseed/seed-api.c | 4 +-
+ libseed/seed-builtins.c | 68 ++++++++++++++----------
+ libseed/seed-closure.c | 19 ++++---
+ libseed/seed-closure.h | 1 -
+ libseed/seed-engine.c | 122 ++++++++++++++++++++++++-------------------
+ libseed/seed-engine.h | 10 +++-
+ libseed/seed-exceptions.c | 18 +++---
+ libseed/seed-gtype.c | 74 +++++++++++++++-----------
+ libseed/seed-gtype.h | 2 +-
+ libseed/seed-signals.c | 33 +++++++-----
+ libseed/seed-structs.c | 32 +++++++----
+ libseed/seed-types.c | 128 ++++++++++++++++++++++++---------------------
+ libseed/seed-types.h | 26 ++++++---
+ libseed/seed.h | 9 ++-
+ 14 files changed, 316 insertions(+), 230 deletions(-)
+
+commit aa9c0332cd083131ff487cb319cf907cb9ab6563
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 07:05:09 2008 +0000
+
+ seed-structs is global context free!
+
+ svn path=/trunk/; revision=352
+
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-structs.c | 17 +++++++++--------
+ libseed/seed-structs.h | 3 ++-
+ libseed/seed-types.c | 5 ++++-
+ 4 files changed, 16 insertions(+), 11 deletions(-)
+
+commit 9ea8c34ccda73b8bae9a73c7f935a6df6cf2eee6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 07:02:41 2008 +0000
+
+ Lots more global context cleanup in seed-structs.c
+
+ svn path=/trunk/; revision=351
+
+ libseed/seed-builtins.c | 2 +-
+ libseed/seed-engine.c | 5 ++-
+ libseed/seed-gtype.c | 8 +++---
+ libseed/seed-structs.c | 52 ++++++++++++++++++++++++++++-------------------
+ libseed/seed-structs.h | 20 +++++++++++------
+ libseed/seed-types.c | 28 ++++++++++++++++---------
+ 6 files changed, 70 insertions(+), 45 deletions(-)
+
+commit 97aaa6b8b5e5bd2098bf50f4812a9a46e51708a4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:52:01 2008 +0000
+
+ seed-closure.c is entirely free of global context now.
+
+ svn path=/trunk/; revision=350
+
+ libseed/seed-builtins.c | 6 +++---
+ libseed/seed-closure.c | 20 ++++++++++++--------
+ libseed/seed-closure.h | 7 +++++--
+ libseed/seed-types.c | 6 ++++--
+ 4 files changed, 24 insertions(+), 15 deletions(-)
+
+commit 796fa55b9dd5d97c52fec18d82e81c895178d373
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:46:59 2008 +0000
+
+ Remove use of context in finalize handler as API says it may sometimes break.
+
+ svn path=/trunk/; revision=349
+
+ libseed/seed-closure.c | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 22db57848e0ea3701a454d24b8cc27e527f5cd24
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:45:10 2008 +0000
+
+ No global context usage in seed-api.c
+
+ svn path=/trunk/; revision=348
+
+ libseed/seed-api.c | 14 ++++++++++----
+ libseed/seed.h | 9 ++++++---
+ modules/sqlite/seed-sqlite.c | 2 +-
+ src/main.c | 8 ++++----
+ 4 files changed, 21 insertions(+), 12 deletions(-)
+
+commit 0b6fadfa03e11b083715b2f9be589135b3feb658
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:40:15 2008 +0000
+
+ Exception code is global context free. seed_init returns the default Engine now.
+
+ svn path=/trunk/; revision=347
+
+ libseed/seed-engine.c | 4 +-
+ libseed/seed-exceptions.c | 26 +++++++++---------
+ libseed/seed-exceptions.h | 10 +++---
+ libseed/seed-gtype.c | 60 +++------------------------------------------
+ libseed/seed-signals.c | 5 ++-
+ libseed/seed.h | 12 ++++----
+ src/main.c | 20 ++++++++------
+ 7 files changed, 44 insertions(+), 93 deletions(-)
+
+commit dab2c8e13132811a0047709ca8b8c4bed1c2677f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:32:55 2008 +0000
+
+ Remove global context from anything related to exception<->gerror
+
+ svn path=/trunk/; revision=346
+
+ libseed/seed-engine.c | 4 ++--
+ libseed/seed-exceptions.c | 6 ++++--
+ libseed/seed-exceptions.h | 3 ++-
+ 3 files changed, 8 insertions(+), 5 deletions(-)
+
+commit 44e05fc61ba1d96b1ecd456017935a4c1c969e4d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 06:30:23 2008 +0000
+
+ More global context get-rid-of-ness.
+
+ svn path=/trunk/; revision=345
+
+ libseed/seed-builtins.c | 20 ++++++++++----------
+ libseed/seed-engine.c | 16 ++++++++--------
+ libseed/seed-exceptions.c | 17 +++++++++++------
+ libseed/seed-exceptions.h | 2 +-
+ libseed/seed-gtype.c | 16 ++++++++--------
+ libseed/seed-signals.c | 6 +++---
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-types.c | 28 ++++++++++++++--------------
+ libseed/seed.h | 3 ++-
+ 9 files changed, 58 insertions(+), 52 deletions(-)
+
+commit 3a2cfa3e9e249bd8063f2dad0138cb57bc819295
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 25 02:10:14 2008 +0000
+
+ Fix libseed makefile.
+
+ svn path=/trunk/; revision=344
+
+ libseed/Makefile.am | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 94f72482f580932b2188d5f4059285f4e09c389b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 25 02:07:59 2008 +0000
+
+ Remove cairo from installation.
+
+ svn path=/trunk/; revision=343
+
+ examples/Makefile.am | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 896481d246ef4a0944c1e94bcd252c1a294f308d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 25 01:54:11 2008 +0000
+
+ Remove global context from builtins.
+
+ svn path=/trunk/; revision=342
+
+ libseed/seed-builtins.c | 59 +++++++++++++++++++++++++---------------------
+ libseed/seed-builtins.h | 32 +------------------------
+ libseed/seed-engine.c | 2 +-
+ 3 files changed, 34 insertions(+), 59 deletions(-)
+
+commit 63fd7f36c9669baf6e869bbaf3d5f9c133c07beb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 01:44:37 2008 +0000
+
+ More eng->context go bye-bye.
+
+ svn path=/trunk/; revision=341
+
+ libseed/seed-closure.h | 1 +
+ libseed/seed-signals.c | 27 ++++++++++++++-------------
+ 2 files changed, 15 insertions(+), 13 deletions(-)
+
+commit eb72a33f315bcb2798bc189f4042395d70667e1c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 01:34:50 2008 +0000
+
+ Get rid of some more global context usage. Down to 145...
+
+ svn path=/trunk/; revision=340
+
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-signals.c | 22 +++++++++++++---------
+ libseed/seed-signals.h | 3 ++-
+ 3 files changed, 16 insertions(+), 11 deletions(-)
+
+commit 19d64df739010644bf0d3e29f74d19c188085f31
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 01:30:49 2008 +0000
+
+ Move the new connect by name method to object.signal.connect to get rid of possible collision (i.e. Gtk.AccelGroup.connect)
+
+ svn path=/trunk/; revision=339
+
+ libseed/seed-signals.c | 12 ++++++------
+ tests/signal-connect.js | 2 +-
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 4b34ccc908e0b52b6d611ff012479c21a01b3607
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 25 01:27:03 2008 +0000
+
+ Remove debug stuff from LO.
+
+ svn path=/trunk/; revision=338
+
+ examples/lightsoff/score.js | 10 ----------
+ 1 files changed, 0 insertions(+), 10 deletions(-)
+
+commit cb33a99dbaeb6cacfc32084e1b1aa59b5011e200
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 01:20:30 2008 +0000
+
+ Fix autoconf
+
+ svn path=/trunk/; revision=337
+
+ configure.ac | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit a74aade29170b02c965134bad0fb63b27a283f80
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 01:18:16 2008 +0000
+
+ Remove illfated cairo bindings.
+
+ svn path=/trunk/; revision=336
+
+ Makefile.am | 1 -
+ examples/Makefile.am | 1 -
+ examples/cairo.js | 40 ----------------------------------------
+ gir/Makefile.am | 28 ----------------------------
+ 4 files changed, 0 insertions(+), 70 deletions(-)
+
+commit b0d33c814b838c8838e331e6100f9d09ee7e5ba5
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 00:56:38 2008 +0000
+
+ Some API cleanup.
+
+ svn path=/trunk/; revision=335
+
+ libseed/seed-api.c | 36 ++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.c | 35 -----------------------------------
+ libseed/seed.h | 12 +++++++++---
+ 3 files changed, 45 insertions(+), 38 deletions(-)
+
+commit 728cf465a88b0d698ffaa4211b3d5a6c4007877a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 00:49:47 2008 +0000
+
+ Add seed-api.c to have functions that don't map to internal functions. Make sqlite bindings wrap around all the error codes.
+
+ svn path=/trunk/; revision=334
+
+ libseed/Makefile.am | 1 +
+ libseed/seed-api.c | 6 ++++++
+ libseed/seed.h | 12 ++++++++++++
+ modules/sqlite/seed-sqlite.c | 37 ++++++++++++++++++++++++++++++++++++-
+ 4 files changed, 55 insertions(+), 1 deletions(-)
+
+commit 5386571f89d00e69bfc7c9cfc35f8d9c8842fc57
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 25 00:29:24 2008 +0000
+
+ Add skeleton SQLite C extension module...will serve as a test to flesh out the embedding API.
+
+ svn path=/trunk/; revision=333
+
+ configure.ac | 1 +
+ libseed/seed.h | 4 ++++
+ modules/Makefile.am | 2 +-
+ modules/example/example.c | 2 --
+ modules/sqlite/Makefile.am | 14 ++++++++++++++
+ modules/sqlite/seed-sqlite.c | 7 +++++++
+ 6 files changed, 27 insertions(+), 3 deletions(-)
+
+commit 36c49d948765667ae7a49be06ff937d6f599c064
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 14:20:30 2008 +0000
+
+ Fix small GIBaseInfo leak.
+
+ svn path=/trunk/; revision=332
+
+ libseed/seed-structs.c | 2 ++
+ libseed/seed-types.c | 1 -
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 5c3fa3ecd5ff0b16c9a08cd40f3ad779d93eacf0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 07:24:30 2008 +0000
+
+ Add some JSON->struct for boxed->gvalue. Allows, s = new Clutter.Stage({color: {red: 255, blue: 30}});
+
+ svn path=/trunk/; revision=331
+
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-types.c | 23 +++++++++++++++++++++++
+ 2 files changed, 24 insertions(+), 1 deletions(-)
+
+commit bb7685e3823e085a86db17fb1fbb3adfc48e5d5a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 07:16:23 2008 +0000
+
+ Add conversion logic for object->struct. Allows nested structs to be specified as literals... in say constructors or function arguments. i.e. struct = new Namespace.Struct({color: {red: 20, blue: 30}}).
+
+ svn path=/trunk/; revision=330
+
+ libseed/seed-types.c | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+commit b49eeaa01a5091897f59d4eb708eb4b26f770610
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 07:10:43 2008 +0000
+
+ Factor out struct/union construction/JSON->field conversion in to seed_construct_type_with_parameters
+
+ svn path=/trunk/; revision=329
+
+ libseed/seed-engine.c | 85 ++++------------------------------------------
+ libseed/seed-structs.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-structs.h | 6 +++
+ 3 files changed, 102 insertions(+), 77 deletions(-)
+
+commit f21ab0057cd03f4d1f557fecba5fa76bf27076b1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:56:51 2008 +0000
+
+ Struct constructor test.
+
+ svn path=/trunk/; revision=328
+
+ tests/Makefile.am | 1 +
+ tests/struct-constructor.js | 12 ++++++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 9e8b209baa6edd3cf6da38b8abd3537419ecdb77
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:52:30 2008 +0000
+
+ JSON style constructors for structs.
+
+ svn path=/trunk/; revision=327
+
+ libseed/seed-engine.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-structs.c | 4 +-
+ libseed/seed-structs.h | 5 ++++
+ 3 files changed, 70 insertions(+), 2 deletions(-)
+
+commit df62eb494cea90869737de9d5d4bf59ab45142a7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:31:38 2008 +0000
+
+ SEED_NOTES for struct code.
+
+ svn path=/trunk/; revision=326
+
+ libseed/seed-debug.h | 3 ++-
+ libseed/seed-engine.c | 3 ++-
+ libseed/seed-structs.c | 22 ++++++++++++++++++++++
+ 3 files changed, 26 insertions(+), 2 deletions(-)
+
+commit fc94bfe5c57c39da4c3d68ffd71e64692d0a6fef
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:19:32 2008 +0000
+
+ Fix double free.
+
+ svn path=/trunk/; revision=325
+
+ libseed/seed-structs.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 8ca78cfbaf52267d3323579a24daceb37582551c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:15:38 2008 +0000
+
+ Add test of nested struct setting.
+
+ svn path=/trunk/; revision=324
+
+ tests/Makefile.am | 1 +
+ tests/struct-nested-set.js | 17 +++++++++++++++++
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 6f15f0b9afcaa54ccf3d0924c578f9f4e9a41e24
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:10:00 2008 +0000
+
+ Struct member setting and construction test.
+
+ svn path=/trunk/; revision=323
+
+ tests/Makefile.am | 1 +
+ tests/struct-set-member.js | 15 +++++++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit a3acf111b850e5d5e12970f2a7ea29ecdfa8c59d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 06:06:45 2008 +0000
+
+ Implement generic constructor for structs and unions, i.e. c = new Clutter.Color or e = new Gdk.Event...
+
+ svn path=/trunk/; revision=322
+
+ libseed/seed-engine.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 86 insertions(+), 1 deletions(-)
+
+commit 13c9f2b053b186ab95ab96c8518c9736d255801f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 05:52:44 2008 +0000
+
+ Add seed_pointer_set_free, which specifies that when a pointer base type (parent of struct, union, boxed, etc...) is collected, the pointer itself should be freed.
+
+ svn path=/trunk/; revision=321
+
+ libseed/seed-structs.c | 22 ++++++++++++++++++++--
+ libseed/seed-structs.h | 2 ++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit 03811bb34083f979f9fc265aca8e24ff2aa98a19
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 05:46:27 2008 +0000
+
+ Add struct value setting.
+
+ svn path=/trunk/; revision=320
+
+ libseed/seed-structs.c | 38 +++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 37 insertions(+), 1 deletions(-)
+
+commit 01064e5b9ca076050a19a18580b926a1d46bfcbc
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 03:37:37 2008 +0000
+
+ Dear racarr, you are a dumb person who does not know how to test code.
+
+ Love,
+ racarr
+
+ svn path=/trunk/; revision=319
+
+ libseed/seed-engine.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 741d504f5c63f0ebea15b9247546b5dea538240e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 03:27:59 2008 +0000
+
+ Refactor struct code for GObject instances to use the same code as the rest of the struct madness. Notably, adds support for GObjects with nested structs.
+
+ svn path=/trunk/; revision=318
+
+ libseed/seed-engine.c | 13 +------------
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-structs.h | 5 +++++
+ 3 files changed, 7 insertions(+), 13 deletions(-)
+
+commit e77c6a1f31c4d87adb0052250d478c309ed1080d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 03:24:37 2008 +0000
+
+ Big cleanup of the new struct code.
+
+ svn path=/trunk/; revision=317
+
+ libseed/seed-structs.c | 114 +++++++++++++++++++-----------------------------
+ 1 files changed, 45 insertions(+), 69 deletions(-)
+
+commit 12fce6be3256c65bbfb244833115d227deccf0a4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 01:08:48 2008 +0000
+
+ make-test script should make test executable if it's not.
+
+ svn path=/trunk/; revision=316
+
+ tests/make-test.py | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit ecaaa716d2c2ee03e3da57cd3aa2b21583d538b7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 01:06:19 2008 +0000
+
+ Add c module test.
+
+ svn path=/trunk/; revision=315
+
+ tests/Makefile.am | 1 +
+ tests/c-module.js | 6 ++++++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 969c26241b72a033325f8ec0603f02fbe89ae6c9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 01:04:35 2008 +0000
+
+ Add example module
+
+ svn path=/trunk/; revision=314
+
+ Makefile.am | 1 +
+ configure.ac | 2 ++
+ libseed/seed-engine.c | 8 ++++----
+ modules/Makefile.am | 1 +
+ modules/example/Makefile.am | 14 ++++++++++++++
+ modules/example/example.c | 8 ++++++++
+ 6 files changed, 30 insertions(+), 4 deletions(-)
+
+commit c426e4259dc76df632ce604dc53282945da44ddd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 24 00:38:44 2008 +0000
+
+ Add C extension modules.
+
+ svn path=/trunk/; revision=313
+
+ libseed/Makefile.am | 1 +
+ libseed/seed-engine.c | 48 ++++++++++++++++++++++++++++++++++++++++++++----
+ libseed/seed-engine.h | 2 ++
+ libseed/seed-private.h | 1 +
+ libseed/seed.h | 8 ++++++++
+ 5 files changed, 56 insertions(+), 4 deletions(-)
+
+commit 0f14d6b0335f113b0de6ab02647fca52d4e39e0a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 23 04:59:43 2008 +0000
+
+ Add object.connect test.
+
+
+ svn path=/trunk/; revision=312
+
+ tests/Makefile.am | 1 +
+ tests/signal-connect.js | 21 +++++++++++++++++++++
+ 2 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 005c79de9b7d5ba26381028a3e963b8641318c31
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 23 04:23:22 2008 +0000
+
+ add G_TYPE_PARAM conversion to seed_value_from_gvalue. Makes signals that take a GParam work.
+
+ svn path=/trunk/; revision=311
+
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-types.c | 3 +++
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit d42e423bedc0f7d7a2090ce1f8438c4220bd74be
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 23 02:15:55 2008 +0000
+
+ Some more context cleanup.
+
+ svn path=/trunk/; revision=310
+
+ libseed/seed-builtins.c | 10 +++---
+ libseed/seed-gtype.c | 64 +++++++++++++++++++++++-----------------------
+ 2 files changed, 37 insertions(+), 37 deletions(-)
+
+commit 938ea070a0858cc69a194ccee84f90d4f6775a83
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 23 02:11:33 2008 +0000
+
+ Some work toward multicontext cleanup.
+
+ svn path=/trunk/; revision=309
+
+ libseed/seed-engine.c | 59 ++++++++++++++++++++++++-------------------------
+ libseed/seed-gtype.c | 1 -
+ libseed/seed.h | 2 +-
+ 3 files changed, 30 insertions(+), 32 deletions(-)
+
+commit 2534088a1589e38c7cfaddd7d71b99148e8fd05b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 23:10:28 2008 +0000
+
+ Second part of signal rework; now we
+ find notification signals too!
+
+ svn path=/trunk/; revision=308
+
+ libseed/seed-signals.c | 30 +++++++++---------------------
+ 1 files changed, 9 insertions(+), 21 deletions(-)
+
+commit 6d0eece0f55a25acedd947d7daec9a3cb933c2c0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 22:37:02 2008 +0000
+
+ Reworking signals, added object.connect("signal name", callback, [userdata]).
+
+ Detailed signals don't work yet, though.
+
+ svn path=/trunk/; revision=307
+
+ libseed/seed-signals.c | 170 ++++++++++++++++++++++++++++++++++++------------
+ 1 files changed, 128 insertions(+), 42 deletions(-)
+
+commit 86295cd04aef12b318175488f30697035c798a73
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 19:30:32 2008 +0000
+
+ Update tests.
+
+ svn path=/trunk/; revision=306
+
+ tests/gtype-typerror.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e8ac57b010fa3bce3729b328095bbd41efe7466d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 19:28:30 2008 +0000
+
+ Typo in exception.
+
+ svn path=/trunk/; revision=305
+
+ libseed/seed-gtype.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 43480c6c35787b43967054817e2861dcf1992afc
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 19:00:31 2008 +0000
+
+ Fix indentation.
+
+ svn path=/trunk/; revision=304
+
+ libseed/seed-builtins.c | 644 ++++++++--------
+ libseed/seed-builtins.h | 32 +-
+ libseed/seed-closure.c | 705 ++++++++---------
+ libseed/seed-closure.h | 26 +-
+ libseed/seed-debug.h | 9 +-
+ libseed/seed-engine.c | 1929 ++++++++++++++++++++++-----------------------
+ libseed/seed-engine.h | 12 +-
+ libseed/seed-exceptions.c | 158 ++--
+ libseed/seed-exceptions.h | 2 +-
+ libseed/seed-gtype.c | 1045 ++++++++++++-------------
+ libseed/seed-private.h | 4 +-
+ libseed/seed-signals.c | 447 +++++------
+ libseed/seed-signals.h | 8 +-
+ libseed/seed-structs.c | 650 ++++++++--------
+ libseed/seed-structs.h | 1 -
+ libseed/seed-types.c | 1653 +++++++++++++++++++-------------------
+ libseed/seed-types.h | 18 +-
+ libseed/seed.h | 14 +-
+ 18 files changed, 3643 insertions(+), 3714 deletions(-)
+
+commit 6ed6146ceea2f1b2d922caf53be2bfe72df7428a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 04:11:30 2008 +0000
+
+ Object struct members.
+
+ svn path=/trunk/; revision=303
+
+ libseed/seed-engine.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 58 insertions(+), 0 deletions(-)
+
+commit ea7c28da4c146341f4a4c4f456a56b3d1ae18e1d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 04:09:36 2008 +0000
+
+ Fix docs.
+
+ svn path=/trunk/; revision=302
+
+ doc/runtime.html | 6 +++++-
+ libseed/seed-builtins.c | 28 ++++++++++++++--------------
+ 2 files changed, 19 insertions(+), 15 deletions(-)
+
+commit a4a4af69635c77d69982d07f9dcb8f85a9c820ca
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 03:23:48 2008 +0000
+
+ Add GdkEvent test.
+
+ svn path=/trunk/; revision=301
+
+ tests/Makefile.am | 1 +
+ tests/gdk-event.js | 28 ++++++++++++++++++++++++++++
+ 2 files changed, 29 insertions(+), 0 deletions(-)
+
+commit 5f1ea9e9dc7de86c8acec741c9fc116fe522b0e4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 02:37:02 2008 +0000
+
+ Release in_args in closures.
+
+ svn path=/trunk/; revision=300
+
+ libseed/seed-closure.c | 4 ++++
+ libseed/seed-structs.c | 2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 59ab54419f13479d59a396e92ee68b4ea2340ec7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 02:31:06 2008 +0000
+
+ seed_struct_find_field and seed_union_find_field. Needed to cleanly implement. seed_struct/union get/set property.
+
+ svn path=/trunk/; revision=299
+
+ libseed/seed-structs.c | 81 +++++++++++++++++++++++++++++------------------
+ tests/struct-offsets.js | 3 +-
+ 2 files changed, 52 insertions(+), 32 deletions(-)
+
+commit 54b270d93c1a46f0d945146054e1133ae7601e0e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 02:23:51 2008 +0000
+
+ Fix nested struct in addition to nested union.
+
+ svn path=/trunk/; revision=298
+
+ libseed/seed-structs.c | 29 +++++++++++++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
+
+commit 361aa4058c5111165e1556c8cf83cf159aabf997
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 02:22:53 2008 +0000
+
+ Nested unions and boxed.
+
+ svn path=/trunk/; revision=297
+
+ libseed/seed-structs.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 8341d698ca479fd2a917ab3a6cb1e24a5274e205
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 02:22:10 2008 +0000
+
+ Implement seed_union_get_property. Woohoo. GdkEvent works.
+
+ svn path=/trunk/; revision=296
+
+ libseed/seed-structs.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 109 insertions(+), 1 deletions(-)
+
+commit 925b6e517f1bd2412fae191950a02bdb6cca5433
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 01:54:25 2008 +0000
+
+ Remove completely useless block of code.
+
+ svn path=/trunk/; revision=295
+
+ libseed/seed-structs.c | 6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+commit 5f06b06cac839b43f3d25c10aee73ae020b31a7a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 01:49:53 2008 +0000
+
+ Add struct offset test.
+
+ svn path=/trunk/; revision=294
+
+ libseed/seed-structs.c | 1 -
+ tests/Makefile.am | 1 +
+ tests/struct-offsets.js | 15 +++++++++++++++
+ 3 files changed, 16 insertions(+), 1 deletions(-)
+
+commit aaa4fede5556f7c8139ee7f5d42561dfa391a4fb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 01:45:03 2008 +0000
+
+ seed_struct_get_property
+
+ svn path=/trunk/; revision=293
+
+ libseed/seed-structs.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 68 insertions(+), 2 deletions(-)
+
+commit 8e3349622a02613f6f35745a9953286464520f1a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 01:08:15 2008 +0000
+
+ seed_boxed_finalize. Also let WebKit tie up the finalize chain for us.
+
+ svn path=/trunk/; revision=292
+
+ libseed/seed-signals.c | 1 +
+ libseed/seed-structs.c | 18 +++++++++---------
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+commit 631ae45ae0ee8c4fd53b90cb17dbd3d266ebe91c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 01:02:31 2008 +0000
+
+ Add seed_boxed_finalize.
+
+ svn path=/trunk/; revision=291
+
+ libseed/seed-structs.c | 18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+commit d7cca613d5706014609ac38ce71eea8d11c5c246
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 00:59:28 2008 +0000
+
+ Fix build.
+
+ svn path=/trunk/; revision=290
+
+ libseed/seed-gtype.c | 2 +-
+ libseed/seed-structs.c | 20 ++++++++++++++++++--
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+commit 7c912bb5e14cb80affe320cdd1d62e4eb70f670e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 00:52:55 2008 +0000
+
+ Add seed_struct_privates, refactor seed_make_struct/pointer/union/boxed to use that rathewr than store the pointer directly on privates. Needed to have GIBaseInfo in seed_boxed_finalize and set/get property on structs.
+
+ svn path=/trunk/; revision=289
+
+ libseed/seed-structs.c | 45 ++++++++++++++++++++++++++++++++++++++-------
+ libseed/seed-structs.h | 2 ++
+ libseed/seed-types.c | 4 ++--
+ 3 files changed, 42 insertions(+), 9 deletions(-)
+
+commit 7f389756f368fc6e00c638c4ff40e965be7dac29
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 22 00:41:14 2008 +0000
+
+ Fix playing more than one LO game.
+
+ svn path=/trunk/; revision=288
+
+ examples/lightsoff/board.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 85bfee22c492307405deb38cbd41c4e5e06354b6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 00:32:03 2008 +0000
+
+ seed_struct_get_pointer -> seed_pointer_get_pointer
+
+ svn path=/trunk/; revision=287
+
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-gtype.c | 2 +-
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-structs.h | 2 +-
+ libseed/seed-types.c | 4 ++--
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+commit d361aa129a69541d0150edc0bcaf5abcdc9f0da0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 00:28:45 2008 +0000
+
+ Seed boxed class, also seed-gtype and should use seed_make_pointer for class_init callback.
+
+ svn path=/trunk/; revision=286
+
+ libseed/seed-gtype.c | 4 ++--
+ libseed/seed-structs.c | 28 ++++++++++++++++++++++++++++
+ libseed/seed-structs.h | 2 ++
+ 3 files changed, 32 insertions(+), 2 deletions(-)
+
+commit 654df2841a9772da40acb1d1a33a640b8f3fdc68
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 22 00:08:35 2008 +0000
+
+ Make seed_pointer_class, seed_struct_class is now a type of that.
+
+ svn path=/trunk/; revision=285
+
+ libseed/seed-engine.c | 1 +
+ libseed/seed-structs.c | 38 ++++++++++++++++++++++++++++++--------
+ libseed/seed-structs.h | 2 ++
+ 3 files changed, 33 insertions(+), 8 deletions(-)
+
+commit b89622b7ee5a94688117b1e34f89fb5a7b89ae25
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 21 20:00:35 2008 +0000
+
+ SEED_NOTE for closures.
+
+ svn path=/trunk/; revision=284
+
+ libseed/seed-closure.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 84840f9d43df4eaebac00ec21720f62c71ed115e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 21 19:58:00 2008 +0000
+
+ Add construction SEED_NOTE
+
+ svn path=/trunk/; revision=283
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 9113f92f75a85e35bae79225783ed13f274b043b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 21 19:07:25 2008 +0000
+
+ Add SEED_DEBUG_INVOCATION. and SEED_NOTES for method_invocation and argument release. Unref transfer ownership return values.
+
+ svn path=/trunk/; revision=282
+
+ libseed/seed-debug.h | 3 ++-
+ libseed/seed-engine.c | 41 +++++++++++++++++++++++++++++++++++++++--
+ libseed/seed-types.c | 15 ++++++++++-----
+ 3 files changed, 51 insertions(+), 8 deletions(-)
+
+commit 3c88bf4973cc1dfc50390e11511d83e35b094539
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 18:44:25 2008 +0000
+
+ Fix bug where you could break Lights Off by clicking too quickly on the
+ arrows.
+
+ svn path=/trunk/; revision=281
+
+ examples/lightsoff/arrow.js | 3 +++
+ examples/lightsoff/board.js | 10 ++++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 7db59913b9f6b3d86b0a7295681c26bdd80cb479
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 18:23:39 2008 +0000
+
+ Fix broken indent script (didn't change tab size to 4 even though indent
+ was 4, so lots of lines still used spaces!)
+
+
+ svn path=/trunk/; revision=280
+
+ libseed/indent.sh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c35f2901d972dd5d07f56753d0ce315cb3ec83c4
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 18:15:45 2008 +0000
+
+ Add logging for finalize handler.
+
+ svn path=/trunk/; revision=279
+
+ libseed/seed-engine.c | 16 ++++++++++++----
+ libseed/seed-signals.c | 6 +++---
+ libseed/seed-types.c | 1 -
+ 3 files changed, 15 insertions(+), 8 deletions(-)
+
+commit bc0be595d4d62e332d2403517bb479d498c80f2d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 17:34:01 2008 +0000
+
+ Remove spurious mark at beginning of programs.
+
+ svn path=/trunk/; revision=278
+
+ libseed/seed-engine.c | 4 ----
+ 1 files changed, 0 insertions(+), 4 deletions(-)
+
+commit 48a8ce97c618dc515f2998aec994f271b3e735a6
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 17:32:46 2008 +0000
+
+ Add debugging framework; don't segfault if given a nonexistant file.
+
+ svn path=/trunk/; revision=277
+
+ configure.ac | 19 ++++++++
+ libseed/Makefile.am | 2 +-
+ libseed/seed-debug.h | 42 +++++++++++++++++++
+ libseed/seed-engine.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-private.h | 1 +
+ src/main.c | 12 ++++-
+ 6 files changed, 177 insertions(+), 6 deletions(-)
+
+commit 87e0ec82f7cce29685bae9446f2405661d9ce526
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 03:36:57 2008 +0000
+
+ Don't use GConf schema, just guess at initial score.
+
+ svn path=/trunk/; revision=276
+
+ examples/lightsoff/Makefile.am | 7 -------
+ examples/lightsoff/lightsoff.schemas | 16 ----------------
+ examples/lightsoff/score.js | 4 ++++
+ 3 files changed, 4 insertions(+), 23 deletions(-)
+
+commit 099c361db229292758483af28583c3d6d1679f55
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 21 01:02:51 2008 +0000
+
+ Makefile updates for lightsoff schema.
+
+ svn path=/trunk/; revision=275
+
+ configure.ac | 2 ++
+ examples/lightsoff/Makefile.am | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 8c193ae3db5aa59510d766785b1fdd0bce410a90
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 05:15:30 2008 +0000
+
+ One more am fix.
+
+ svn path=/trunk/; revision=274
+
+ examples/lightsoff/Makefile.am | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 37d78b3397911c079725dd297b83b56eb7ea90d0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 05:14:24 2008 +0000
+
+ Fix test automake file (Robb!)
+
+ svn path=/trunk/; revision=273
+
+ tests/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3977c86418ea88ca08fc5768f4df2d9603168c52
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 05:12:41 2008 +0000
+
+ Fix makefile for LO.
+
+ svn path=/trunk/; revision=272
+
+ examples/lightsoff/Makefile.am | 22 ++++++++++------------
+ 1 files changed, 10 insertions(+), 12 deletions(-)
+
+commit 767a495b12be6dc49ff0b4b22bd01d956d218a0c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 04:47:03 2008 +0000
+
+ LO Cleanup.
+
+ svn path=/trunk/; revision=271
+
+ examples/lightsoff/arrow.js | 9 +-
+ examples/lightsoff/back.svg | 117 -----
+ examples/lightsoff/board.js | 43 +-
+ examples/lightsoff/front.svg | 113 -----
+ examples/lightsoff/lcd-back.svg | 117 +++++
+ examples/lightsoff/lcd-front.svg | 113 +++++
+ examples/lightsoff/lcd-off.svg | 228 ++++++++++
+ examples/lightsoff/led.svg | 884 --------------------------------------
+ examples/lightsoff/light-off.svg | 228 ++++++++++
+ examples/lightsoff/light-on.svg | 204 +++++++++
+ examples/lightsoff/light.js | 4 +-
+ examples/lightsoff/off.svg | 228 ----------
+ examples/lightsoff/score.js | 20 +-
+ examples/lightsoff/tim-off.svg | 228 ----------
+ examples/lightsoff/tim-on.svg | 204 ---------
+ 15 files changed, 926 insertions(+), 1814 deletions(-)
+
+commit 8495a0acccb0f72f315c6d75e3884841b184c30e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 03:16:27 2008 +0000
+
+ Level chooser, level up/down animation, fix centering, etc.
+
+ svn path=/trunk/; revision=270
+
+ examples/lightsoff/0.svg | 148 ++++++++++++++++++++-----------------------
+ examples/lightsoff/1.svg | 14 ++--
+ examples/lightsoff/2.svg | 140 +++++++++++++++++-----------------------
+ examples/lightsoff/3.svg | 14 ++--
+ examples/lightsoff/4.svg | 132 +++++++++++++++------------------------
+ examples/lightsoff/5.svg | 140 +++++++++++++++++-----------------------
+ examples/lightsoff/6.svg | 148 ++++++++++++++++++++-----------------------
+ examples/lightsoff/7.svg | 14 ++--
+ examples/lightsoff/8.svg | 14 ++--
+ examples/lightsoff/9.svg | 148 ++++++++++++++++++++-----------------------
+ examples/lightsoff/arrow.js | 15 ++++-
+ examples/lightsoff/board.js | 34 +++++++++-
+ examples/lightsoff/main.js | 2 +-
+ examples/lightsoff/off.svg | 16 +++---
+ examples/lightsoff/score.js | 17 +++---
+ 15 files changed, 472 insertions(+), 524 deletions(-)
+
+commit 851a7671a530be87b9b6fdb3e9125422e8f6638b
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 16 01:22:43 2008 +0000
+
+ Lights Off: Save score in GConf, add stable level code, add level switch arrows.
+
+
+ svn path=/trunk/; revision=269
+
+ examples/lightsoff/Makefile.am | 16 +++-
+ examples/lightsoff/arrow-l.svg | 174 +++++++++++++++++++++++++++++++
+ examples/lightsoff/arrow-r.svg | 191 ++++++++++++++++++++++++++++++++++
+ examples/lightsoff/arrow.js | 27 +++++
+ examples/lightsoff/board.js | 15 ++-
+ examples/lightsoff/lightsoff.schemas | 16 +++
+ examples/lightsoff/main.js | 20 +++-
+ examples/lightsoff/score.js | 5 +-
+ 8 files changed, 450 insertions(+), 14 deletions(-)
+
+commit 2da7d67a3fa6594b10a7721174e9a6218a6d95dd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 13 15:01:51 2008 +0000
+
+ More seed-types cleanup.
+
+ svn path=/trunk/; revision=268
+
+ libseed/seed-types.c | 3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+commit 80b50dfe42ab8a9ce6772ba69a978ac6799b7ef6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 13 09:06:21 2008 +0000
+
+ Last commit was a mistake.
+
+ svn path=/trunk/; revision=267
+
+ libseed/seed-types.c | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 8b016d369b3e55ee9b66ffb7212051f8c65b5ea0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 13 08:58:27 2008 +0000
+
+ Make sure all objects that go through seed have floating ref sunk.
+
+ svn path=/trunk/; revision=266
+
+ examples/lightsoff/board.js | 2 +-
+ examples/lightsoff/score.js | 12 ++++++++++--
+ libseed/seed-types.c | 2 ++
+ 3 files changed, 13 insertions(+), 3 deletions(-)
+
+commit 994d560e61d315fc136d77534287bf1102cca1b3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 13 08:21:18 2008 +0000
+
+ Lots of sanity checks, cleanup, removing 2 unused functions, and documentation in seed-types.c
+
+ svn path=/trunk/; revision=265
+
+ libseed/seed-gtype.c | 2 +-
+ libseed/seed-types.c | 185 ++++++++++----------------------------------------
+ libseed/seed-types.h | 3 -
+ 3 files changed, 38 insertions(+), 152 deletions(-)
+
+commit d2862d0717cfd9d2b756166530580b24a32c98df
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 13 08:06:23 2008 +0000
+
+ Release in args.
+
+ svn path=/trunk/; revision=264
+
+ examples/quine.js | 2 +-
+ libseed/seed-engine.c | 57 +++++++++++++++----------
+ libseed/seed-types.c | 93 ++++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-types.h | 8 ++++
+ tests/Makefile.am | 3 +-
+ tests/reference-count-new.js | 20 ---------
+ 6 files changed, 134 insertions(+), 49 deletions(-)
+
+commit db77ace493fcd320f5a23effb57c7771ce3fee6e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 12 14:03:19 2008 +0000
+
+ Make sure that if unref ressurects a GObject (in say, cycle case between container->child), the "js-ref" data on the object does not point to a finalized wrapper.
+
+ svn path=/trunk/; revision=263
+
+ libseed/seed-engine.c | 11 +++++------
+ libseed/seed-types.c | 9 ++++++++-
+ 2 files changed, 13 insertions(+), 7 deletions(-)
+
+commit 1245c35dbfa8476ddba1f47c70ff90582b569ce0
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 11:41:23 2008 +0000
+
+ More automake updates.
+
+ svn path=/trunk/; revision=262
+
+ examples/ide/Makefile.am | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 5da6dfa0988da90c92e3c1b640d4a7888ae92dd8
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 11:38:53 2008 +0000
+
+ Update automake for LO
+
+ svn path=/trunk/; revision=261
+
+ examples/lightsoff/Makefile.am | 37 +++++++++++++++++++++++++++++++--
+ examples/lightsoff/menu.js | 43 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 77 insertions(+), 3 deletions(-)
+
+commit f7eef664ef2e14135c9bc4d72acaaad747047293
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 11:36:45 2008 +0000
+
+ Ensure you can't make the buttons
+ go insane by clicking many times;
+ embed in Gtk so we can get menus
+ once things are less broken
+ upstream.
+
+
+ svn path=/trunk/; revision=260
+
+ examples/lightsoff/board.js | 8 ++++++++
+ examples/lightsoff/main.js | 24 +++++++++++++++++-------
+ 2 files changed, 25 insertions(+), 7 deletions(-)
+
+commit d17569d2d95a9ceca5b4263431a79fc0f9c99f7a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 10:45:27 2008 +0000
+
+ Adjustable 'light' size for lights off.
+
+
+ svn path=/trunk/; revision=259
+
+ examples/lightsoff/back.svg | 69 +++++++++++++++++++++--------------
+ examples/lightsoff/board.js | 60 ++++++++++++++++++++++++++++++-
+ examples/lightsoff/front.svg | 24 +++++++++----
+ examples/lightsoff/light.js | 16 ++++++++-
+ examples/lightsoff/main.js | 81 +++++------------------------------------
+ examples/lightsoff/score.js | 66 +++++++---------------------------
+ 6 files changed, 154 insertions(+), 162 deletions(-)
+
+commit 2aff96f285088ca7869805056cb377f87f1a0e1b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 12 09:22:33 2008 +0000
+
+ Fix regression with structs introduced a few commits ago.
+
+ svn path=/trunk/; revision=258
+
+ libseed/seed-types.c | 6 ++++-
+ tests/Makefile.am | 1 -
+ tests/gsuper.js | 53 -------------------------------------------------
+ tests/gtype-signal.js | 2 +-
+ 4 files changed, 6 insertions(+), 56 deletions(-)
+
+commit ce182ec65236ecc1da6a8a46f8dd18f3e753063c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 09:02:10 2008 +0000
+
+ Fix offset during win animation;
+ don't go back in the same direction we came from.
+
+ svn path=/trunk/; revision=257
+
+ examples/lightsoff/main.js | 28 ++++++++++++++++++++--------
+ 1 files changed, 20 insertions(+), 8 deletions(-)
+
+commit 6b3f4a76be61056c8974b519b557d53a2095db40
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 12 08:41:14 2008 +0000
+
+ Remove useless ref/unref.
+
+ svn path=/trunk/; revision=256
+
+ libseed/seed-types.c | 3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+commit 21b9838e93aab5f34dd28bc665198499b2594a39
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 08:39:17 2008 +0000
+
+ Add scoring!
+
+
+ svn path=/trunk/; revision=255
+
+ examples/lightsoff/board.js | 8 ++----
+ examples/lightsoff/main.js | 8 ++----
+ examples/lightsoff/score.js | 49 ++++++++++++++++++++++++++++++++++++-------
+ 3 files changed, 47 insertions(+), 18 deletions(-)
+
+commit 923a6587ba8f5962834956a9d0343f539fb97727
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 12 08:17:47 2008 +0000
+
+ Move everything to SVG, fix line.
+
+
+ svn path=/trunk/; revision=254
+
+ examples/lightsoff/back.svg | 104 ++++++++++++++++++++++++++++++++++++++++
+ examples/lightsoff/bkg.png | Bin 1375 -> 0 bytes
+ examples/lightsoff/bkg_top.png | Bin 1084 -> 0 bytes
+ examples/lightsoff/front.svg | 103 +++++++++++++++++++++++++++++++++++++++
+ examples/lightsoff/score.js | 9 ++-
+ 5 files changed, 213 insertions(+), 3 deletions(-)
+
+commit 7f6e2716c778629a353c8d158f5675d7eea171cf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 12 08:08:59 2008 +0000
+
+ Fix objects which are not floating but still initially unowned...
+
+ svn path=/trunk/; revision=253
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 4104944faf6cb24993d5e14fd3694b35baeed6e5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 19:38:45 2008 +0000
+
+ Move scoreboard into Lightsoff
+
+ svn path=/trunk/; revision=252
+
+ examples/lightsoff/main.js | 14 ++++++++++-
+ examples/lightsoff/score.js | 52 +++++++++++++++++++++++++-----------------
+ 2 files changed, 44 insertions(+), 22 deletions(-)
+
+commit a5207c8265ac92bd5c39bd0784300cedc1846e07
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 16:23:06 2008 +0000
+
+ Update score display.
+
+ svn path=/trunk/; revision=251
+
+ examples/lightsoff/bg_bottom.svg | 101 --------------------------------------
+ examples/lightsoff/bg_top.svg | 93 -----------------------------------
+ examples/lightsoff/bkg.png | Bin 0 -> 1375 bytes
+ examples/lightsoff/bkg_top.png | Bin 0 -> 1084 bytes
+ examples/lightsoff/led.svg | 54 +++++++++++++++++++-
+ examples/lightsoff/score.js | 53 ++++++++++++++++----
+ 6 files changed, 93 insertions(+), 208 deletions(-)
+
+commit c98e8bfb51b4217a76954942639851125ee94d2c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 16:22:23 2008 +0000
+
+ Leaks.
+
+ svn path=/trunk/; revision=250
+
+ libseed/seed-closure.c | 9 +++++++++
+ libseed/seed-engine.c | 2 ++
+ libseed/seed-signals.c | 10 +++++++++-
+ libseed/seed-types.c | 26 ++++++++++++++++++++------
+ 4 files changed, 40 insertions(+), 7 deletions(-)
+
+commit de495d1d0bdb21911a03f609476ed8410d388744
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 15:39:40 2008 +0000
+
+ Starting scoring widget for lights off; make it harder to win; etc...
+
+ svn path=/trunk/; revision=249
+
+ examples/lightsoff/0.svg | 217 ++++++++++
+ examples/lightsoff/1.svg | 177 ++++++++
+ examples/lightsoff/2.svg | 207 ++++++++++
+ examples/lightsoff/3.svg | 207 ++++++++++
+ examples/lightsoff/4.svg | 197 +++++++++
+ examples/lightsoff/5.svg | 207 ++++++++++
+ examples/lightsoff/6.svg | 217 ++++++++++
+ examples/lightsoff/7.svg | 187 +++++++++
+ examples/lightsoff/8.svg | 227 +++++++++++
+ examples/lightsoff/9.svg | 217 ++++++++++
+ examples/lightsoff/bg_bottom.svg | 101 +++++
+ examples/lightsoff/bg_top.svg | 93 +++++
+ examples/lightsoff/board.js | 1 -
+ examples/lightsoff/led.svg | 836 ++++++++++++++++++++++++++++++++++++++
+ examples/lightsoff/off.svg | 228 +++++++++++
+ examples/lightsoff/score.js | 51 +++
+ 16 files changed, 3369 insertions(+), 1 deletions(-)
+
+commit e3e78e360bf5a95b3bf44d426ac865c73f10322c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 15:28:24 2008 +0000
+
+ Overhaul reference counting a bit and add a reference counting test.
+
+ svn path=/trunk/; revision=248
+
+ libseed/seed-engine.c | 26 +++++++++++++++++++++++---
+ libseed/seed-types.c | 3 +--
+ tests/Makefile.am | 1 +
+ tests/reference-count-new.js | 20 ++++++++++++++++++++
+ 4 files changed, 45 insertions(+), 5 deletions(-)
+
+commit c268d54ff5261d91995277f9354a2fc917bbc312
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 12:53:57 2008 +0000
+
+ Include new LO in tarballs...
+
+ svn path=/trunk/; revision=247
+
+ examples/lightsoff/Makefile.am | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 30f0ea65d993fcaff74414204ce844f8bf792f4e
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 12:51:57 2008 +0000
+
+ More Lights Off updates, cleanup, etc.
+
+ svn path=/trunk/; revision=246
+
+ examples/lightsoff/board.js | 15 ++++++++++-----
+ examples/lightsoff/light.js | 20 ++++++++++++--------
+ examples/lightsoff/main.js | 26 ++++++++++++++------------
+ 3 files changed, 36 insertions(+), 25 deletions(-)
+
+commit c5997fb5846959a03c203f8b147b26e0b8ac807f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 12:15:40 2008 +0000
+
+ Improved replaced lights off (win animation, memory, etc.)
+
+ svn path=/trunk/; revision=245
+
+ examples/lightsoff/board.js | 66 +++++++++++++++++++++++++++++++-
+ examples/lightsoff/light.js | 23 ++++++-----
+ examples/lightsoff/main.js | 89 +++++++++++++++++++------------------------
+ 3 files changed, 116 insertions(+), 62 deletions(-)
+
+commit c92ff6c6624605621cd8737e5caab426f5ce9f4c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 11:50:20 2008 +0000
+
+ Add ability to define new properties on GObjectClasses, still need to implement get/set property callbacks.
+
+ svn path=/trunk/; revision=244
+
+ libseed/seed-gtype.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-signals.c | 14 ++++++-
+ 2 files changed, 124 insertions(+), 2 deletions(-)
+
+commit 9ed9be75b7ddba811506a1097bb6ab696dbeaacd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 10:59:05 2008 +0000
+
+ Beginnings of a Clutter rewrite of Lights Off.
+
+ svn path=/trunk/; revision=243
+
+ examples/lightsoff/board.js | 33 ++++
+ examples/lightsoff/legacy/lightsoff.js | 268 ++++++++++++++++++++++++++++++++
+ examples/lightsoff/light.js | 48 ++++++
+ examples/lightsoff/lightsoff.js | 268 --------------------------------
+ examples/lightsoff/main.js | 92 +++++++++++
+ 5 files changed, 441 insertions(+), 268 deletions(-)
+
+commit 5fe6c52e7c0df5be4adb358e687e9d3a6cd7fe48
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 09:48:43 2008 +0000
+
+ Exceptions on failure to (strongly) convert signal handler return value to expected GType.
+
+ svn path=/trunk/; revision=242
+
+ libseed/seed-signals.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit e36185438875ee64c642353343f39bec0145f320
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 09:44:33 2008 +0000
+
+ Fix some casts between object/value.
+
+ svn path=/trunk/; revision=241
+
+ libseed/seed-closure.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3c410450ee1155c72456c5a6310625984dc330ae
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 09:42:47 2008 +0000
+
+ Lots of internal API cleanup as to Object<->Value distinction.
+
+ svn path=/trunk/; revision=240
+
+ libseed/Makefile.am | 4 +++-
+ libseed/seed-builtins.c | 14 +++++++-------
+ libseed/seed-closure.c | 4 ++--
+ libseed/seed-engine.c | 30 +++++++++++++++---------------
+ libseed/seed-exceptions.c | 20 ++++++++++----------
+ libseed/seed-gtype.c | 29 +++++++++++++++++------------
+ libseed/seed-private.h | 1 -
+ libseed/seed-signals.c | 4 ++--
+ libseed/seed-types.c | 25 +++++++++++++------------
+ libseed/seed-types.h | 10 +++++-----
+ tests/Makefile.am | 2 +-
+ 11 files changed, 75 insertions(+), 68 deletions(-)
+
+commit 46d146d953371347097a280cc3fbcf61ec5c6268
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 09:32:32 2008 +0000
+
+ Exception when parent_type is not a GType/number.
+
+ svn path=/trunk/; revision=239
+
+ libseed/seed-gtype.c | 4 ++++
+ libseed/seed-types.c | 2 +-
+ tests/Makefile.am | 1 +
+ tests/gtype-typerror.js | 16 ++++++++++++++++
+ 4 files changed, 22 insertions(+), 1 deletions(-)
+
+commit 997e8f7efa0584da1f5be5fd42aa06b8c9e22a11
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 11 09:14:56 2008 +0000
+
+ Handle null callbacks.
+
+ svn path=/trunk/; revision=238
+
+ libseed/seed-types.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 321ed3f8f662d4e1e081ac776008705f3c6b4290
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 08:16:07 2008 +0000
+
+ Add IDEWindow subclass (more cleaning!)
+
+
+ svn path=/trunk/; revision=237
+
+ examples/ide/ide-window.js | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+commit 6577a13fb6155280f560b6df9b6139875f0325dd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 07:36:16 2008 +0000
+
+ IDE update + cleanup
+
+
+ svn path=/trunk/; revision=236
+
+ examples/ide/ide-actions.js | 11 ++++++-----
+ examples/ide/ide-sourceview.js | 3 ++-
+ examples/ide/ide-tabheader.js | 5 +----
+ examples/ide/ide-tabview.js | 34 ++++++++++++++++++++++------------
+ examples/ide/main.js | 33 +++------------------------------
+ 5 files changed, 34 insertions(+), 52 deletions(-)
+
+commit 65a11a643932bfba236058cc8ecdc163bc8b5998
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Tue Nov 11 05:51:05 2008 +0000
+
+ Remove some files we don't need in the repo, disable IDE close button
+ when modal message area is up.
+
+
+ svn path=/trunk/; revision=235
+
+ aclocal.m4 |10602 -----------------------------------------
+ config.guess | 1 -
+ config.sub | 1 -
+ depcomp | 1 -
+ examples/ide/ide-actions.js | 2 +-
+ examples/ide/ide-tab.js | 2 +
+ examples/ide/ide-tabheader.js | 6 +-
+ install-sh | 1 -
+ missing | 1 -
+ 9 files changed, 8 insertions(+), 10609 deletions(-)
+
+commit bc3f34d9793d48b619d9cd830e8094a95ad26b47
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 20:09:30 2008 +0000
+
+ Switch parent field of new GType constructor to use legitimate GType.
+ set constructor.type on all GObject constructors. Enables use of their
+ types in definign signalas.
+
+ svn path=/trunk/; revision=234
+
+ INSTALL | 2 +-
+ aclocal.m4 | 5501 +++++++++++++++++++++++----------------
+ config.guess | 2 +-
+ config.sub | 2 +-
+ depcomp | 2 +-
+ examples/ide/ide-messagearea.js | 2 +-
+ examples/ide/ide-sourceview.js | 2 +-
+ examples/ide/ide-tab.js | 2 +-
+ examples/ide/ide-tabheader.js | 2 +-
+ examples/ide/ide-tabview.js | 2 +-
+ examples/ide/ide-toolbar.js | 2 +-
+ install-sh | 2 +-
+ libseed/seed-engine.c | 4 +
+ libseed/seed-gtype.c | 8 +-
+ missing | 2 +-
+ tests/gtype-signal-exception.js | 2 +-
+ tests/gtype-signal.js | 2 +-
+ tests/gtype-signal2.js | 2 +-
+ tests/gtype.js | 2 +-
+ tests/property-benchmark.js | 2 +-
+ 20 files changed, 3259 insertions(+), 2288 deletions(-)
+
+commit af375c49371a00e42686c11bc055ed5234a2f596
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 16:05:33 2008 +0000
+
+ Add test of defining a signal with a return type.
+
+ svn path=/trunk/; revision=233
+
+ tests/gtype-signal2.js | 10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 66ca20ea452fdd8681be53c52daaafe3a956021a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Nov 10 13:30:09 2008 +0000
+
+ More IDE message area cleanup.
+
+ svn path=/trunk/; revision=232
+
+ examples/ide/ide-actions.js | 2 +-
+ examples/ide/ide-messagearea.js | 10 +++-------
+ examples/ide/ide-sourceview.js | 14 ++++++++++----
+ 3 files changed, 14 insertions(+), 12 deletions(-)
+
+commit 4c67f949607123ba03fbb5de8df2f6a9391c4dc5
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Nov 10 13:18:57 2008 +0000
+
+ Use the new IDE message area in more places!
+
+ svn path=/trunk/; revision=231
+
+ examples/ide/ide-actions.js | 4 +-
+ examples/ide/ide-messagearea.js | 46 ++++++++++++++++++++++++++++++++++----
+ examples/ide/ide-sourceview.js | 18 ++++++++++++++-
+ examples/ide/ide-tabview.js | 25 +++++++++++++++++---
+ 4 files changed, 81 insertions(+), 12 deletions(-)
+
+commit f6498517893548ee9018dc2bae1e93f389cea2a2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 13:11:29 2008 +0000
+
+ Don't attempt to do signal return type for G_TYPE_NONE, this causes the seed_gvalue_from_seed_value function to attempt to guess the return type, and then it puts bad things in the return_value.
+
+ svn path=/trunk/; revision=230
+
+ libseed/seed-signals.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 3de9184cee2e33499014e3ac28b76b4dc92e136a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 13:10:09 2008 +0000
+
+ Default signal type should be g_signal_run_first.
+
+ svn path=/trunk/; revision=229
+
+ libseed/seed-gtype.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1a693a5d58142e888aecdf5786caa347d182af16
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 13:07:53 2008 +0000
+
+ Make closure marshalling a bit more forgiving of signal handlers which don't return anything.
+
+ svn path=/trunk/; revision=228
+
+ libseed/seed-signals.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e967d9d1b3997baf6bb687cde319e9cae861d9f1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 13:02:17 2008 +0000
+
+ Add test for attempting to invalidly define signals.
+
+ svn path=/trunk/; revision=227
+
+ tests/gtype-signal-exception.js | 46 +++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 46 insertions(+), 0 deletions(-)
+
+commit e9b1478b22032a7b24a7da3e342e26457c5f6b01
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 13:00:08 2008 +0000
+
+ Implement the ability to define new signals on objects, add
+ GObject.TYPE_* through an import-hook js. Add return values from signals.
+ Add signal.emit().
+
+ svn path=/trunk/; revision=226
+
+ examples/pango.js | 2 +-
+ extensions/GObject.js | 30 +++++
+ extensions/Makefile.am | 4 +-
+ libseed/seed-closure.h | 2 +
+ libseed/seed-gtype.c | 301 +++++++++++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-signals.c | 74 +++++++++++-
+ tests/Makefile.am | 3 +
+ tests/gtype-signal.js | 34 ++++++
+ tests/gtype-signal2.js | 32 +++++
+ 9 files changed, 471 insertions(+), 11 deletions(-)
+
+commit 539189290cc872e40cc77557f8da2bcb52a3ac5d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Mon Nov 10 08:17:25 2008 +0000
+
+ IDE update; uses messagearea now
+
+ svn path=/trunk/; revision=225
+
+ examples/ide/ide-actions.js | 14 +++++++++-
+ examples/ide/ide-messagearea.js | 40 ++++++++++++++-------------
+ examples/ide/ide-sourceview.js | 8 ++++-
+ examples/ide/ide-tab.js | 58 +++++++++++++++++++++++++++++----------
+ examples/ide/ide-tabheader.js | 2 +-
+ examples/ide/ide-tabview.js | 7 ++++-
+ examples/ide/ide-toolbar.js | 2 +
+ examples/ide/main.js | 4 ++-
+ 8 files changed, 95 insertions(+), 40 deletions(-)
+
+commit edc485180a4331e5da6a98706a271cb8fa7231ee
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 10 00:39:01 2008 +0000
+
+ Everything should be 4 width, tabs.
+
+ svn path=/trunk/; revision=224
+
+ libseed/seed-engine.c | 857 ++++++++++++++++++++++-----------------------
+ libseed/seed-engine.h | 1 -
+ libseed/seed-exceptions.c | 49 ++--
+ libseed/seed-exceptions.h | 6 +-
+ libseed/seed-gtype.c | 10 +-
+ libseed/seed-signals.c | 11 +-
+ libseed/seed.h | 2 +-
+ 7 files changed, 461 insertions(+), 475 deletions(-)
+
+commit ab760c1de1aecbc696e5a26bbd44647d1325e5b3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 17:07:41 2008 +0000
+
+ Add cairo gir, and short example. Not really intended to actually be used, just for testing right now.
+
+ svn path=/trunk/; revision=223
+
+ Makefile.am | 1 +
+ configure.ac | 1 +
+ examples/Makefile.am | 2 ++
+ examples/cairo.js | 40 ++++++++++++++++++++++++++++++++++++++++
+ gir/Makefile.am | 28 ++++++++++++++++++++++++++++
+ 5 files changed, 72 insertions(+), 0 deletions(-)
+
+commit 33d547175e6d82faf8f11e399316047dd48df29f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sun Nov 9 09:59:57 2008 +0000
+
+ Fixed test maker w/ stderr; fleshing out IDE; begun work on IDEMessageArea.
+
+ svn path=/trunk/; revision=222
+
+ examples/ide/ide-actions.js | 63 ++++++----------------------
+ examples/ide/ide-messagearea.js | 87 +++++++++++++++++++++++++++++++++++++++
+ examples/ide/ide-sourceview.js | 77 ++++++++++++++++++++++++++++++++--
+ examples/ide/ide-tab.js | 1 +
+ examples/ide/ide-tabview.js | 8 +++-
+ examples/ide/ide-toolbar.js | 6 +--
+ examples/ide/main.js | 7 +++-
+ tests/make-test.py | 2 +-
+ 8 files changed, 187 insertions(+), 64 deletions(-)
+
+commit bd715e093d7bb7e06b9f572cadfa15bf978fcee0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 08:29:08 2008 +0000
+
+ Exceptions in instance/class init closures.
+
+ svn path=/trunk/; revision=221
+
+ libseed/seed-gtype.c | 16 +++++++++++++++-
+ 1 files changed, 15 insertions(+), 1 deletions(-)
+
+commit 69dc925dba503471cc4bf3b422186ad2a506137f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 07:51:31 2008 +0000
+
+ Make namespace import use the exception from errors from girepository.
+
+ svn path=/trunk/; revision=220
+
+ libseed/seed-engine.c | 13 +------------
+ tests/namespace-exception-test.js | 4 ++++
+ 2 files changed, 5 insertions(+), 12 deletions(-)
+
+commit a4bdd17a0f63ed4fb77e637361ea3eddbc340561
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 07:47:46 2008 +0000
+
+ Abstract out GError->Exception logic from function invocation.
+
+ svn path=/trunk/; revision=219
+
+ libseed/seed-engine.c | 23 ++++-------------------
+ libseed/seed-exceptions.c | 26 ++++++++++++++++++++++++++
+ libseed/seed-exceptions.h | 3 +++
+ 3 files changed, 33 insertions(+), 19 deletions(-)
+
+commit 721986c4f4104acc496c1575c56358ad643fdfea
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 07:14:31 2008 +0000
+
+ Add exceptions in signal handlers, and a test for such.
+
+ svn path=/trunk/; revision=218
+
+ libseed/seed-exceptions.c | 2 ++
+ libseed/seed-exceptions.h | 3 +--
+ libseed/seed-private.h | 1 +
+ libseed/seed-signals.c | 14 ++++++++++++--
+ tests/Makefile.am | 1 +
+ tests/signal-exception.js | 12 ++++++++++++
+ 6 files changed, 29 insertions(+), 4 deletions(-)
+
+commit 90bb583a92ce221e8d738cb8bce9ff936a0d5f92
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 9 06:55:07 2008 +0000
+
+ Some exception rework. Clean up API a bit.
+
+ svn path=/trunk/; revision=217
+
+ configure.ac | 2 +-
+ libseed/Makefile.am | 2 +
+ libseed/seed-engine.c | 75 ----------------------------
+ libseed/seed-engine.h | 4 +-
+ libseed/seed-exceptions.c | 118 +++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-exceptions.h | 37 ++++++++++++++
+ libseed/seed.h | 1 +
+ 7 files changed, 161 insertions(+), 78 deletions(-)
+
+commit 28aa183d6333eeb8de2b9fd05a3631978464d238
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 14:05:19 2008 +0000
+
+ Fix headers in main also.
+
+ svn path=/trunk/; revision=216
+
+ libseed/seed-builtins.c | 3 +--
+ src/main.c | 3 ++-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit fba7a5b43343aa150c6b3f3f72238a3dddbf46c2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 13:58:45 2008 +0000
+
+ Force including stdio.h...in some circumstances (read: Systems besides the ones I tested on) readline.h seems to not include it, and everything dies.
+
+ svn path=/trunk/; revision=215
+
+ libseed/seed-builtins.c | 1 +
+ tests/out-test.js | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit ad9b1b24bf51a818a5bdf739b1b4d41e83e89990
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 12:13:39 2008 +0000
+
+ Support out arguments. Add a test for out arguments.
+
+ svn path=/trunk/; revision=214
+
+ libseed/seed-engine.c | 41 ++++++++++++++++++++++++++++-------------
+ tests/Makefile.am | 1 +
+ tests/out-test.js | 13 +++++++++++++
+ 3 files changed, 42 insertions(+), 13 deletions(-)
+
+commit 7e22805dc118ad6456cf77212757aa098100fdd2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 11:53:00 2008 +0000
+
+ Fix builtin importing, and some indentation changes.
+
+ svn path=/trunk/; revision=213
+
+ libseed/seed-builtins.c | 26 +-
+ libseed/seed-engine.c | 900 ++++++++++++++++++++++++-----------------------
+ libseed/seed-signals.c | 6 +-
+ 3 files changed, 477 insertions(+), 455 deletions(-)
+
+commit 681eaf7838235d01d0cee3950c0531e9e5a4ce62
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 08:07:19 2008 +0000
+
+ Fix IDE so that we don't die when executing a read only file.
+
+
+ svn path=/trunk/; revision=212
+
+ examples/ide/ide-actions.js | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 37d41973cdd080689292482da34bd6e7ab8c754d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 07:50:35 2008 +0000
+
+ Look in /usr/share/seed for Seed.js initialization file.
+
+ svn path=/trunk/; revision=210
+
+ libseed/seed-engine.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8f28f1b8d5a95da4488e88b8895b2ea46b1e7150
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 07:37:33 2008 +0000
+
+ Fix header path to make make distcheck works.
+
+ svn path=/trunk/; revision=208
+
+ src/main.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 81e3ad807f7c53bc20dd342be2af1bfb618874e6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 05:58:27 2008 +0000
+
+ Fix configure.ac...got broken in merge.
+
+ svn path=/trunk/; revision=205
+
+ configure.ac | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4e2b2b435954f0d7c2941bf2ba9434386f1edaca
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 05:51:22 2008 +0000
+
+ Fix broken merge.
+
+ svn path=/trunk/; revision=201
+
+ examples/shader/Makefile.am | 15 -----------
+ examples/shader/ShaderView.js | 45 --------------------------------
+ examples/shader/bob.jpg | Bin 59229 -> 0 bytes
+ examples/shader/default.glsl | 24 -----------------
+ examples/shader/main.js | 57 -----------------------------------------
+ 5 files changed, 0 insertions(+), 141 deletions(-)
+
+commit e7381c9fc6897a841f037976b96ab6d40ec103c7
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 05:46:54 2008 +0000
+
+ Add Seed.quit docs.
+
+ svn path=/trunk/; revision=199
+
+ doc/runtime.html | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 9f83b5f1122b63fd10f5b99074865d9d90ee912b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 05:45:22 2008 +0000
+
+ Fix clutter-shader Makefile.
+
+ svn path=/trunk/; revision=198
+
+ examples/clutter-shader/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9b62a857108a4d2cf4081088a493ad294b01d60f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 05:44:22 2008 +0000
+
+ Some final example cleanup. Add Seed.quit.
+
+ svn path=/trunk/; revision=197
+
+ examples/Makefile.am | 2 +-
+ examples/accelgroup.js | 1 +
+ examples/actions.js | 2 +-
+ examples/clutter-shader/Makefile.am | 15 +++++++++
+ examples/clutter-shader/ShaderView.js | 45 ++++++++++++++++++++++++++
+ examples/clutter-shader/bob.jpg | Bin 0 -> 59229 bytes
+ examples/clutter-shader/default.glsl | 24 ++++++++++++++
+ examples/clutter-shader/main.js | 56 +++++++++++++++++++++++++++++++++
+ examples/clutter.js | 8 +++--
+ examples/n-oscillator.js | 6 ++-
+ libseed/seed-builtins.c | 19 +++++++++++
+ 11 files changed, 171 insertions(+), 7 deletions(-)
+
+commit b52082460d433c7002ce5d5bcc64368b83898a4f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 05:44:16 2008 +0000
+
+ Switched to /usr/bin/env seed instead of /usr/local/bin/seed
+
+
+ svn path=/trunk/; revision=196
+
+ doc/tutorial-standalone/1.js | 2 +-
+ doc/tutorial-standalone/2.js | 2 +-
+ doc/tutorial-standalone/3.js | 2 +-
+ doc/tutorial-standalone/tutorial.html | 8 ++++----
+ examples/ide/legacy/ide.js | 2 +-
+ examples/ide/legacy/toolbar.js | 2 +-
+ examples/lightsoff/lightsoff.js | 2 +-
+ extensions/Seed.js | 2 +-
+ tests/constructor-args.js | 4 ++--
+ tests/gerror.js | 2 +-
+ tests/signal-expects.js | 4 ++--
+ tests/signal-this.js | 4 ++--
+ tests/signal-userdata.js | 4 ++--
+ 13 files changed, 20 insertions(+), 20 deletions(-)
+
+commit a8ff0410c7cc26685646344da435b5082cab5728
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 04:18:52 2008 +0000
+
+ Remove the last of the assertions, everything throws exceptions now.
+
+ svn path=/trunk/; revision=195
+
+ libseed/seed-signals.c | 11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 5708babcdd6575772850fce8af5623856e7b7a67
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 04:12:22 2008 +0000
+
+ Exceptions for gobject comparison.
+
+ svn path=/trunk/; revision=194
+
+ libseed/seed-closure.h | 12 +++++-----
+ libseed/seed-engine.c | 49 +++++++++++++++++++++++++++--------------------
+ libseed/seed-signals.c | 18 +++++++---------
+ libseed/seed-signals.h | 8 +++---
+ 4 files changed, 46 insertions(+), 41 deletions(-)
+
+commit 2bc5a4e5c90424fcbba062f287604da6fbfb9b76
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 04:01:24 2008 +0000
+
+ Make seed look for extensions in /usr/share/seed also.
+
+ svn path=/trunk/; revision=193
+
+ libseed/seed-engine.c | 6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 4af00ea77011b00a86ea13338fc61dcba6eb3b96
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:56:50 2008 +0000
+
+ Make constructors more robust. Add test for constructor exceptions.
+
+ svn path=/trunk/; revision=192
+
+ libseed/seed-engine.c | 30 ++++++++++++++++++++++--------
+ tests/Makefile.am | 1 +
+ tests/constructor-args.js | 34 ++++++++++++++++++++++++++++++++++
+ 3 files changed, 57 insertions(+), 8 deletions(-)
+
+commit 48372b219f144fcd9cdb87221b0665601159c3fe
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 03:54:40 2008 +0000
+
+ Remove debugging prints.
+
+ svn path=/trunk/; revision=191
+
+ examples/lightsoff/lightsoff.js | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 4ac59f6991977ed5cac0511bbc603573c8dc280a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:43:00 2008 +0000
+
+ Add 3 new signal tests.
+
+ svn path=/trunk/; revision=190
+
+ tests/Makefile.am | 3 +++
+ tests/signal-expects.js | 17 +++++++++++++++++
+ tests/signal-this.js | 17 +++++++++++++++++
+ tests/signal-userdata.js | 17 +++++++++++++++++
+ 4 files changed, 54 insertions(+), 0 deletions(-)
+
+commit 55acacf3dd17da86f83469aae9908c5a22a5ee43
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:39:38 2008 +0000
+
+ Always pass user_data, even if null, so that functions expecting but not receiving user_data will not crash javascript core.
+
+ svn path=/trunk/; revision=189
+
+ libseed/seed-signals.c | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 2f46bd495b2bb58e87b4ab7b7dcc4793489d914c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:39:03 2008 +0000
+
+ Merge in matts lightsoff changes.
+
+ svn path=/trunk/; revision=188
+
+ examples/lightsoff/lightsoff.js | 120 ++++++++++++++++++++++++---------------
+ 1 files changed, 75 insertions(+), 45 deletions(-)
+
+commit b6abf43e260fb318c61977e2b0c8f6f6890b8904
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:10:29 2008 +0000
+
+ Keep runtime documentation in sync with recent changes.
+
+ svn path=/trunk/; revision=187
+
+ doc/runtime.html | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 3a03f66ab3a561eaed892b213de6be11e0eb29a3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 03:07:50 2008 +0000
+
+ Some signal rework.
+
+ svn path=/trunk/; revision=186
+
+ libseed/seed-closure.h | 10 ++++++----
+ libseed/seed-signals.c | 23 ++++++++++++++++-------
+ libseed/seed-signals.h | 5 +----
+ 3 files changed, 23 insertions(+), 15 deletions(-)
+
+commit ea0a4f165f6fe038fe017d90f4044cd0aa5de5ea
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 01:53:49 2008 +0000
+
+ Lots of Gtk.main_quits, and some configure cleanup.
+
+
+ svn path=/trunk/; revision=185
+
+ configure.ac | 5 +++--
+ examples/actions.js | 1 +
+ examples/clutter.js | 3 ++-
+ examples/json-packing.js | 3 ++-
+ examples/pango-fontset.js | 4 ++--
+ examples/pango.js | 4 +---
+ examples/shader/main.js | 1 +
+ 7 files changed, 12 insertions(+), 9 deletions(-)
+
+commit bc63765b311a6f29051cd0ac0a31bbe7aa312a59
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:42:29 2008 +0000
+
+ Change indentation to 4 spaces.
+
+ svn path=/trunk/; revision=184
+
+ libseed/indent.sh | 2 +-
+ libseed/seed-builtins.c | 623 +++++++++---------
+ libseed/seed-closure.c | 677 ++++++++++----------
+ libseed/seed-closure.h | 16 +-
+ libseed/seed-engine.c | 1562 +++++++++++++++++++++----------------------
+ libseed/seed-engine.h | 8 +-
+ libseed/seed-gtype.c | 275 ++++----
+ libseed/seed-private.h | 4 +-
+ libseed/seed-signals.c | 224 +++----
+ libseed/seed-structs.c | 102 ++--
+ libseed/seed-types.c | 1702 +++++++++++++++++++++++------------------------
+ 11 files changed, 2539 insertions(+), 2656 deletions(-)
+
+commit 1c62ebada21cc14c81a4b30d67c5c490e771300c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:41:15 2008 +0000
+
+ Add indent script and run it.
+
+ svn path=/trunk/; revision=183
+
+ libseed/indent.sh | 5 +
+ libseed/seed-builtins.c | 199 ++++++++++--------
+ libseed/seed-builtins.h | 5 +-
+ libseed/seed-closure.c | 349 ++++++++++++++++---------------
+ libseed/seed-closure.h | 24 +-
+ libseed/seed-engine.c | 539 ++++++++++++++++++++++++++---------------------
+ libseed/seed-engine.h | 13 +-
+ libseed/seed-gtype.c | 355 +++++++++++++++----------------
+ libseed/seed-gtype.h | 4 +-
+ libseed/seed-private.h | 5 +-
+ libseed/seed-signals.c | 47 +++--
+ libseed/seed-signals.h | 14 +-
+ libseed/seed-structs.c | 25 ++-
+ libseed/seed-structs.h | 4 +-
+ libseed/seed-types.c | 543 ++++++++++++++++++++++++++++-------------------
+ libseed/seed-types.h | 26 ++-
+ libseed/seed.h | 78 ++++---
+ 17 files changed, 1233 insertions(+), 1002 deletions(-)
+
+commit 502f763100655ab6dd843a067b7be3d6cdd2a3db
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:39:16 2008 +0000
+
+ Add GError.js to EXTRA_DIST.
+
+ svn path=/trunk/; revision=182
+
+ tests/Makefile.am | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit dea9c366d632d1dfa1f646fe1147f1f47921d52f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:32:14 2008 +0000
+
+ Fix glib property exceptions to clear the glib message before printing.
+
+ svn path=/trunk/; revision=181
+
+ libseed/seed-engine.c | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 17d9ee4b686735344fc44988f03135bbff4eb89e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:27:33 2008 +0000
+
+ Add GError test.
+
+ svn path=/trunk/; revision=180
+
+ extensions/Gio.js | 12 ++----------
+ libseed/seed-engine.c | 45 ++++++++++++++++++++++++---------------------
+ tests/gerror.js | 18 ++++++++++++++++++
+ 3 files changed, 44 insertions(+), 31 deletions(-)
+
+commit 280b119fde24cb8f5d743947c0bd803ab23c097c
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 01:26:59 2008 +0000
+
+ Check for readline, remove some unnecessary files.
+
+
+ svn path=/trunk/; revision=179
+
+ config.h.in | 3 +
+ configure.ac | 5 +
+ libseed/Makefile.in | 576 ---------------------------------------------------
+ src/Makefile.in | 530 -----------------------------------------------
+ 4 files changed, 8 insertions(+), 1106 deletions(-)
+
+commit 93bcda022cd921c12e98019a6e4d194a6a2179e1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 01:21:32 2008 +0000
+
+ Throw exceptions for GErrors out of functions.
+
+ svn path=/trunk/; revision=178
+
+ libseed/seed-engine.c | 25 ++++++++++++++++++++++---
+ 1 files changed, 22 insertions(+), 3 deletions(-)
+
+commit a248d1ebe6c6c451ffc41271f23dde906a9e9d9d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 01:10:43 2008 +0000
+
+ Check for libffi headers during configure!
+
+
+ svn path=/trunk/; revision=177
+
+ configure.ac | 35 +++++++++++++++++++++++++++++++----
+ libseed/Makefile.in | 2 ++
+ src/Makefile.in | 2 ++
+ 3 files changed, 35 insertions(+), 4 deletions(-)
+
+commit 1eec31bfe69a88003395b6b2fa86f43f638c3f78
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 00:36:08 2008 +0000
+
+ Make Gio.simple_read and Gio.simple_write verify that files are regular
+ files or symlinks.
+
+ svn path=/trunk/; revision=176
+
+ extensions/Gio.js | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit a3bf09926e15e2918cf1a3ad5abe396fd779324a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 00:27:39 2008 +0000
+
+ update IDE to use env
+
+
+ svn path=/trunk/; revision=175
+
+ examples/ide/main.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 768f06e2d47ed2bc4a62536569413a56473ebaca
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Sat Nov 8 00:24:42 2008 +0000
+
+ Added exceptions to new IDE, close window with Ctrl-W, etc.
+
+ svn path=/trunk/; revision=174
+
+ examples/ide/ide-actions.js | 28 ++++++++++++++++++++++++
+ examples/ide/ide-sourceview.js | 45 ++++++++++++++++++++++++++++++++++++---
+ examples/ide/ide-tabview.js | 4 ++-
+ examples/ide/ide-toolbar.js | 5 ++++
+ examples/ide/main.js | 8 ++----
+ 5 files changed, 80 insertions(+), 10 deletions(-)
+
+commit 214e4caf8366c1f28167741b43da8ad0e2475781
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 00:19:11 2008 +0000
+
+ Add seed_create_function and SeedFunctionCallback to public API.
+
+ svn path=/trunk/; revision=173
+
+ libseed/seed.h | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 97a7b7baf7a9a09a0e43fa698c4e943ba9d6e8a7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 8 00:11:11 2008 +0000
+
+ Replace #!/usr/local/bin/seed with #!/usr/bin/env seed in examples and
+ tests.
+
+ svn path=/trunk/; revision=172
+
+ examples/HACKING | 2 +-
+ examples/accelgroup.js | 2 +-
+ examples/actions.js | 2 +-
+ examples/calculator.js | 2 +-
+ examples/clutter.js | 2 +-
+ examples/gconf.js | 2 +-
+ examples/introspect.js | 2 +-
+ examples/json-packing.js | 2 +-
+ examples/ls.js | 2 +-
+ examples/mini-browser.js | 2 +-
+ examples/n-oscillator.js | 2 +-
+ examples/notify-test.js | 2 +-
+ examples/pango-fontset.js | 2 +-
+ examples/pango.js | 2 +-
+ examples/poppler.js | 2 +-
+ examples/quine.js | 2 +-
+ examples/repl.js | 2 +-
+ examples/shader/ShaderView.js | 2 +-
+ examples/shader/main.js | 2 +-
+ examples/soup.js | 2 +-
+ examples/vte-test.js | 2 +-
+ tests/argv.js | 4 ++--
+ tests/compare.js | 2 +-
+ tests/enum.js | 2 +-
+ tests/gobject-scope.js | 2 +-
+ tests/gsuper.js | 2 +-
+ tests/gtype.js | 2 +-
+ tests/include.js | 2 +-
+ tests/json-constructor.js | 2 +-
+ tests/json.js | 2 +-
+ tests/list-test.js | 2 +-
+ tests/namespace-exception-test.js | 2 +-
+ tests/native-closure.js | 2 +-
+ tests/print.js | 2 +-
+ tests/printf.js | 2 +-
+ tests/printprint.js | 2 +-
+ tests/property-benchmark.js | 2 +-
+ tests/property-glib-exception.js | 2 +-
+ tests/readline.js | 2 +-
+ tests/signal.js | 2 +-
+ tests/syntax-test.js | 4 ++--
+ tests/type-conversion.js | 2 +-
+ 42 files changed, 44 insertions(+), 44 deletions(-)
+
+commit f66ebd542e8071dc61e87d79d645d3b07875ddcb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 23:37:49 2008 +0000
+
+ Remove some dead code introduced in last commit.
+
+ svn path=/trunk/; revision=171
+
+ libseed/seed-types.c | 22 +---------------------
+ 1 files changed, 1 insertions(+), 21 deletions(-)
+
+commit 88a6f8eae39a804bfced6a0530e7788879c7845f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 23:34:47 2008 +0000
+
+ Fix type resolution bug introduced in adding inheritance. Propertly
+ create classes/prototypes for objects without GIBaseInfos, and also
+ properly provide methods for their interfaces.
+
+ svn path=/trunk/; revision=170
+
+ libseed/seed-engine.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 40 insertions(+), 8 deletions(-)
+
+commit c37af58774b1c87f7899037844eeefa52fd55a43
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 22:32:36 2008 +0000
+
+ Fix installation location for README, etc.
+
+
+ svn path=/trunk/; revision=169
+
+ Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 550bd24129ee563419ac62a71ab420520999a1e1
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 19:45:24 2008 +0000
+
+ Flesh out new ide. There's a bug in simple_read() that causes it to fail
+ after the first time it's used.
+
+
+ svn path=/trunk/; revision=168
+
+ examples/ide/ide-actions.js | 45 ++++++++++++++++++++++++++++++++++++++++
+ examples/ide/ide-sourceview.js | 15 +++++++++---
+ examples/ide/ide-tabheader.js | 5 +++-
+ examples/ide/ide-tabview.js | 9 ++++++++
+ examples/ide/legacy/tabview.js | 2 +-
+ examples/ide/main.js | 4 +-
+ 6 files changed, 72 insertions(+), 8 deletions(-)
+
+commit 0ea54066cc6ee2ca74fa080cbd1b869472e1978a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 19:02:16 2008 +0000
+
+ Update autotools to new IDE.
+
+
+ svn path=/trunk/; revision=167
+
+ examples/ide/Makefile.am | 20 ++++++++++++++------
+ 1 files changed, 14 insertions(+), 6 deletions(-)
+
+commit 3a136aa2a55b162b1a8ac45573705fde6fe4e74d
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 18:58:14 2008 +0000
+
+ Started new IDE (from scratch, more or less), with Robb's new GType inheritance code. Cool stuff!
+
+
+ svn path=/trunk/; revision=166
+
+ examples/ide/ide-actions.js | 70 ++++++++++++++++++
+ examples/ide/ide-sourceview.js | 65 +++++++++++++++++
+ examples/ide/ide-tab.js | 34 +++++++++
+ examples/ide/ide-tabheader.js | 23 ++++++
+ examples/ide/ide-tabview.js | 33 +++++++++
+ examples/ide/ide-toolbar.js | 27 +++++++
+ examples/ide/ide.js | 155 ----------------------------------------
+ examples/ide/legacy/ide.js | 155 ++++++++++++++++++++++++++++++++++++++++
+ examples/ide/legacy/tabview.js | 77 ++++++++++++++++++++
+ examples/ide/legacy/toolbar.js | 143 ++++++++++++++++++++++++++++++++++++
+ examples/ide/main.js | 52 +++++++++++++
+ examples/ide/tabview.js | 77 --------------------
+ examples/ide/toolbar.js | 143 ------------------------------------
+ 13 files changed, 679 insertions(+), 375 deletions(-)
+
+commit 53ca84558223b8862e40a3db8ca5cf8cb3bb9423
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 16:45:54 2008 +0000
+
+ Fix Robb's poppler example. Now runs, doesn't let you go past the first
+ page (especially in single page PDFs).
+
+
+ svn path=/trunk/; revision=165
+
+ examples/poppler.js | 49 +++++++++++++++++++++++++++++++------------------
+ 1 files changed, 31 insertions(+), 18 deletions(-)
+
+commit 8396a8bd5cae8fadc4b48519c310b9ab92996aec
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 16:30:55 2008 +0000
+
+ Re-added authors file; added splitview and fixed positioning of shader example.
+
+ svn path=/trunk/; revision=164
+
+ AUTHORS | 3 +++
+ examples/shader/main.js | 19 ++++++++++++-------
+ 2 files changed, 15 insertions(+), 7 deletions(-)
+
+commit 334a96463779821b0da7da0c2c7a172a8aa0e471
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 16:12:31 2008 +0000
+
+ Fix automake some more.
+
+ svn path=/trunk/; revision=163
+
+ tests/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3b84023f64896afd19d9be465d132132a094894f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 16:10:51 2008 +0000
+
+ Remove useless automake backups; add make-test.py to extra-dist; clean up HACKING file.
+
+ svn path=/trunk/; revision=162
+
+ examples/HACKING | 20 +++++++++++++++-----
+ libseed/Makefile.am.bak | 33 ---------------------------------
+ src/Makefile.am.bak | 31 -------------------------------
+ tests/Makefile.am | 3 ++-
+ 4 files changed, 17 insertions(+), 70 deletions(-)
+
+commit cfec197af96215f262507fdce94d80fc14529cf8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 14:14:24 2008 +0000
+
+ Make a reasonable alpha example for clutter test.
+
+ svn path=/trunk/; revision=161
+
+ examples/clutter.js | 27 +++++++++++++++++++++++----
+ 1 files changed, 23 insertions(+), 4 deletions(-)
+
+commit 47c25f4c7fc36eefea41fda56578578a7d8085bd
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 14:10:37 2008 +0000
+
+ Autotools warnings and spelling mistakes.
+
+ svn path=/trunk/; revision=160
+
+ configure.ac | 2 +-
+ examples/Makefile.am | 2 +-
+ tests/Makefile.am | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 515c799889f387118b76ba1ae9843a86d598bfc6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 07:34:11 2008 +0000
+
+ Add test of JSON.stringify and JSON.parse.
+
+ svn path=/trunk/; revision=159
+
+ tests/Makefile.am | 2 ++
+ tests/json.js | 14 ++++++++++++++
+ tests/printf.js | 11 +++++++++++
+ 3 files changed, 27 insertions(+), 0 deletions(-)
+
+commit db4122d774a9515ca0e5ee2a2b4379dd9f7f1aeb
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 07:32:49 2008 +0000
+
+ Re-added 'make test'.
+
+
+ svn path=/trunk/; revision=158
+
+ Makefile.am | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit d20c763ded370182f5b77799b1e84dd619e38f32
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 07:26:35 2008 +0000
+
+ Pango example has UI for changing font size and face.
+
+
+ svn path=/trunk/; revision=157
+
+ examples/pango.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 files changed, 48 insertions(+), 7 deletions(-)
+
+commit b29dbdd47a80f69f0ba79303165da98664370a20
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 07:20:34 2008 +0000
+
+ Document subclassing.
+
+ svn path=/trunk/; revision=156
+
+ doc/runtime.html | 48 +++++++++++++++++++++++++++++++++++++++++++++---
+ tests/Makefile.am | 2 +-
+ tests/gsuper.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/subclass.js | 53 -----------------------------------------------------
+ 4 files changed, 99 insertions(+), 57 deletions(-)
+
+commit faa427fc9e276a270b31899c6e077cbed4625b00
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 06:38:17 2008 +0000
+
+ Update runtime documentation. Change gobject_parent to gsuper.
+
+ svn path=/trunk/; revision=155
+
+ doc/runtime.html | 8 +++++++-
+ libseed/seed-types.c | 2 +-
+ tests/subclass.js | 6 +++---
+ 3 files changed, 11 insertions(+), 5 deletions(-)
+
+commit 23ccad57a845eca2199728a726d051153f4ec985
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 06:04:35 2008 +0000
+
+ Pass instance as this to instance_init functions.
+
+ svn path=/trunk/; revision=154
+
+ libseed/seed-gtype.c | 10 ++++++----
+ tests/gtype.js | 6 +++---
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+commit eaf6f3e2023cdf170fc1449a0d1e52923b021802
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 05:06:01 2008 +0000
+
+ Pass prototype into class_init.
+
+ svn path=/trunk/; revision=153
+
+ libseed/seed-gtype.c | 13 ++++++++++++-
+ tests/gtype.js | 8 +++++++-
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit a68cd4933f0a3695b2c059d56fce071b0ad8e514
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Fri Nov 7 04:51:23 2008 +0000
+
+ Fix up make-test. Should handle multilines and escaped stuff "properly".
+
+
+ svn path=/trunk/; revision=152
+
+ tests/make-test.py | 30 +++++++++++++++++-------------
+ 1 files changed, 17 insertions(+), 13 deletions(-)
+
+commit a64cab405092e6859e67fd517c40e086e7ad9129
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 04:42:04 2008 +0000
+
+ Check if value is Object before checking if object is function. Add
+ gtype definition test.
+
+ svn path=/trunk/; revision=151
+
+ libseed/seed-gtype.c | 4 ++--
+ tests/Makefile.am | 1 +
+ tests/gtype.js | 28 ++++++++++++++++++++++++++++
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+commit 0c5197855527846b68454d6bf859888ee6cddc6b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 04:29:43 2008 +0000
+
+ Make class and instance init functions work.
+
+ svn path=/trunk/; revision=150
+
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-gtype.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 103 insertions(+), 2 deletions(-)
+
+commit a71f2337a2eaa75980294e123fc3d490c352a147
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Nov 7 03:52:59 2008 +0000
+
+ Rework GObject subclassing. Now looks like.
+ HelloWindow = new GType({parent: Gtk.Window, name: "HelloWindow"}).
+ Still need to do instance/class initialization.
+
+ svn path=/trunk/; revision=149
+
+ libseed/Makefile.am | 2 +
+ libseed/Makefile.in | 6 ++-
+ libseed/seed-builtins.c | 72 ------------------------------
+ libseed/seed-engine.c | 77 +++++++++++++++++----------------
+ libseed/seed-gtype.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-gtype.h | 27 +++++++++++
+ libseed/seed-private.h | 1 +
+ 7 files changed, 186 insertions(+), 110 deletions(-)
+
+commit 35b456abc0e62ed757dfefddea7c7c269dca99a8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 16:43:56 2008 +0000
+
+ Make seed_gobject_get_class_for_gtype propertly construct class for
+ types without introspection data.
+
+ svn path=/trunk/; revision=148
+
+ libseed/seed-builtins.c | 19 +++++++++++++++++++
+ libseed/seed-engine.c | 12 +++++++-----
+ tests/subclass.js | 4 ++--
+ 3 files changed, 28 insertions(+), 7 deletions(-)
+
+commit 696ddeb2a062fe54c02133cd4f47c8b861977a39
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 16:35:28 2008 +0000
+
+ Add Seed.define_gtype. Takes as it's arguments a GObject class, new
+ class name, and function to be called on instance initialization.
+ Doesn't actually do much yet, but can construct classes, and they
+ "work".
+
+ svn path=/trunk/; revision=147
+
+ libseed/seed-builtins.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 52 insertions(+), 0 deletions(-)
+
+commit be188614532324e205761136a46094c9b92140cb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 15:28:37 2008 +0000
+
+ Make subclass example tie up the prototype chain and test methods.
+
+ svn path=/trunk/; revision=146
+
+ tests/subclass.js | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit ffe55022802591a65416021ee455a1bc328a3dec
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 15:10:29 2008 +0000
+
+ Add subclass test. Also tests sub-sub-classing, and that subclassing
+ from non GObjects does't crash things.
+
+ svn path=/trunk/; revision=145
+
+ tests/Makefile.am | 1 +
+ tests/subclass.js | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+), 0 deletions(-)
+
+commit c635ec07f581d893fc36a6e7d525df1eb4c46729
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 15:00:39 2008 +0000
+
+ Implement subclassing (in a sense...). Fix reference counting once and
+ for all!
+
+
+ svn path=/trunk/; revision=144
+
+ libseed/seed-engine.c | 3 ++-
+ libseed/seed-types.c | 46 +++++++++++++++++++++++++++++++++++++++++++---
+ libseed/seed-types.h | 4 ++++
+ 3 files changed, 49 insertions(+), 4 deletions(-)
+
+commit 6e52a26bfa7bcc1695cfe379bb67bc3bb45486b4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 13:15:08 2008 +0000
+
+ Update documentation to signal changes.
+
+ svn path=/trunk/; revision=143
+
+ doc/runtime.html | 4 ++--
+ doc/tutorial-standalone/1.js | 10 +++++-----
+ doc/tutorial-standalone/2.js | 10 +++++-----
+ doc/tutorial-standalone/3.js | 12 ++++++------
+ doc/tutorial-standalone/tutorial.html | 22 +++++++++++-----------
+ 5 files changed, 29 insertions(+), 29 deletions(-)
+
+commit 8226fc15d3095d0dacc0c9ecc4138cb31d2637b9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 13:12:58 2008 +0000
+
+ Update examples to signal change.
+
+ svn path=/trunk/; revision=142
+
+ examples/actions.js | 6 +++---
+ examples/calculator.js | 4 ++--
+ examples/clutter.js | 4 ++--
+ examples/ide/ide.js | 2 +-
+ examples/ide/tabview.js | 6 +++---
+ examples/ide/toolbar.js | 12 ++++++------
+ examples/lightsoff/lightsoff.js | 6 +++---
+ examples/mini-browser.js | 18 +++++++++---------
+ examples/n-oscillator.js | 10 +++++-----
+ examples/notify-test.js | 2 +-
+ examples/pango.js | 14 +++++++-------
+ examples/poppler.js | 12 ++++++------
+ examples/shader/ShaderView.js | 2 +-
+ examples/vte-test.js | 4 ++--
+ 14 files changed, 51 insertions(+), 51 deletions(-)
+
+commit 946c2ae133b72bbe73d2251db8b616c21332f078
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 13:09:51 2008 +0000
+
+ Update tests to signal changes.
+
+ svn path=/trunk/; revision=141
+
+ tests/signal.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4781aa7775353f28390b852163f8a6a1c1de3026
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 13:09:36 2008 +0000
+
+ Change object.signal_map to object.signal.map to not pollute the
+ property list on the object so much.
+
+ svn path=/trunk/; revision=140
+
+ libseed/seed-signals.c | 35 ++++++++++++++++++++++-------------
+ 1 files changed, 22 insertions(+), 13 deletions(-)
+
+commit 45ee098238d21e84d6f1895eb73c61c7067eb44a
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Nov 6 07:17:03 2008 +0000
+
+ Update pango example.
+
+
+ svn path=/trunk/; revision=139
+
+ examples/pango.js | 143 ++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 121 insertions(+), 22 deletions(-)
+
+commit dba06815ac1b07ea53912f366634d3fbe73b50b9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 06:43:23 2008 +0000
+
+ Fix native closure argument numbers.
+
+ svn path=/trunk/; revision=138
+
+ libseed/seed-closure.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 346053203652e27e0005a4eac6f3323f443292e5
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 06:18:39 2008 +0000
+
+ Add GtkAction example. Menus, accels, etc...
+
+ svn path=/trunk/; revision=137
+
+ examples/Makefile.am | 2 +
+ examples/actions.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 62 insertions(+), 0 deletions(-)
+
+commit 340b12378d6b72c1ba7292b338f219be5ca84e0d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 04:40:16 2008 +0000
+
+ Install documentation and examples to doc directory.
+
+ svn path=/trunk/; revision=136
+
+ README | 1 +
+ doc/Makefile.am | 2 ++
+ doc/tutorial-standalone/Makefile.am | 14 ++++++++++++++
+ examples/Makefile.am | 20 ++++++++++++++++++++
+ examples/ide/Makefile.am | 7 +++++++
+ examples/lightsoff/Makefile.am | 5 +++++
+ examples/lightsoff/lightsoff.js | 4 ++--
+ examples/shader/Makefile.am | 7 +++++++
+ extensions/Makefile.am | 2 +-
+ 9 files changed, 59 insertions(+), 3 deletions(-)
+
+commit fe1fd9855629b07a86c92bc1bff436ac27166d6f
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Thu Nov 6 01:05:52 2008 +0000
+
+ Use stock keybindings some place....
+
+
+ svn path=/trunk/; revision=135
+
+ examples/ide/toolbar.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit a9598d859e6f66603aa11bd0da3296c74a59beeb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Nov 6 00:52:32 2008 +0000
+
+ Dear racarr, read patches before you apply them. Thanks, racarr.
+
+ svn path=/trunk/; revision=134
+
+ libseed/seed-builtins.c | 4 ++--
+ libseed/seed-types.c | 6 +++---
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 603ad8f21dc5bc85a6481d1f0ac85dc242d31bad
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 5 20:28:47 2008 +0000
+
+ More type cleanup.
+
+
+ svn path=/trunk/; revision=133
+
+ libseed/seed-closure.c | 2 +-
+ libseed/seed-engine.c | 28 ++++++++++++++--------------
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-structs.c | 2 +-
+ libseed/seed-types.c | 6 +++---
+ 5 files changed, 20 insertions(+), 20 deletions(-)
+
+commit 495699d1d6f7ad92d189926ffaa5735e44c95797
+Author: Tim Horton <hortont@src.gnome.org>
+Date: Wed Nov 5 19:59:17 2008 +0000
+
+ Add test-maker; update runtime docs (not complete yet); keybindings for
+ IDE.
+
+
+ svn path=/trunk/; revision=132
+
+ doc/runtime.html | 142 ++++++++++++++++++++++++++++++++++++++++++++--
+ examples/ide/ide.js | 1 +
+ examples/ide/tabview.js | 4 +-
+ examples/ide/toolbar.js | 66 +++++++++++++++++-----
+ tests/make-test.py | 50 ++++++++++++++++
+ tests/run-tests.py | 2 +-
+ 6 files changed, 240 insertions(+), 25 deletions(-)
+
+commit 96d227a87b69b1a4369ea06d826c25bf98f9a7d8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 14:40:57 2008 +0000
+
+ Add a JSON packing example. Clean up VTE a little.
+
+ svn path=/trunk/; revision=131
+
+ examples/Makefile.am | 1 +
+ examples/json-packing.js | 28 ++++++++++++++++++++++++++++
+ examples/vte-test.js | 10 +++++++++-
+ 3 files changed, 38 insertions(+), 1 deletions(-)
+
+commit 5768ea68b6ae840a456f437dc8a77d3b5e78b074
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 14:39:53 2008 +0000
+
+ Add Gtk.Box.pack convenience function, packs a box from an array of key/value pairs.
+
+ svn path=/trunk/; revision=130
+
+ extensions/Gtk.js | 26 ++++++++++++++++++++++++++
+ extensions/Makefile.am | 2 +-
+ 2 files changed, 27 insertions(+), 1 deletions(-)
+
+commit e42cb1d1ef20afb86f8db93b94d8d372447c5cfc
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 12:34:53 2008 +0000
+
+ Avoid regenerating native closures for the duration of a functions
+ lifetime. It's (comparatively) expensive.
+
+ svn path=/trunk/; revision=129
+
+ libseed/seed-closure.c | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 3240f3960f8377bcd5e4d9c8e8a73970f326c47c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 12:16:43 2008 +0000
+
+ More exceptions and some random cleanup, courtesy of Matt. Fix typo in
+ last commit.
+
+ svn path=/trunk/; revision=128
+
+ libseed/seed-builtins.c | 94 ++++++++++++++++++++++++++++++-----------------
+ libseed/seed-engine.c | 16 ++++----
+ libseed/seed-engine.h | 4 +-
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-structs.c | 3 +-
+ libseed/seed-types.c | 27 ++++++++-----
+ libseed/seed-types.h | 4 +-
+ libseed/seed.h | 4 +-
+ src/main.c | 5 +-
+ 9 files changed, 97 insertions(+), 62 deletions(-)
+
+commit 3dbe21c686de4a6c79a475b5dca01f2353f35b83
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 12:11:09 2008 +0000
+
+ Add example demonstrating automatic conversion of Javascript
+ function->GClosure to create GTK accelerators.
+
+ svn path=/trunk/; revision=127
+
+ examples/Makefile.am | 1 +
+ examples/accelgroup.js | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 7af5a465684df0763abaeb315f112007be9d32f6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 12:07:29 2008 +0000
+
+ Rename SeedClosurePrivates to SeedNativeClosure. Move SeedClosure into
+ seed-closure.h. Add auto-conversion of function->SeedClosure in case
+ where function expects a type of GClosure.
+
+ svn path=/trunk/; revision=126
+
+ libseed/seed-builtins.c | 24 ++++++++----------------
+ libseed/seed-closure.c | 33 +++++++++++++++++++++++++++------
+ libseed/seed-closure.h | 16 +++++++++++++---
+ libseed/seed-signals.h | 7 -------
+ libseed/seed-types.c | 25 ++++++++++++++++++++-----
+ 5 files changed, 68 insertions(+), 37 deletions(-)
+
+commit b448f95c091692395b3ea57c337498e3a8e785be
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 11:43:05 2008 +0000
+
+ Implement return types from native closures. Make example with clutter
+ alpha.
+
+ svn path=/trunk/; revision=125
+
+ examples/clutter.js | 18 +++++++++-
+ libseed/seed-closure.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 108 insertions(+), 5 deletions(-)
+
+commit 1e445d4fd396ddb35b640441ccf247a00082af13
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 11:10:57 2008 +0000
+
+ Add pango fontset example, queries fontsets on system and prints. Needs
+ to be worked in to pango example (Tim!).
+
+ svn path=/trunk/; revision=124
+
+ examples/Makefile.am | 1 +
+ examples/pango-fontset.js | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 317c4a3737e8a0d0f9c4f590b408a3e390e7817e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:56:45 2008 +0000
+
+ Automatically generate native closures when functions except
+ GI_INFO_TYPE_CALLBACK and JavaScript functions are passed. Allows
+ JavaScript functions to be passed in to things like
+ gtk_container_foreach transparently.
+
+ svn path=/trunk/; revision=123
+
+ libseed/seed-types.c | 5 ++++-
+ tests/native-closure.js | 3 +--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit dcb8f84fb0730d6ec7e3adbf4d29deac6c23718c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:54:08 2008 +0000
+
+ Move seed-closure.c, seed-closure.h into their own files. Add
+ seed_make_closure.
+
+ svn path=/trunk/; revision=122
+
+ libseed/Makefile.am | 2 +
+ libseed/Makefile.in | 7 +-
+ libseed/seed-builtins.c | 257 +----------------------------------------
+ libseed/seed-builtins.h | 10 --
+ libseed/seed-closure.c | 297 +++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-closure.h | 39 ++++++
+ libseed/seed-engine.c | 1 +
+ libseed/seed-private.h | 1 +
+ libseed/seed-types.c | 5 +
+ 9 files changed, 352 insertions(+), 267 deletions(-)
+
+commit 4406daf47c42b7c3fa2415a41c3c30ef67dad024
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:40:09 2008 +0000
+
+ Add finalize handler for Seed native closure, and store more data in the
+ privates (so as to free the cif...).
+
+ svn path=/trunk/; revision=121
+
+ libseed/seed-builtins.c | 22 ++++++++++++++--------
+ libseed/seed-builtins.h | 11 +++++++++++
+ libseed/seed-types.c | 8 ++++++--
+ 3 files changed, 31 insertions(+), 10 deletions(-)
+
+commit 273a19bd378761d13cc9791ea90549d435ee4994
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:24:54 2008 +0000
+
+ Give seed native callbacks their own class.
+
+ svn path=/trunk/; revision=120
+
+ libseed/seed-builtins.c | 26 +++++++++++++++++++++++++-
+ libseed/seed-structs.h | 1 +
+ 2 files changed, 26 insertions(+), 1 deletions(-)
+
+commit 1a0e300a25654fa9f88f55077f8b23047094ae14
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:19:46 2008 +0000
+
+ Type conversion exception test.
+
+ svn path=/trunk/; revision=119
+
+ tests/Makefile.am | 1 +
+ tests/type-conversion.js | 28 ++++++++++++++++++++++++++++
+ 2 files changed, 29 insertions(+), 0 deletions(-)
+
+commit ba174862ad290210bf25b9433bf0f60a970833cc
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:05:34 2008 +0000
+
+ Add test for native closures.
+
+ svn path=/trunk/; revision=118
+
+ tests/Makefile.am | 3 ++-
+ tests/native-closure.js | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 1 deletions(-)
+
+commit 810df46ca7a89b6df149db8f2dd72fea873a1348
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 10:02:24 2008 +0000
+
+ Add Seed.closure_native. Takes as it's first argument a Javascript
+ function, and as it's second argument, a type signature (i.e.
+ Gtk.Callback), and constructs a boxed C function pointer that when
+ called invokes, a handler, which performs type conversion and invokes
+ the javascrpit function. Useful for things like pago_fontset_foreach,
+ etc...
+
+ svn path=/trunk/; revision=117
+
+ libseed/seed-builtins.c | 267 +++++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-private.h | 2 +
+ libseed/seed-types.c | 37 ++++---
+ 3 files changed, 292 insertions(+), 14 deletions(-)
+
+commit ff21955a2e8734fc7c9be79824ce03b284611d95
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 06:31:52 2008 +0000
+
+ Fix a leftover function from exception rework.
+
+ svn path=/trunk/; revision=116
+
+ libseed/seed-types.c | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 7a3af09e9f0102b58c8bed3365abc31c68b99786
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 03:58:35 2008 +0000
+
+ Add masks for flags.
+
+ svn path=/trunk/; revision=115
+
+ libseed/seed-engine.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 8cf0c7943fd2c9998872076dac2aee5126c5d338
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 03:53:04 2008 +0000
+
+ Add Seed.closure, allows you to make GClosures to pass in to things like
+ GtkAccelGroups. Make flags work.
+
+ svn path=/trunk/; revision=114
+
+ libseed/seed-builtins.c | 37 +++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.c | 4 +++-
+ libseed/seed-signals.c | 9 +--------
+ libseed/seed-signals.h | 14 ++++++++++++++
+ libseed/seed-types.c | 11 ++++++++---
+ 5 files changed, 63 insertions(+), 12 deletions(-)
+
+commit 7b72f6b9dfb0394bae499558e6225f5b203f4d9b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 01:47:15 2008 +0000
+
+ Make exceptions in constructor property conversion work.
+
+ svn path=/trunk/; revision=113
+
+ libseed/seed-engine.c | 16 ++++++++++------
+ 1 files changed, 10 insertions(+), 6 deletions(-)
+
+commit e9ce323843c14e1c1e91c073eb2c2b29ffd328f9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Nov 5 01:40:01 2008 +0000
+
+ Finish biggiantexceptionrework. There are fewer ways to crash seed now.
+
+ svn path=/trunk/; revision=112
+
+ libseed/seed-engine.c | 29 +++++++++---------
+ libseed/seed-types.c | 77 +++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 64 insertions(+), 42 deletions(-)
+
+commit 9a3db523dadd9bd5a90f92b21472aff576c6b97d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 23:10:13 2008 +0000
+
+ Massive exception rework. Type conversion functions now propogate
+ exceptions. Free bonus: Increase radius of blur on spinning bob dylan to
+ something visible.
+
+ svn path=/trunk/; revision=111
+
+ examples/shader/default.glsl | 4 +-
+ libseed/seed-builtins.c | 22 +++---
+ libseed/seed-engine.c | 45 +++++-----
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-types.c | 202 +++++++++++++++++++++--------------------
+ libseed/seed-types.h | 62 +++++++------
+ libseed/seed.h | 54 ++++++------
+ 7 files changed, 198 insertions(+), 193 deletions(-)
+
+commit 758e119ab0fd06e7266bb9d55c34b2bf4db74663
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 12:22:53 2008 +0000
+
+ More example cleanup.
+
+ svn path=/trunk/; revision=110
+
+ examples/calculator.js | 12 ++++++------
+ examples/clutter.js | 6 ++++--
+ examples/gconf.js | 1 +
+ examples/introspect.js | 3 ++-
+ examples/ls.js | 7 +++++--
+ examples/mini-browser.js | 6 +++++-
+ examples/n-oscillator.js | 5 +++++
+ examples/poppler.js | 8 +++++---
+ examples/quine.js | 2 +-
+ 9 files changed, 34 insertions(+), 16 deletions(-)
+
+commit 4641cab933cacffa0bafec8475048dd8a7fce3fa
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 11:57:23 2008 +0000
+
+ Some example clean up, in the never ending march towards release.
+
+ svn path=/trunk/; revision=109
+
+ examples/clutter.js | 6 +++---
+ examples/notify-test.js | 3 ++-
+ examples/shader/default.glsl | 33 +++++++++++++++++++++++----------
+ 3 files changed, 28 insertions(+), 14 deletions(-)
+
+commit 3e98c6ba21a220d31db36447abe153e297e38a0a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 10:20:53 2008 +0000
+
+ Add index of examples.
+
+ svn path=/trunk/; revision=108
+
+ examples/HACKING | 18 ++++++++++++++++++
+ examples/Makefile.am | 3 ++-
+ 2 files changed, 20 insertions(+), 1 deletions(-)
+
+commit 36d06155b79bf949dc6f73499f4fe9410dfa9368
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 10:09:58 2008 +0000
+
+ Mini-pdf viewer.
+
+ svn path=/trunk/; revision=107
+
+ examples/Makefile.am | 1 +
+ examples/poppler.js | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 131 insertions(+), 0 deletions(-)
+
+commit 765433c7c6b1bceed858e17b18ba32cde955bc29
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 09:11:14 2008 +0000
+
+ Constants.
+
+ svn path=/trunk/; revision=106
+
+ libseed/seed-engine.c | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit ded2614c899c0b5a7126cc45d0a55ec1b2899a3b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 08:52:26 2008 +0000
+
+ Add SeedCallback class. For things like GtkCallback, sometime later
+ figure out libffi and make it work.
+
+ svn path=/trunk/; revision=105
+
+ libseed/seed-engine.c | 31 ++++++++++++++++++++++++++++++-
+ libseed/seed-engine.h | 1 +
+ libseed/seed-types.c | 1 +
+ 3 files changed, 32 insertions(+), 1 deletions(-)
+
+commit a0f6e0a0221a34fcbca65ecda73999e6093abd94
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 07:41:52 2008 +0000
+
+ More exceptions.
+
+ svn path=/trunk/; revision=104
+
+ libseed/seed-engine.c | 24 +++++++++++++++++++++---
+ 1 files changed, 21 insertions(+), 3 deletions(-)
+
+commit e1a1cb2e59f47bc5007dde35c48fcc875396bb3b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 07:24:43 2008 +0000
+
+ Seed.import_namespace should throw an exception if it gets 0 arguments.
+
+ svn path=/trunk/; revision=103
+
+ libseed/seed-engine.c | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 7136b4e6efb2f46d87fd099dae2f592d58e60922
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 05:43:44 2008 +0000
+
+ indent -nbad -bap -nbc -bbo -hnl -br -brs -c33 -cd33 -ncdb -ce -ci4
+ -cli0 -d0 -di1 -nfc1 -i8 -ip0 -l80 -lp -npcs -nprs -npsl
+ -sai -saf -saw -ncs -nsc -sob -nfca -cp33 -ss -ts8 -il1
+
+ svn path=/trunk/; revision=102
+
+ libseed/seed-builtins.c | 322 +++++------
+ libseed/seed-builtins.h | 42 +-
+ libseed/seed-engine.c | 1459 ++++++++++++++++++++++-------------------------
+ libseed/seed-engine.h | 18 +-
+ libseed/seed-private.h | 4 +-
+ libseed/seed-signals.c | 238 ++++-----
+ libseed/seed-signals.h | 5 +-
+ libseed/seed-structs.c | 128 ++---
+ libseed/seed-structs.h | 4 +-
+ libseed/seed-types.c | 1355 +++++++++++++++++++++-----------------------
+ libseed/seed-types.h | 69 +--
+ libseed/seed.h | 71 ++--
+ 12 files changed, 1744 insertions(+), 1971 deletions(-)
+
+commit 6713f08f2d2dec540d27c88347f554e39df7fe4c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 05:38:35 2008 +0000
+
+ Convert functions passed as arguments with dlsym. I.e.
+ Clutter.alpha_sine_inc. Makes clutter effects work.
+
+ svn path=/trunk/; revision=101
+
+ examples/clutter.js | 48 +++++++++++++++++++++++++++++++++++++++---------
+ libseed/seed-types.c | 22 ++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 9 deletions(-)
+
+commit f1547f4527399545f0313160562dabd7988799f3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 04:52:31 2008 +0000
+
+ Fix silly bug. Unions work now.
+
+ svn path=/trunk/; revision=100
+
+ examples/pango.js | 5 ++---
+ libseed/seed-structs.c | 35 ++++++++++++++++++++++++++++++-----
+ libseed/seed-types.c | 6 +++++-
+ 3 files changed, 37 insertions(+), 9 deletions(-)
+
+commit 34b498edb23135180f492e74d57464d0ca82efa4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 04:29:08 2008 +0000
+
+ More builtins work. Call g_thread_init in main. Add JSON.stringify, etc
+
+ svn path=/trunk/; revision=99
+
+ examples/Makefile.am | 1 -
+ examples/json2.js | 481 -------------------------------------------------
+ examples/repl.js | 1 -
+ extensions/Gio.js | 41 +++--
+ extensions/Seed.js | 490 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/main.c | 1 +
+ 6 files changed, 504 insertions(+), 511 deletions(-)
+
+commit 91bfb9eb82c3d1d265b0dae0ab3de1c95792bb72
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 04:12:10 2008 +0000
+
+ Fix scope problem.
+
+ svn path=/trunk/; revision=98
+
+ extensions/Gio.js | 14 ++++++++------
+ 1 files changed, 8 insertions(+), 6 deletions(-)
+
+commit fbc56cdfcf4c906a2f1948367f3f65e974d901f2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 03:05:15 2008 +0000
+
+ Add simple soup example. Not very useful as soup isn't very bindable
+ right now.
+
+ svn path=/trunk/; revision=97
+
+ examples/Makefile.am | 1 +
+ examples/soup.js | 11 +++++++++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit d0f1183f119493513039ea4c0daffa66704f985c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 02:49:07 2008 +0000
+
+ Add GConf example. Make IDE use GEdit settings.
+
+ svn path=/trunk/; revision=96
+
+ examples/Makefile.am | 1 +
+ examples/gconf.js | 8 ++++++++
+ examples/ide/ide.js | 6 +++++-
+ 3 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 9b5c21cf12b14f58179f7b944a0ecd88ca5cf1b3
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 02:16:16 2008 +0000
+
+ Add Seed.setTimeout, and gives lightsoff an animation. Thanks matt!.
+ Some random IDE changes from Tim.
+
+ svn path=/trunk/; revision=95
+
+ examples/ide/ide.js | 2 +
+ examples/lightsoff/lightsoff.js | 43 ++++++++++++++++++++++++++++++++++++++-
+ libseed/seed-builtins.c | 41 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 85 insertions(+), 1 deletions(-)
+
+commit 85f51ea29bad3b8cd56ecee3f92b6663f7162113
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 02:12:31 2008 +0000
+
+ More build system fixes. We can build tarballs now!
+
+ svn path=/trunk/; revision=94
+
+ Makefile.am | 2 +-
+ configure.ac | 7 +++++++
+ doc/tutorial-standalone/Makefile.am | 2 +-
+ extensions/Makefile.am | 2 +-
+ 4 files changed, 10 insertions(+), 3 deletions(-)
+
+commit d75f9232a7c9545e71340c2ead97917eddcdc1b7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 02:03:28 2008 +0000
+
+ Merge in tims runtime documentation. Pango example. Fix permissions.
+ Build system work.
+
+ svn path=/trunk/; revision=93
+
+ Makefile.am | 6 ++-
+ doc/Makefile.am | 7 ++
+ doc/runtime.html | 115 +++++++++++++++++++++++++++++++++++
+ doc/tutorial-standalone/Makefile.am | 15 +++++
+ examples/Makefile.am | 20 ++++++
+ examples/ide/Makefile.am | 8 +++
+ examples/lightsoff/Makefile.am | 7 ++
+ examples/pango.js | 57 +++++++++++++++++
+ examples/shader/Makefile.am | 8 +++
+ tests/Makefile.am | 21 ++++++
+ 10 files changed, 263 insertions(+), 1 deletions(-)
+
+commit 48c5299f522121773233f96826b301440d3f5993
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Tue Nov 4 01:58:45 2008 +0000
+
+ Add printf. Build system fixes.
+
+ svn path=/trunk/; revision=92
+
+ Makefile.am | 3 +-
+ Makefile.am.bak | 33 -
+ Makefile.in | 762 ---
+ configure |17388 ------------------------------------------------
+ configure.ac | 1 +
+ configure.ac.bak | 42 -
+ extensions/Makefile.am | 4 +
+ extensions/Seed.js | 132 +
+ libseed/seed-engine.c | 7 +
+ 9 files changed, 146 insertions(+), 18226 deletions(-)
+
+commit 4ad306f7a60fe0038d5992bd300ce0c809cc42e6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 12:22:19 2008 +0000
+
+ Introspection example.
+
+ svn path=/trunk/; revision=91
+
+ examples/introspect.js | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 1246197cfd0aa2b3531b499bf999cda54c2eae5c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 12:13:24 2008 +0000
+
+ Add Seed.fork.
+
+ svn path=/trunk/; revision=90
+
+ libseed/seed-builtins.c | 15 +++++++++++++++
+ libseed/seed-engine.c | 14 ++++++--------
+ 2 files changed, 21 insertions(+), 8 deletions(-)
+
+commit 23c44ac3c822446c3e7ca0083fd2efcf07f8d42d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 11:52:31 2008 +0000
+
+ Live syntax checking in IDE works.
+
+ svn path=/trunk/; revision=89
+
+ examples/ide/ide.js | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit cdd7bbdcab4aba376d1bbb493da6ad46e7fb3485
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 11:21:54 2008 +0000
+
+ Add introspection example and json pretty printer (from json.org).
+
+ svn path=/trunk/; revision=88
+
+ examples/json2.js | 481 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ examples/repl.js | 1 +
+ 2 files changed, 482 insertions(+), 0 deletions(-)
+
+commit e28100fc1879610e84a6fd1607d546e07152b4f9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 10:45:34 2008 +0000
+
+ Add Seed.introspect and merge in IDE changes (Thanks Tim!).
+
+ svn path=/trunk/; revision=87
+
+ examples/ide/exception.svg | 11 +++---
+ examples/ide/ide.js | 30 +++++++++++------
+ examples/ide/tabview.js | 18 +++-------
+ libseed/seed-builtins.c | 74 ++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-builtins.h | 8 +++++
+ libseed/seed-types.c | 2 +-
+ libseed/seed-types.h | 2 +-
+ 7 files changed, 115 insertions(+), 30 deletions(-)
+
+commit 85a4f69f138f3523a0112e996c26afedbed8f19f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 10:38:31 2008 +0000
+
+ Add a test case for the previous commit.
+
+ svn path=/trunk/; revision=86
+
+ tests/property-glib-exception.js | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 4d54aea9f1b9926eccb34110ab5a252d06421893
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 10:32:23 2008 +0000
+
+ Throw exceptions when GObject properties are set to out of range values.
+
+ svn path=/trunk/; revision=85
+
+ libseed/seed-engine.c | 21 ++++++++++++++++++++-
+ libseed/seed-engine.h | 2 +-
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 937c6db6cd1f5cefcd0aabfde5d3732ad59a165c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 10:15:26 2008 +0000
+
+ Add some more exceptions.
+
+ svn path=/trunk/; revision=84
+
+ libseed/seed-builtins.c | 30 ++++++++++++++++++++++++++++--
+ 1 files changed, 28 insertions(+), 2 deletions(-)
+
+commit 7e00f32777afb355786b7a44d3d156a0532ea920
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 10:07:38 2008 +0000
+
+ Set program name for the interpreter.
+
+ svn path=/trunk/; revision=83
+
+ src/main.c | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+commit e6770ae69876e7900a4aba695b911e7141697722
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 09:52:47 2008 +0000
+
+ Add namespace exception test.
+
+ svn path=/trunk/; revision=82
+
+ tests/namespace-exception-test.js | 22 ++++++++++++++++++++++
+ 1 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 13a1f5d7d73d7bc2e1b48bf811fa8ca9d8c7fb7b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 09:45:45 2008 +0000
+
+ Exception for wrong number of argmuents in Seed.print.
+
+ svn path=/trunk/; revision=81
+
+ libseed/seed-builtins.c | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 5b1826ea683723e133c37c1a0e593acc6db6afbd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 09:42:51 2008 +0000
+
+ Propogate exception when failing to import a namespace.
+
+ svn path=/trunk/; revision=80
+
+ libseed/seed-engine.c | 20 ++++++++++++++++++--
+ libseed/seed-engine.h | 2 ++
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+commit b855ebf74a5a9749a9e3c6b127536bcb787e0db8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 09:31:55 2008 +0000
+
+ List type conversion.
+
+ svn path=/trunk/; revision=79
+
+ autom4te.cache/output.0 |17024 ----------------------------------------------
+ autom4te.cache/output.1 |17388 ----------------------------------------------
+ autom4te.cache/output.2 |17392 -----------------------------------------------
+ autom4te.cache/requests | 505 --
+ autom4te.cache/traces.0 | 2627 -------
+ autom4te.cache/traces.1 | 812 ---
+ autom4te.cache/traces.2 | 2729 --------
+ libseed/seed-types.c | 54 +
+ tests/list-test.js | 19 +
+ 9 files changed, 73 insertions(+), 58477 deletions(-)
+
+commit 8fef847084c00f8d46ead4b0281ba9e4bc1ee31b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 08:39:40 2008 +0000
+
+ Protect signal closure data from garbage collection.
+
+ svn path=/trunk/; revision=78
+
+ libseed/seed-signals.c | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit db4d11bc8ec846a5510a692e7e89ee7be062620b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 08:22:07 2008 +0000
+
+ Fix signal marshalling of boxed types. Free bonus commit: Allocate
+ signal arguments on the stack.
+
+ svn path=/trunk/; revision=77
+
+ libseed/seed-signals.c | 4 ++--
+ libseed/seed-structs.c | 25 ++++++++++++++-----------
+ libseed/seed-types.c | 3 ++-
+ 3 files changed, 18 insertions(+), 14 deletions(-)
+
+commit e0b1ea0e01b42a0da87cf02e7fbe786a4eaa291b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 07:05:33 2008 +0000
+
+ Shader example got moved into shader/*. Change this example to be a
+ generic clutter example. Granted not a very good one.
+
+ svn path=/trunk/; revision=76
+
+ examples/clutter.js | 83 ++++++++++++++++++++++++++++++--------------------
+ 1 files changed, 50 insertions(+), 33 deletions(-)
+
+commit 7960aff27782f0769322f5d6054c62550ed86178
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 06:39:34 2008 +0000
+
+ Readd most of what...somehow dissapeared?
+
+ svn path=/trunk/; revision=75
+
+ doc/tutorial-standalone/1.js | 64 ++++++
+ doc/tutorial-standalone/1.png | Bin 0 -> 2935 bytes
+ doc/tutorial-standalone/2.js | 69 ++++++
+ doc/tutorial-standalone/2.png | Bin 0 -> 5836 bytes
+ doc/tutorial-standalone/3.js | 81 +++++++
+ doc/tutorial-standalone/3.png | Bin 0 -> 7456 bytes
+ doc/tutorial-standalone/4.png | Bin 0 -> 43769 bytes
+ doc/tutorial-standalone/packing.png | Bin 0 -> 8794 bytes
+ doc/tutorial-standalone/packing.svg | 175 ++++++++++++++++
+ doc/tutorial-standalone/tutorial.html | 368 +++++++++++++++++++++++++++++++++
+ examples/calculator.js | 152 ++++++++++++++
+ examples/clutter.js | 44 ++++
+ examples/ide/exception.svg | 75 +++++++
+ examples/ide/ide.js | 140 +++++++++++++
+ examples/ide/tabview.js | 85 ++++++++
+ examples/ide/toolbar.js | 105 ++++++++++
+ examples/lightsoff/lightsoff.js | 198 ++++++++++++++++++
+ examples/lightsoff/tim-off.svg | 228 ++++++++++++++++++++
+ examples/lightsoff/tim-on.svg | 204 ++++++++++++++++++
+ examples/ls.js | 14 ++
+ examples/mini-browser.js | 152 ++++++++++++++
+ examples/n-oscillator.js | 100 +++++++++
+ examples/notify-test.js | 25 +++
+ examples/quine.js | 7 +
+ examples/repl.js | 13 ++
+ examples/shader/ShaderView.js | 45 ++++
+ examples/shader/bob.jpg | Bin 0 -> 59229 bytes
+ examples/shader/default.glsl | 11 +
+ examples/shader/main.js | 51 +++++
+ examples/vte-test.js | 23 ++
+ tests/argv.js | 6 +
+ tests/compare.js | 15 ++
+ tests/enum.js | 15 ++
+ tests/gobject-scope.js | 15 ++
+ tests/include.js | 7 +
+ tests/json-constructor.js | 15 ++
+ tests/print.js | 7 +
+ tests/printprint.js | 6 +
+ tests/property-benchmark.js | 17 ++
+ tests/readline.js | 7 +
+ tests/run-tests.py | 78 +++++++
+ tests/signal.js | 18 ++
+ tests/syntax-test.js | 18 ++
+ 43 files changed, 2653 insertions(+), 0 deletions(-)
+
+commit ca33c344f05c5a193309f52e2e855aad2ed74cd8
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 06:35:09 2008 +0000
+
+ SVN is still being annoying.
+
+ svn path=/trunk/; revision=74
+
+ COPYING | 675 ++
+ ChangeLog | 2 +
+ INSTALL | 1 +
+ Makefile.am | 34 +
+ Makefile.am.bak | 33 +
+ Makefile.in | 762 +++
+ aclocal.m4 | 9635 ++++++++++++++++++++++++++
+ autogen.sh | 159 +
+ autom4te.cache/output.0 |17024 ++++++++++++++++++++++++++++++++++++++++++++++
+ autom4te.cache/output.1 |17388 ++++++++++++++++++++++++++++++++++++++++++++++
+ autom4te.cache/output.2 |17392 +++++++++++++++++++++++++++++++++++++++++++++++
+ autom4te.cache/requests | 505 ++
+ autom4te.cache/traces.0 | 2627 +++++++
+ autom4te.cache/traces.1 | 812 +++
+ autom4te.cache/traces.2 | 2729 ++++++++
+ config.guess | 1 +
+ config.h.in | 80 +
+ config.sub | 1 +
+ configure |17388 ++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 45 +
+ configure.ac.bak | 42 +
+ depcomp | 1 +
+ extensions/Gio.js | 28 +
+ install-sh | 1 +
+ libseed/Makefile.am | 34 +
+ libseed/Makefile.am.bak | 33 +
+ libseed/Makefile.in | 567 ++
+ libseed/seed-builtins.c | 189 +
+ libseed/seed-builtins.h | 55 +
+ libseed/seed-engine.c | 952 +++
+ libseed/seed-engine.h | 45 +
+ libseed/seed-private.h | 46 +
+ libseed/seed-signals.c | 225 +
+ libseed/seed-signals.h | 30 +
+ libseed/seed-structs.c | 83 +
+ libseed/seed-structs.h | 27 +
+ libseed/seed-types.c | 950 +++
+ libseed/seed-types.h | 82 +
+ libseed/seed.h | 89 +
+ ltmain.sh | 7880 +++++++++++++++++++++
+ missing | 1 +
+ mkinstalldirs | 111 +
+ po/.cvsignore | 23 +
+ po/LINGUAS | 2 +
+ po/Makefile.in.in | 217 +
+ po/POTFILES.in | 3 +
+ seed.pc.in | 13 +
+ src/.cvsignore | 17 +
+ src/Makefile.am | 25 +
+ src/Makefile.am.bak | 31 +
+ src/Makefile.in | 528 ++
+ src/main.c | 93 +
+ 52 files changed, 99716 insertions(+), 0 deletions(-)
+
+commit 708a7358764a2961c24ead3e81a631c9efbef432
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 06:32:02 2008 +0000
+
+ SVN is being a pain.
+
+ svn path=/trunk/; revision=73
+
+ COPYING | 675 ----
+ ChangeLog | 2 -
+ INSTALL | 1 -
+ Makefile.am | 34 -
+ Makefile.am.bak | 33 -
+ Makefile.in | 762 ----
+ aclocal.m4 | 9635 -----------------------------------------------
+ autogen.sh | 159 -
+ config.guess | 1 -
+ config.h.in | 80 -
+ config.sub | 1 -
+ configure.ac | 45 -
+ configure.ac.bak | 42 -
+ depcomp | 1 -
+ install-sh | 1 -
+ libseed/Makefile.am | 34 -
+ libseed/Makefile.am.bak | 33 -
+ libseed/Makefile.in | 567 ---
+ libseed/seed-builtins.c | 189 -
+ libseed/seed-builtins.h | 55 -
+ libseed/seed-engine.c | 952 -----
+ libseed/seed-engine.h | 45 -
+ libseed/seed-private.h | 46 -
+ libseed/seed-signals.c | 225 --
+ libseed/seed-signals.h | 30 -
+ libseed/seed-structs.c | 83 -
+ libseed/seed-structs.h | 27 -
+ libseed/seed-types.c | 950 -----
+ libseed/seed-types.h | 82 -
+ libseed/seed.h | 89 -
+ ltmain.sh | 7880 --------------------------------------
+ missing | 1 -
+ mkinstalldirs | 111 -
+ src/Makefile | 528 ---
+ src/Makefile.am | 25 -
+ src/Makefile.am.bak | 31 -
+ src/Makefile.in | 528 ---
+ src/main.c | 93 -
+ src/seed | 147 -
+ 39 files changed, 0 insertions(+), 24223 deletions(-)
+
+commit 50d58a5b6fe5ab70f89bb5e6527411f214b45c93
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 06:29:37 2008 +0000
+
+ Try again at autotools.
+
+ svn path=/trunk/; revision=72
+
+ INSTALL | 2 +-
+ autom4te.cache/output.0 |17024 ----------------------------------------------
+ autom4te.cache/output.1 |17388 ----------------------------------------------
+ autom4te.cache/output.2 |17392 -----------------------------------------------
+ autom4te.cache/requests | 505 --
+ autom4te.cache/traces.0 | 2627 -------
+ autom4te.cache/traces.1 | 812 ---
+ autom4te.cache/traces.2 | 2729 --------
+ config.guess | 2 +-
+ config.sub | 2 +-
+ configure |17388 ----------------------------------------------
+ depcomp | 2 +-
+ install-sh | 2 +-
+ libseed/Makefile.am | 34 +
+ libseed/Makefile.am.bak | 33 +
+ libseed/Makefile.in | 567 ++
+ libseed/seed-builtins.c | 189 +
+ libseed/seed-builtins.h | 55 +
+ libseed/seed-engine.c | 952 +++
+ libseed/seed-engine.h | 45 +
+ libseed/seed-private.h | 46 +
+ libseed/seed-signals.c | 225 +
+ libseed/seed-signals.h | 30 +
+ libseed/seed-structs.c | 83 +
+ libseed/seed-structs.h | 27 +
+ libseed/seed-types.c | 950 +++
+ libseed/seed-types.h | 82 +
+ libseed/seed.h | 89 +
+ missing | 2 +-
+ po/.cvsignore | 23 -
+ po/LINGUAS | 2 -
+ po/Makefile.in.in | 217 -
+ po/POTFILES.in | 3 -
+ seed.pc.in | 13 -
+ src/.cvsignore | 17 -
+ src/Makefile | 528 ++
+ src/seed | 147 +
+ 37 files changed, 4088 insertions(+), 76146 deletions(-)
+
+commit 1e4e0e338ec04e45eec5250e89b4862a5addea7d
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 06:26:32 2008 +0000
+
+ Autotoolize! Huzzah.
+
+ svn path=/trunk/; revision=71
+
+ AUTHORS | 3 -
+ ChangeLog | 2 +
+ INSTALL | 1 +
+ Makefile | 10 -
+ Makefile.am | 34 +
+ Makefile.am.bak | 33 +
+ Makefile.in | 762 ++
+ TODO | 1 -
+ aclocal.m4 | 9635 ++++++++++++++++++
+ autogen.sh | 159 +
+ autom4te.cache/output.0 |17024 ++++++++++++++++++++++++++++++++
+ autom4te.cache/output.1 |17388 ++++++++++++++++++++++++++++++++
+ autom4te.cache/output.2 |17392 +++++++++++++++++++++++++++++++++
+ autom4te.cache/requests | 505 +
+ autom4te.cache/traces.0 | 2627 +++++
+ autom4te.cache/traces.1 | 812 ++
+ autom4te.cache/traces.2 | 2729 ++++++
+ config.guess | 1 +
+ config.h.in | 80 +
+ config.sub | 1 +
+ configure |17388 ++++++++++++++++++++++++++++++++
+ configure.ac | 45 +
+ configure.ac.bak | 42 +
+ depcomp | 1 +
+ doc/tutorial-standalone/1.js | 64 -
+ doc/tutorial-standalone/1.png | Bin 2935 -> 0 bytes
+ doc/tutorial-standalone/2.js | 69 -
+ doc/tutorial-standalone/2.png | Bin 5836 -> 0 bytes
+ doc/tutorial-standalone/3.js | 81 -
+ doc/tutorial-standalone/3.png | Bin 7456 -> 0 bytes
+ doc/tutorial-standalone/4.png | Bin 43769 -> 0 bytes
+ doc/tutorial-standalone/packing.png | Bin 8794 -> 0 bytes
+ doc/tutorial-standalone/packing.svg | 175 -
+ doc/tutorial-standalone/tutorial.html | 368 -
+ examples/calculator.js | 152 -
+ examples/clutter.js | 44 -
+ examples/ide/exception.svg | 75 -
+ examples/ide/ide.js | 140 -
+ examples/ide/tabview.js | 85 -
+ examples/ide/toolbar.js | 105 -
+ examples/lightsoff/lightsoff.js | 198 -
+ examples/lightsoff/tim-off.svg | 228 -
+ examples/lightsoff/tim-on.svg | 204 -
+ examples/ls.js | 14 -
+ examples/mini-browser.js | 152 -
+ examples/n-oscillator.js | 100 -
+ examples/notify-test.js | 25 -
+ examples/quine.js | 7 -
+ examples/repl.js | 13 -
+ examples/shader/ShaderView.js | 45 -
+ examples/shader/bob.jpg | Bin 59229 -> 0 bytes
+ examples/shader/default.glsl | 11 -
+ examples/shader/main.js | 51 -
+ examples/vte-test.js | 23 -
+ extensions/Gio.js | 28 -
+ install-sh | 1 +
+ libseed/Makefile | 5 -
+ libseed/seed-builtins.c | 189 -
+ libseed/seed-builtins.h | 55 -
+ libseed/seed-engine.c | 952 --
+ libseed/seed-engine.h | 45 -
+ libseed/seed-private.h | 46 -
+ libseed/seed-signals.c | 225 -
+ libseed/seed-signals.h | 30 -
+ libseed/seed-structs.c | 83 -
+ libseed/seed-structs.h | 27 -
+ libseed/seed-types.c | 950 --
+ libseed/seed-types.h | 82 -
+ libseed/seed.h | 89 -
+ ltmain.sh | 7880 +++++++++++++++
+ main.c | 93 -
+ missing | 1 +
+ mkinstalldirs | 111 +
+ po/.cvsignore | 23 +
+ po/LINGUAS | 2 +
+ po/Makefile.in.in | 217 +
+ po/POTFILES.in | 3 +
+ seed.pc.in | 13 +
+ src/.cvsignore | 17 +
+ src/Makefile.am | 25 +
+ src/Makefile.am.bak | 31 +
+ src/Makefile.in | 528 +
+ src/main.c | 93 +
+ tests/argv.js | 6 -
+ tests/compare.js | 15 -
+ tests/enum.js | 15 -
+ tests/gobject-scope.js | 15 -
+ tests/include.js | 7 -
+ tests/json-constructor.js | 15 -
+ tests/print.js | 7 -
+ tests/printprint.js | 6 -
+ tests/property-benchmark.js | 17 -
+ tests/readline.js | 7 -
+ tests/run-tests.py | 78 -
+ tests/signal.js | 18 -
+ tests/syntax-test.js | 18 -
+ 96 files changed, 95606 insertions(+), 5566 deletions(-)
+
+commit 1ca02ad9ef946b98ccdc13e26f173d52941a3d4a
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 05:29:34 2008 +0000
+
+ Apparently gst_init was never removed from main.c from the original test
+ program.
+
+ svn path=/trunk/; revision=70
+
+ examples/n-oscillator.js | 1 +
+ main.c | 4 ----
+ 2 files changed, 1 insertions(+), 4 deletions(-)
+
+commit 54f5c74cc7f87cf1ed05347bb3ac3b4fd3853987
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 05:26:04 2008 +0000
+
+ Add default shader.
+
+ svn path=/trunk/; revision=69
+
+ examples/shader/default.glsl | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 493e4f3cbf2f310e12b6990a40e26d0f68538a46
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 05:18:50 2008 +0000
+
+ Commit 67 was a lie. This is the real commit 67.
+
+ svn path=/trunk/; revision=68
+
+ examples/ide/exception.svg | 75 +++++++++++++++++++++++
+ examples/ide/ide.js | 140 ++++++++++++++++++++++++++++++++++++++++++++
+ examples/ide/tabview.js | 85 ++++++++++++++++++++++++++
+ examples/ide/toolbar.js | 105 +++++++++++++++++++++++++++++++++
+ 4 files changed, 405 insertions(+), 0 deletions(-)
+
+commit 91d0b338e6100bc1200b442b5f0c728fe9a31a41
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 05:18:14 2008 +0000
+
+ Beginnings of "IDE".
+
+ svn path=/trunk/; revision=67
+
+ tests/syntax-test.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 7e00fa7f035af93411386e29b267fba7b226a265
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Mon Nov 3 02:44:42 2008 +0000
+
+ Fix double free. When we got rid of seed_struct_privates, we switched to
+ storing the
+ struct directly as the JSCore private, which javascript core frees on
+ the object finalization. So, we no longer need to free in
+ seed_finalize_struct.
+
+ svn path=/trunk/; revision=66
+
+ libseed/seed-structs.c | 7 +------
+ 1 files changed, 1 insertions(+), 6 deletions(-)
+
+commit 9803083806f16221ac91130dad05e05268d12816
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 23:13:10 2008 +0000
+
+ Give the spinning bob dylan a GtkSourceView to attach shaders to him.
+ This is a rather contrived example.
+
+ svn path=/trunk/; revision=65
+
+ examples/bob.jpg | Bin 59229 -> 0 bytes
+ examples/shader/ShaderView.js | 45 ++++++++++++++++++++++++++++++++++++
+ examples/shader/bob.jpg | Bin 0 -> 59229 bytes
+ examples/shader/main.js | 51 +++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 96 insertions(+), 0 deletions(-)
+
+commit 0c22ed9f0b408ca11eeb488d9eb94f49bcaeb379
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 23:12:42 2008 +0000
+
+ Add Gio.simple_read
+
+ svn path=/trunk/; revision=64
+
+ extensions/Gio.js | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 891073e1c5af616f083e8b3040c1ee40ace404cf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 23:01:47 2008 +0000
+
+ Add syntax error test.
+
+ svn path=/trunk/; revision=63
+
+ tests/syntax-test.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 8633751156eea94ea521ec88e96db802472b8f37
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 23:00:24 2008 +0000
+
+ Syntax exceptions only get printed once now. Proper file and line number
+ for syntax fail. Add Seed.syntax_check, checks syntax of script,
+ propogates exception.
+
+ svn path=/trunk/; revision=62
+
+ libseed/seed-builtins.c | 19 +++++++++++++++++++
+ libseed/seed-engine.c | 6 ++++--
+ main.c | 3 +++
+ 3 files changed, 26 insertions(+), 2 deletions(-)
+
+commit 9fd14b04c025df8690f5b7bb186bd92cd4fb5bf4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 22:38:05 2008 +0000
+
+ Fix potential segfault.
+
+ svn path=/trunk/; revision=61
+
+ libseed/seed-types.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 73a486f3ec8f35d208b8e2066f1523a73125f30e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 10:29:22 2008 +0000
+
+ Don't set this to a JSValueNull JSValue if someone passes a null this
+ for a signal closure. this being null leads to JavaScriptCore hell.
+
+ svn path=/trunk/; revision=60
+
+ libseed/seed-signals.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 7fc1c8b77ab6cd751fde53539235bdc36c5963be
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 10:26:11 2008 +0000
+
+ Add Gio.simple_write.
+
+ svn path=/trunk/; revision=59
+
+ extensions/Gio.js | 14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 365ff932bcae13393137af7c0e6ec2d35c7ae639
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 10:20:42 2008 +0000
+
+ Lots of struct work, argument conversion work. Support methods of
+ structs. Magic, etc...ladeda. Somewhat sane handling of boxed types now.
+ ClutterColor works better than ever! Now ClutterVertex works.
+
+ Add spinning bob dylan example.
+
+ svn path=/trunk/; revision=58
+
+ examples/bob.jpg | Bin 0 -> 59229 bytes
+ examples/clutter.js | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.c | 37 +++++++++----------------------------
+ libseed/seed-structs.c | 33 ++++++++++++++++++++++++++-------
+ libseed/seed-structs.h | 4 ++--
+ libseed/seed-types.c | 21 ++++++++++++++++-----
+ 6 files changed, 97 insertions(+), 42 deletions(-)
+
+commit 13846ed314465a7332048a3d4330fc3d2ba129d9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 08:42:44 2008 +0000
+
+ Make G_TYPE_ENUM constructor properties work.
+
+ svn path=/trunk/; revision=57
+
+ libseed/seed-engine.c | 8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 17c52b670e0c087ec48e64f50538750b731e7d6f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 08:38:08 2008 +0000
+
+ Overhaul of argument conversion. As a free bonus, make things like
+ ClutterColor work.
+
+ svn path=/trunk/; revision=56
+
+ libseed/seed-engine.c | 34 +++++++++++++
+ libseed/seed-structs.c | 32 +++++-------
+ libseed/seed-structs.h | 5 +-
+ libseed/seed-types.c | 130 ++++++++++++++++++------------------------------
+ 4 files changed, 100 insertions(+), 101 deletions(-)
+
+commit 6f7876e09483527b9e8a5cd1743fdab908a703eb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 07:24:24 2008 +0000
+
+ That's embarassing.
+
+ svn path=/trunk/; revision=55
+
+ extensions/Gio.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 75123d7af87375edd0943c19c8c669d35c5ad551
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 06:36:11 2008 +0000
+
+ Tutorial wording fixes, Tim and Matt.
+
+ svn path=/trunk/; revision=54
+
+ doc/tutorial-standalone/tutorial.html | 30 ++++++++++++++++++++----------
+ 1 files changed, 20 insertions(+), 10 deletions(-)
+
+commit c40cd4d05f0e91634cb883bd37f8da0e432dd5f1
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 06:12:38 2008 +0000
+
+ Patch from Matt: Add line numbers and filenames to exceptions.
+
+ svn path=/trunk/; revision=53
+
+ libseed/seed-engine.c | 21 +++++++++++++++++++++
+ libseed/seed.h | 2 ++
+ main.c | 14 +++++++++-----
+ 3 files changed, 32 insertions(+), 5 deletions(-)
+
+commit 8543b08276b3cebd62816aebae22643a893b06fa
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 06:07:22 2008 +0000
+
+ Small leak.
+
+ svn path=/trunk/; revision=52
+
+ libseed/seed-builtins.c | 10 ++++++++--
+ 1 files changed, 8 insertions(+), 2 deletions(-)
+
+commit ed3a2072d7c5e60296eb734eb82c354e2fd4af04
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 06:03:37 2008 +0000
+
+ Add an "extensions" system. very rudimentary. Idea is you can create a
+ /usr/local/share/seed/Gio.js, which can add methods to prototypes of Gio
+ objects. Useful for making extensions to things which are useful in
+ javascript, say packing an array into a GtkBox.
+
+ Fixes I forgot to commit from earlier from tim, return 0 for null from
+ integer conversion functions.
+
+ svn path=/trunk/; revision=51
+
+ Makefile | 4 +++-
+ examples/quine.js | 4 +---
+ extensions/Gio.js | 8 ++++++++
+ libseed/seed-builtins.c | 27 ++++++++++++++++++++++-----
+ libseed/seed-engine.c | 31 ++++++++++++++++++++-----------
+ libseed/seed-types.c | 33 +++++++++++++++++++++++----------
+ 6 files changed, 77 insertions(+), 30 deletions(-)
+
+commit c1e5f36d1795b56d9662e42f5b77921b350af73e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Nov 2 05:20:04 2008 +0000
+
+ Somewhat complete tutorial.
+
+ svn path=/trunk/; revision=50
+
+ doc/tutorial-standalone/1.js | 64 ++++++++++++
+ doc/tutorial-standalone/2.js | 69 +++++++++++++
+ doc/tutorial-standalone/3.js | 81 +++++++++++++++
+ doc/tutorial-standalone/3.png | Bin 0 -> 7456 bytes
+ doc/tutorial-standalone/4.png | Bin 0 -> 43769 bytes
+ doc/tutorial-standalone/packing.png | Bin 0 -> 8794 bytes
+ doc/tutorial-standalone/packing.svg | 175 +++++++++++++++++++++++++++++++++
+ doc/tutorial-standalone/tutorial.html | 145 ++++++++++++++++++++++++---
+ 8 files changed, 517 insertions(+), 17 deletions(-)
+
+commit 0d40f91d7623d7eeae0023daad752897997aa1a6
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 10:23:31 2008 +0000
+
+ Return JSNull from constructor if we don't get a gobject.
+
+ svn path=/trunk/; revision=49
+
+ libseed/seed-engine.c | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 23c003cebae94d65e0a73ef8eda360fa2053e6e4
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 09:57:27 2008 +0000
+
+ Add quine example. Gio works, sort of? No real out arguments yet, so
+ until then you can use DataInputStream as a nasty hack to read lines out
+ of files. This is still pretty much entirely invalid though, notably
+ there is no way (that I see right now) to check for EOF. So you have to
+ read_until the empty string.
+
+
+ svn path=/trunk/; revision=48
+
+ examples/quine.js | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 9a645078ca6a81fd89c65a06e00660675059fb6e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 09:54:12 2008 +0000
+
+ Add static constructors (i.e. poppler_document_new_from_file as
+ Poppler.Document.new_from_file) not very java-scripty, but useful for
+ some API that is still unconstructable otherwise. I.e. poppler, or parts
+ of Gio (DataInputStream). A common name for these is "new", so this is
+ mapped to _new, "new" being a javascript keyword and all.
+
+
+ svn path=/trunk/; revision=47
+
+ doc/tutorial.html | 247 -----------------------------------------------
+ libseed/seed-builtins.c | 4 +
+ libseed/seed-engine.c | 59 ++++++++----
+ libseed/seed-engine.h | 2 +-
+ libseed/seed-types.c | 2 +-
+ 5 files changed, 47 insertions(+), 267 deletions(-)
+
+commit d68755fb770b203a74a432dedb746060af82d279
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 08:36:10 2008 +0000
+
+ Clean up the examples a little more, courtesy of Matt.
+
+ svn path=/trunk/; revision=46
+
+ examples/calculator.js | 3 +-
+ examples/clutter-test.js | 13 -----
+ examples/ls.js | 6 ++-
+ examples/spacewhale.js | 119 ----------------------------------------------
+ examples/vte-test.js | 19 ++-----
+ 5 files changed, 13 insertions(+), 147 deletions(-)
+
+commit 6c0653ead2b15a129c239faee42953b27c7dad71
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 08:21:59 2008 +0000
+
+ Reorganize tutorial. Add images.
+
+ svn path=/trunk/; revision=45
+
+ doc/tutorial-standalone/1.png | Bin 0 -> 2935 bytes
+ doc/tutorial-standalone/2.png | Bin 0 -> 5836 bytes
+ doc/tutorial-standalone/tutorial.html | 247 +++++++++++++++++++++++++++++++++
+ 3 files changed, 247 insertions(+), 0 deletions(-)
+
+commit aebd925cc8c7d4081b889cdb0c0a4f2e5f4f6cfe
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 08:20:36 2008 +0000
+
+ Clean up examples.
+
+ svn path=/trunk/; revision=44
+
+ examples/calculator.js | 6 +++---
+ examples/clutter-test.js | 2 +-
+ examples/mini-browser.js | 22 +++++++---------------
+ examples/n-oscillator.js | 6 +++---
+ examples/notify-test.js | 4 ++--
+ tests/gobject-scope.js | 2 +-
+ tests/json-constructor.js | 2 +-
+ 7 files changed, 18 insertions(+), 26 deletions(-)
+
+commit a0b1434c6969bcd4bd143c7997e83016d4595b8c
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 07:13:29 2008 +0000
+
+ Need JSValueNull for return values also.
+
+ svn path=/trunk/; revision=43
+
+ libseed/seed-engine.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 118f02d193c9e9c316737f82180ad4355330194e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Nov 1 07:07:11 2008 +0000
+
+ JavaScriptCore demands we return a JSValueNull now.
+
+ svn path=/trunk/; revision=42
+
+ MAINTAINERS | 2 +-
+ libseed/seed-engine.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit a49d9aa0ce2e2bd1904e3a32d44c86c38a7df508
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 06:26:46 2008 +0000
+
+ Fix reference counting regression. Add test case.
+
+ svn path=/trunk/; revision=41
+
+ libseed/seed-engine.c | 1 -
+ libseed/seed-types.c | 12 +-----------
+ tests/gobject-scope.js | 15 +++++++++++++++
+ tests/run-tests.py | 4 ++--
+ 4 files changed, 18 insertions(+), 14 deletions(-)
+
+commit 2a0af2d56740268d7f37529de7894d2e0f7d4b82
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 05:46:13 2008 +0000
+
+ Test case for Seed.print regression fixed a bit back.
+
+ svn path=/trunk/; revision=40
+
+ tests/printprint.js | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 9e48f4ae47419d3002d34ac40f70ad43a721b089
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 05:38:14 2008 +0000
+
+ Test case for argv.
+
+ svn path=/trunk/; revision=39
+
+ tests/argv.js | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit c6fb0a22c2a70977dc8bfdab217887c6928857bd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 05:29:27 2008 +0000
+
+ Tutorial updates. Repl in main. Seed.argv. Add menu to lightsoff.
+
+ svn path=/trunk/; revision=38
+
+ doc/tutorial.html | 1 -
+ examples/lightsoff/lightsoff.js | 59 +++++++++++++++++++++++++++++++++++++--
+ libseed/seed-builtins.c | 22 ++++++++++++--
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-types.c | 2 +
+ main.c | 24 ++++++++++++----
+ 6 files changed, 96 insertions(+), 14 deletions(-)
+
+commit 18faf653d58fe3d5e17724ca0feb931ecfc05da9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 04:39:19 2008 +0000
+
+ Better fix.
+
+ svn path=/trunk/; revision=37
+
+ libseed/seed-types.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2d25a38511ffb5855da74b9ef720ee98043088b9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sun Oct 26 04:37:42 2008 +0000
+
+ GObjects can be null!
+
+ svn path=/trunk/; revision=36
+
+ libseed/seed-types.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 07a8a7aa1ca718aeb825f41833e9a8b5140d76a2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 24 18:08:54 2008 +0000
+
+ More cleanup.
+
+ svn path=/trunk/; revision=35
+
+ Makefile | 2 +-
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-signals.c | 2 +-
+ libseed/seed-types.c | 10 +++++-----
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 3dc9a7940d496f2f99990bf5eec9ca03ebb53286
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 24 18:01:08 2008 +0000
+
+ Fix lots of unused variables, a few bugs, functions not returning
+ anything, and bad readline headers.
+
+ svn path=/trunk/; revision=34
+
+ libseed/seed-builtins.c | 4 +-
+ libseed/seed-engine.c | 19 +++---
+ libseed/seed-signals.c | 5 +-
+ libseed/seed-structs.c | 160 ++---------------------------------------------
+ libseed/seed-types.c | 29 +++-----
+ 5 files changed, 30 insertions(+), 187 deletions(-)
+
+commit fcb92fdede36cc4b5ffa9a5a73bbd3a4cb8440c2
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 24 17:47:37 2008 +0000
+
+ More code cleanup...
+
+ svn path=/trunk/; revision=33
+
+ Makefile | 2 +-
+ libseed/seed-builtins.c | 3 +--
+ libseed/seed-engine.c | 5 ++---
+ libseed/seed-engine.h | 2 +-
+ 4 files changed, 5 insertions(+), 7 deletions(-)
+
+commit 2f87b49c59ce59d495a3db99e5f7fd156104f518
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 24 17:44:03 2008 +0000
+
+ Unused functions.
+
+ svn path=/trunk/; revision=32
+
+ libseed/seed-types.c | 10 ----------
+ 1 files changed, 0 insertions(+), 10 deletions(-)
+
+commit d03610251e32b80fad02e4560f891d176a76a063
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 24 17:43:14 2008 +0000
+
+ Optimizations by avoiding gvalue.
+
+ svn path=/trunk/; revision=31
+
+ libseed/seed-engine.c | 57 ++++++-------------------------------------------
+ 1 files changed, 7 insertions(+), 50 deletions(-)
+
+commit 479b16a2b05403de582a3c4311fa1b7616ceb548
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:54:37 2008 +0000
+
+ Fix setting properties?
+
+ svn path=/trunk/; revision=30
+
+ libseed/seed-engine.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 70209b10a8eee8b0badc65b40c96575b3f28f926
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:34:17 2008 +0000
+
+ Oops.
+
+ svn path=/trunk/; revision=29
+
+ examples/lightsoff/lightsoff.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit cdb57ede03f4ddd540d1da27a19620665fbebbbf
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:33:23 2008 +0000
+
+ Indentation.
+
+ svn path=/trunk/; revision=28
+
+ examples/lightsoff/lightsoff.js | 104 ++++++++++++++++++++-------------------
+ 1 files changed, 54 insertions(+), 50 deletions(-)
+
+commit c70f031a15bfec5ed7d2394c5de7b6b423da1587
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:26:53 2008 +0000
+
+ Number of starting moves dependent on size.
+
+ svn path=/trunk/; revision=27
+
+ examples/lightsoff/lightsoff.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 8a7db899ed1768db2c6de8fe412687cb840a7cbd
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:25:46 2008 +0000
+
+ My life is complete.
+
+ svn path=/trunk/; revision=26
+
+ examples/lightsoff/lightsoff.js | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit c553308a8293408fbe97d88cbd967ebc5e3a5dee
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:22:09 2008 +0000
+
+ Tims changes.
+
+ svn path=/trunk/; revision=25
+
+ examples/lightsoff/lightsoff.js | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 640bf8a43bef615d594e4dda3f372c3279cf2f77
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:21:30 2008 +0000
+
+ Constructor property.
+
+ svn path=/trunk/; revision=24
+
+ examples/lightsoff/lightsoff.js | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 84dea08146319d2130320576e109a0b5de6ddefb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:18:50 2008 +0000
+
+ Lightsoff is not resizable.
+
+ svn path=/trunk/; revision=23
+
+ examples/lightsoff/lightsoff.js | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c9fd77e08efaf5459d3bad9b5e6f71eacc2ba319
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:16:16 2008 +0000
+
+ Finally, tims changes.
+
+ svn path=/trunk/; revision=22
+
+ examples/lightsoff.js | 126 ---------------------
+ examples/lightsoff/lightsoff.js | 142 ++++++++++++++++++++++++
+ examples/lightsoff/tim-off.svg | 228 +++++++++++++++++++++++++++++++++++++++
+ examples/lightsoff/tim-on.svg | 204 ++++++++++++++++++++++++++++++++++
+ examples/tim-off.svg | 228 ---------------------------------------
+ examples/tim-on.svg | 204 ----------------------------------
+ 6 files changed, 574 insertions(+), 558 deletions(-)
+
+commit d9419cbb05cf6a36014c1de77a09adcf943f02a0
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:12:41 2008 +0000
+
+ That was a good empty patch.
+
+ svn path=/trunk/; revision=21
+
+ examples/lightsoff.js | 126 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 126 insertions(+), 0 deletions(-)
+
+commit 40ff5f31a20bb9d0abc233df95985e978fd86a8b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 11:10:34 2008 +0000
+
+ Something that tim did to lights off.
+
+ svn path=/trunk/; revision=20
+
+ examples/lightsoff.js | 126 -------------------------------------------------
+ 1 files changed, 0 insertions(+), 126 deletions(-)
+
+commit 2bbe610a7c6684eece4c26b2480b3449ca4522be
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 10:36:38 2008 +0000
+
+ Symmetry.
+
+ svn path=/trunk/; revision=19
+
+ examples/lightsoff.js | 28 +++++++++++++++++++++++-----
+ 1 files changed, 23 insertions(+), 5 deletions(-)
+
+commit 3160601016f5b08aac74259712ba6d858d6092c9
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 07:33:33 2008 +0000
+
+ Lightsoff!
+
+ svn path=/trunk/; revision=18
+
+ examples/black.png | Bin 213 -> 0 bytes
+ examples/lightsoff.js | 24 ++---
+ examples/tim-off.svg | 228 +++++++++++++++++++++++++++++++++++++++++++++++++
+ examples/tim-on.svg | 204 +++++++++++++++++++++++++++++++++++++++++++
+ examples/white.png | Bin 213 -> 0 bytes
+ 5 files changed, 442 insertions(+), 14 deletions(-)
+
+commit a269e2cd4d47a9f299a3d970e4224c9d59f05a0f
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Thu Oct 23 05:25:28 2008 +0000
+
+ Add matts lightsoff.
+
+ svn path=/trunk/; revision=17
+
+ examples/black.png | Bin 0 -> 213 bytes
+ examples/lightsoff.js | 112 +++++++++++++++++++++++++++++++++++++++++++++++++
+ examples/white.png | Bin 0 -> 213 bytes
+ 3 files changed, 112 insertions(+), 0 deletions(-)
+
+commit f5b959eba78d3daed1eac022000f620618137f10
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 23:39:54 2008 +0000
+
+ New tests.
+
+ svn path=/trunk/; revision=16
+
+ tests/compare.js | 15 +++++++++++++++
+ tests/json-constructor.js | 1 -
+ 2 files changed, 15 insertions(+), 1 deletions(-)
+
+commit 409effe7c1ac85ff2ca445428543b7dae7df5b33
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 23:28:29 2008 +0000
+
+ Oops.
+
+ svn path=/trunk/; revision=15
+
+ libseed/seed-engine.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7f16adf22e51b6086173958285200090a6c85e4e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 23:25:54 2008 +0000
+
+ Headers!
+
+ svn path=/trunk/; revision=14
+
+ libseed/seed-types.h | 1 -
+ libseed/seed.h | 39 ++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 38 insertions(+), 2 deletions(-)
+
+commit 8ac49ab87bb99f0c460abae45a093118d62643ae
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 23:25:08 2008 +0000
+
+ Equals for gobject.
+
+ svn path=/trunk/; revision=13
+
+ libseed/seed-engine.c | 30 ++++++++++++++++++++++++++++--
+ 1 files changed, 28 insertions(+), 2 deletions(-)
+
+commit ecba84fc0aa3b41c3a8ccfa11695e53932365794
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 23:16:20 2008 +0000
+
+ Tims type rework completed.
+
+ svn path=/trunk/; revision=12
+
+ libseed/seed-builtins.c | 2 +-
+ libseed/seed-engine.c | 10 -
+ libseed/seed-engine.h | 1 -
+ libseed/seed-types.c | 973 ++++++++++++++++++++++-------------------------
+ tests/run-tests.py | 7 +-
+ 5 files changed, 462 insertions(+), 531 deletions(-)
+
+commit c3b31ae05352386222c186e9fd4a2cdb4ee54306
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 20:40:12 2008 +0000
+
+ More tim changes. Type conversion rework beginnings.
+
+ svn path=/trunk/; revision=11
+
+ libseed/seed-engine.c | 8 +-
+ libseed/seed-private.h | 1 -
+ libseed/seed-types.c | 255 +++++++++++++++++++++++++++++++++++++++++++-----
+ libseed/seed-types.h | 41 ++++++++-
+ libseed/seed-utils.c | 58 -----------
+ libseed/seed-utils.h | 27 -----
+ 6 files changed, 273 insertions(+), 117 deletions(-)
+
+commit c2e64f6ce6b3719c570b003019cf54ce6e854b6b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Wed Oct 22 19:48:03 2008 +0000
+
+ Tims documentation changes.
+
+ svn path=/trunk/; revision=10
+
+ doc/tutorial.html | 198 ++++++++++++++++++++++++++++++++++++++++++---
+ examples/mini-browser.js | 48 ++++++++---
+ 2 files changed, 220 insertions(+), 26 deletions(-)
+
+commit 3894a7ad3d3817db59c3b20930c6a79b491eb009
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Oct 18 03:32:35 2008 +0000
+
+ Remove obnoxious error message.
+
+ svn path=/trunk/; revision=9
+
+ libseed/seed-engine.c | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 17739edf4fdbcbeb40b22ca796e15ab86e61d57e
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Oct 18 03:31:07 2008 +0000
+
+ Libnotify test is now significantly more annoying.
+
+ svn path=/trunk/; revision=8
+
+ examples/notify-test.js | 28 ++++++++++++++++++++++------
+ 1 files changed, 22 insertions(+), 6 deletions(-)
+
+commit e2527aa4379bd3b82204d161ea080098fd3ad1bb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Oct 18 03:06:06 2008 +0000
+
+ Remove value-exception test. Going to refactor exceptions to work with
+ GLib system...
+
+ svn path=/trunk/; revision=7
+
+ libseed/seed-engine.c | 2 +-
+ tests/value-exception.js | 11 -----------
+ 2 files changed, 1 insertions(+), 12 deletions(-)
+
+commit ff7b82adab410d1c1792bfdccec8cb08bd67ed1b
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Oct 18 02:54:44 2008 +0000
+
+ Myriad of bug fixes, Gio example.
+
+ svn path=/trunk/; revision=6
+
+ examples/ls.js | 10 +++++++++
+ libseed/seed-engine.c | 2 +-
+ libseed/seed-engine.h | 1 +
+ libseed/seed-types.c | 51 +++++++++++++++++++++++++++++++++++++-----------
+ 4 files changed, 51 insertions(+), 13 deletions(-)
+
+commit 96ccf6daf7e3568101dbf720740418b277264ab7
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Sat Oct 18 01:15:37 2008 +0000
+
+ What was going on here?
+
+ svn path=/trunk/; revision=5
+
+ libseed/seed-engine.c | 11 ++++++-----
+ libseed/seed-signals.c | 2 +-
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+commit 636e672b9feb9a134ba20711bc3b8fcbd81976bb
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 17 22:59:41 2008 +0000
+
+ Make G_TYPE_ENUM properties work.
+
+ svn path=/trunk/; revision=4
+
+ libseed/seed-engine.c | 8 ++++++--
+ tests/enum.js | 12 +++++++++---
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+commit 5c00a757273df6eb71adee45b0c3c770358c2612
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 17 21:51:25 2008 +0000
+
+ Add seed.
+
+ svn path=/trunk/; revision=3
+
+ AUTHORS | 3 +
+ COPYING | 675 ++++++++++++++++++++++++++++++++
+ Makefile | 8 +
+ TODO | 1 +
+ doc/tutorial.html | 78 ++++
+ examples/calculator.js | 151 ++++++++
+ examples/clutter-test.js | 13 +
+ examples/mini-browser.js | 136 +++++++
+ examples/n-oscillator.js | 99 +++++
+ examples/notify-test.js | 9 +
+ examples/repl.js | 13 +
+ examples/spacewhale.js | 119 ++++++
+ examples/vte-test.js | 30 ++
+ libseed/Makefile | 5 +
+ libseed/seed-builtins.c | 126 ++++++
+ libseed/seed-builtins.h | 55 +++
+ libseed/seed-engine.c | 897 +++++++++++++++++++++++++++++++++++++++++++
+ libseed/seed-engine.h | 45 +++
+ libseed/seed-private.h | 47 +++
+ libseed/seed-signals.c | 224 +++++++++++
+ libseed/seed-signals.h | 30 ++
+ libseed/seed-structs.c | 223 +++++++++++
+ libseed/seed-structs.h | 26 ++
+ libseed/seed-types.c | 812 +++++++++++++++++++++++++++++++++++++++
+ libseed/seed-types.h | 44 +++
+ libseed/seed-utils.c | 58 +++
+ libseed/seed-utils.h | 27 ++
+ libseed/seed.h | 50 +++
+ main.c | 78 ++++
+ tests/enum.js | 9 +
+ tests/include.js | 7 +
+ tests/json-constructor.js | 16 +
+ tests/print.js | 7 +
+ tests/property-benchmark.js | 17 +
+ tests/readline.js | 7 +
+ tests/run-tests.py | 77 ++++
+ tests/signal.js | 18 +
+ tests/value-exception.js | 11 +
+ 38 files changed, 4251 insertions(+), 0 deletions(-)
+
+commit 4c001fdda92269656be56fe04c9f40dc68ea1762
+Author: Robert Carr <racarr@src.gnome.org>
+Date: Fri Oct 17 21:47:29 2008 +0000
+
+ Add maintainers.
+
+ svn path=/trunk/; revision=2
+
+ MAINTAINERS | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..7d1c323
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,365 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ 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 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.
+
+ Running `configure' might take a while. 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, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. 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.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+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=c99 CFLAGS=-g 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 can use 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 `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer 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.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+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', where PREFIX must be an
+absolute file name.
+
+ 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. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ 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'.
+
+ 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.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+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).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--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.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..30613d0
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,89 @@
+## Process this file with automake to produce Makefile.in
+
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+
+SUBDIRS = po \
+ libseed \
+ src \
+ extensions \
+ modules \
+ tests \
+ doc
+
+doc_DATA = \
+ README \
+ COPYING \
+ AUTHORS \
+ ChangeLog \
+ INSTALL
+
+pkgconfig_DATA = seed.pc
+pkgconfigdir = $(libdir)/pkgconfig
+
+man_MANS = doc/seed.1
+
+EXTRA_DIST = $(pkgconfig_DATA)
+
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+profile-reset:
+ find -name '*.gcda' -delete
+
+profile: profile-reset check
+ cp libseed/*.c libseed/.libs/
+
+if PROFILE_MODULES
+ cp modules/readline/*.c modules/readline/.libs/
+ cp modules/example/*.c modules/example/.libs/
+ cp modules/sqlite/*.c modules/sqlite/.libs/
+ cp modules/canvas/*.c modules/canvas/.libs/
+ cp modules/Multiprocessing/*.c modules/Multiprocessing/.libs/
+endif
+
+ cd libseed/.libs ; gcov *.c
+
+if PROFILE_MODULES
+ cd modules/cairo/.libs ; gcov *.c
+ cd modules/canvas/.libs ; gcov *.c
+ cd modules/dbus/.libs ; gcov *.c
+ cd modules/example/.libs ; gcov *.c
+ cd modules/gettext/.libs ; gcov *.c
+ cd modules/gtkbuilder/.libs ; gcov *.c
+ cd modules/libxml/.libs ; gcov *.c
+ cd modules/os/.libs ; gcov *.c
+ cd modules/readline/.libs ; gcov *.c
+ cd modules/sandbox/.libs ; gcov *.c
+ cd modules/sqlite/.libs ; gcov *.c
+endif
+
+profile-gui: profile
+
+if PROFILE_MODULES
+ lcov --directory libseed/.libs --directory modules/cairo/.libs --directory modules/canvas/.libs --directory modules/dbus/.libs --directory modules/example/.libs --directory modules/gettext/.libs --directory modules/gtkbuilder/.libs --directory modules/libxml/.libs --directory modules/os/.libs --directory modules/readline/.libs --directory modules/sandbox/.libs --directory modules/sqlite/.libs --capture --output-file seed.info
+else
+ lcov --directory libseed/.libs --capture --output-file seed.info
+endif
+
+ cp seed.info /tmp/
+ cd /tmp ; genhtml seed.info ; gnome-open index.html
+
+# Copy all the spec files. Of course, only one is actually used.
+# Generate the ChangeLog from the output of 'git log'.
+dist-hook:
+ for specfile in *.spec; do \
+ if test -f $$specfile; then \
+ cp -p $$specfile $(distdir); \
+ fi \
+ done
+ @if test -d "$(srcdir)/.git"; \
+ then \
+ echo Creating ChangeLog && \
+ ( cd "$(top_srcdir)" && \
+ echo '# Generated by Makefile. Do not edit.'; echo; \
+ $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \
+ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
+ || ( rm -f ChangeLog.tmp ; \
+ echo Failed to generate ChangeLog >&2 ); \
+ else \
+ echo A git clone is required to generate a ChangeLog >&2; \
+ fi
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..bd53270
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1021 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/seed.pc.in $(top_srcdir)/configure AUTHORS COPYING \
+ ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
+ install-sh ltmain.sh missing mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = seed.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" \
+ "$(DESTDIR)$(pkgconfigdir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(doc_DATA) $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+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)"; }; }
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+SUBDIRS = po \
+ libseed \
+ src \
+ extensions \
+ modules \
+ tests \
+ doc
+
+doc_DATA = \
+ README \
+ COPYING \
+ AUTHORS \
+ ChangeLog \
+ INSTALL
+
+pkgconfig_DATA = seed.pc
+pkgconfigdir = $(libdir)/pkgconfig
+man_MANS = doc/seed.1
+EXTRA_DIST = $(pkgconfig_DATA)
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__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)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) 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)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+seed.pc: $(top_builddir)/config.status $(srcdir)/seed.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(docdir)" && rm -f $$files
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -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 $(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-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(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)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__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 \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__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 $(MANS) $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-docDATA install-man install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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-docDATA uninstall-man uninstall-pkgconfigDATA
+
+uninstall-man: uninstall-man1
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+ ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-docDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-pdf \
+ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-docDATA uninstall-man uninstall-man1 \
+ uninstall-pkgconfigDATA
+
+
+profile-reset:
+ find -name '*.gcda' -delete
+
+profile: profile-reset check
+ cp libseed/*.c libseed/.libs/
+
+@PROFILE_MODULES_TRUE@ cp modules/readline/*.c modules/readline/.libs/
+@PROFILE_MODULES_TRUE@ cp modules/example/*.c modules/example/.libs/
+@PROFILE_MODULES_TRUE@ cp modules/sqlite/*.c modules/sqlite/.libs/
+@PROFILE_MODULES_TRUE@ cp modules/canvas/*.c modules/canvas/.libs/
+@PROFILE_MODULES_TRUE@ cp modules/Multiprocessing/*.c modules/Multiprocessing/.libs/
+
+ cd libseed/.libs ; gcov *.c
+
+@PROFILE_MODULES_TRUE@ cd modules/cairo/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/canvas/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/dbus/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/example/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/gettext/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/gtkbuilder/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/libxml/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/os/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/readline/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/sandbox/.libs ; gcov *.c
+@PROFILE_MODULES_TRUE@ cd modules/sqlite/.libs ; gcov *.c
+
+profile-gui: profile
+
+@PROFILE_MODULES_TRUE@ lcov --directory libseed/.libs --directory modules/cairo/.libs --directory modules/canvas/.libs --directory modules/dbus/.libs --directory modules/example/.libs --directory modules/gettext/.libs --directory modules/gtkbuilder/.libs --directory modules/libxml/.libs --directory modules/os/.libs --directory modules/readline/.libs --directory modules/sandbox/.libs --directory modules/sqlite/.libs --capture --output-file seed.info
+@PROFILE_MODULES_FALSE@ lcov --directory libseed/.libs --capture --output-file seed.info
+
+ cp seed.info /tmp/
+ cd /tmp ; genhtml seed.info ; gnome-open index.html
+
+# Copy all the spec files. Of course, only one is actually used.
+# Generate the ChangeLog from the output of 'git log'.
+dist-hook:
+ for specfile in *.spec; do \
+ if test -f $$specfile; then \
+ cp -p $$specfile $(distdir); \
+ fi \
+ done
+ @if test -d "$(srcdir)/.git"; \
+ then \
+ echo Creating ChangeLog && \
+ ( cd "$(top_srcdir)" && \
+ echo '# Generated by Makefile. Do not edit.'; echo; \
+ $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \
+ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
+ || ( rm -f ChangeLog.tmp ; \
+ echo Failed to generate ChangeLog >&2 ); \
+ else \
+ echo A git clone is required to generate a ChangeLog >&2; \
+ fi
+
+# 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/NEWS b/NEWS
new file mode 100644
index 0000000..bfe6544
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,450 @@
+== Seed 3.1.1 (2011.05.17) ==
+
+* Add preliminary support for FreeBSD and OpenBSD, at least
+
+* Fix DBus module build problems
+
+* Fix typo in documentation
+
+* Fix build-time errors with recent dash as sh
+
+* Update Seed to follow recent gobject-introspection changes
+
+== Seed 3.0.0, "Evacuate the Dancefloor" (2011.04.01) ==
+
+* Allow the creation of constrained SeedEngine contexts
+
+* Expose seed_value_(to|from)_gi_argument and seed_value_to_gvalue as public API
+
+* Make seed.h C++ friendly
+
+* Take GTK+ version into account in the prefix path
+
+== Seed 2.91.90 (2011.02.22) ==
+
+* Fix build with GTK+3
+
+* Change soname for GTK+3 version
+
+== Seed 2.31.91, "Write About Love" (2010.08.30) ==
+
+* Seed now optionally supports both WebKitGtk+-1.0 and 3.0
+
+* Dynamic Object module - provides support for implementing
+ underlying object callbacks in JavaScript (see commit d31aca)
+
+* Implement caller-allocated out arguments
+
+* Expose seed_value_from_gvalue() through the API
+
+* Fix unusable seed_object_copy_property_names()
+
+* Fix various build system issues
+
+== Seed 2.31.5, "Elephant" (2010.07.11) ==
+
+* Seed now requires WebKitGtk+-3.0, built against Gtk+-3.0
+
+* Support for passing GObjects as userdata
+
+* Support for redirection of Seed.print via set_print_handler
+
+* Support __script_path__ within Seed sandboxes
+
+* Fixes to importer to not expose toString/valueOf files
+
+* Additional warnings in various potential error cases
+
+== Seed 2.31.1, "The Black Album" (2010.03.29) ==
+
+* Support for returning arrays of GTypes
+
+* Support for GError types in various places
+
+* Rework out arguments - old style still works, also returns
+ dictionary with keys named after parameters
+
+* Support initialization using an existing JSGlobalContext
+
+== Seed 2.30.0, "Piano Man" (2010.03.29) ==
+
+* Second stable release!
+
+== Seed 2.29.91, "Greatest Hits" (2010.02.23) ==
+
+* Support void * arguments
+
+* Support connecting to notify:: signals everywhere
+
+== Seed 2.29.90, "Fort Nightly" (2010.02.08) ==
+
+* To avoid potential filename collisions, the imports system now supports:
+ imports['somedir/somefile.js'] (Alan Knowles)
+
+* Fix crash involving gtk_tree_model_get_value (Alan Knowles)
+
+* Fix subtle crash in DBus bindings (Rob Taylor)
+
+== Seed 2.29.5.3, "Twist and Shout" (2010.01.11) ==
+
+* Pass null structs through as "null" instead of empty seed_structs
+
+* Revert one of the 64-bit type safety commits from 2.29.5.2 until someone
+ can take a closer look at it; it broke enum typing on Linux
+
+* Fix potential segfault in various modules (missing null sentinels)
+
+== Seed 2.29.5.2, "Third Stage" (2010.01.07) ==
+
+* Move tests to automake-style 'make check', away from the previous,
+ Python-based 'make test' tool; all tests are now assertion-based, instead of
+ the previous output-based style
+
+* Fix various segfaults on Mac OS X (and possibly *BSD) related to 64-bit type
+ safety problems
+
+* Fix functionality of out arguments
+
+* Interpreter now returns non-zero status code if it exits with an exception
+
+== Seed 2.29.5.1, "Achtung Baby" (2010.01.01) ==
+
+* Fix "duplicate symbol" errors on non-Linux platforms
+
+== Seed 2.29.5, "Icky Thump" (2009.01.01) ==
+
+* Fix build on non-GNU platforms (primarily Mac OS X)
+
+* Distribute the REPL snippet with Seed again; the built-in REPL will work now
+
+* Fix segfault when accidentally protecting already-garbage-collected values
+
+* Fix segfault when accidentally unreffing nonexistant GIBaseInfos
+
+== Seed 2.29.4, "( )" (2009.12.17) ==
+
+* Improve type conversion portability; add seed_value_(to|from)_(s)size
+ functions.
+
+* Small random cleanup of unused arguments.
+
+== Seed 2.29.3 (2009.11.30) ==
+
+No changes.
+
+== Seed 2.29.2, "Never Mind the Bollocks" (2009.11.16) ==
+
+* Change semantics of seed_value_from_string and _from_filename; they
+ now return JavaScript null if passed a null input value.
+
+* Seed interpreter adds --version argument
+
+* libseed adds --seed-version argument
+
+* Clutter extension wrapper for animate_with_alpha
+
+== Seed 2.28.0, "The Rise and Fall of Ziggy Stardust and the Spiders
+ from Mars" (2009.09.21) ==
+
+* First official stable release!
+
+== Seed 2.27.92, "Metal Machine Music" (2009.09.07) ==
+
+* Fix a bug in module building; modules are now versionless
+
+* The instanceof operator now works for GTypes
+
+* Add global support for G_TYPE_STRV
+
+== Seed 2.27.91, "Yellow Submarine" (2009.08.21) ==
+
+* Added seed_context_collect, to provide an interface for forcing
+ garbage collection manually
+
+== Seed 2.27.90, "London Calling" (2009.08.10) ==
+
+* Expanded and updated documentation; also available at:
+ http://library.gnome.org/devel/seed/unstable/
+
+* All JavaScript contexts now have a __script_path__ property, which
+ exposes the absolute, canonical path to the evaluated script
+
+* Add __init__.js functionality; if an imported folder contains __init__.js,
+ it will be evaluated with the imported context as the 'this' object
+
+* Fix bug which caused inheritance from a GType created in Seed to fail
+
+* Add "pretty" property installation, see:
+ tests/javascript/gtypes/gtype-property-nice.js
+
+* New FFI module, provides an interface for calling non-introspected
+ native C functions from JavaScript
+
+== Seed 0.8.5, "Self Portrait" (2009.07.10) ==
+
+* Significant reorganization and expansion of the reference documentation
+
+* New native modules:
+ * gettext
+ * MPFR (partially complete)
+
+* Same Seed has moved to the gsoc-seed-games branch of Gnome Games
+ (and will eventually move to master)
+
+* Add seed-module.h, which includes a handful of macros to make writing modules
+ slightly more attractive. Look at gettext or the reference docs for examples.
+
+* Prefix native modules with seed_ (libseed_readline.so, etc.); this fixes the
+ need to incessantly 'make clean' seed and cuts down on ambiguity in naming.
+
+* Add 'seed_value_is_string', 'seed_value_is_number', and
+ 'seed_value_is_object_of_class' to libseed
+
+* Update examples to latest (now frozen) Clutter API changes.
+
+* Fixes a bug with the importer search path which resulted in the search path
+ being overwritten each time something was imported
+
+* The importer now also searches the directory in which the script being
+ executed is located by default.
+
+== Seed 0.8, "Bringing It All Back Home" (2009.05.27) ==
+
+* Importer now supports constructing directory objects, to avoid manipulation
+ of search path. Importer directory objects now support property enumeration.
+
+* Fix small leak in GObject wrapper initialization. (and also simplify
+ the process).
+
+* GtkBuilder module to handle GtkBuilder automatic signal connection.
+
+* *_init methods now take normal arrays (by value) in addition to the special
+ Seed.argv array.
+
+* GObject constructors (init methods) now take "self" as a parameter.
+
+* Passing non gobject-properties to a GObject constructor will set the
+ properties on the GObject wrapper.
+
+* Module documentation rewritten in docbook, and builds one nice manual.
+
+* New Cairo module, supports most of the cairo API, with automatic memory
+ management and everything you would expect.
+
+* Fix a reference count leak introduced in the last few releases.
+ in some cases with non INITIALLY_UNOWNED objects.
+
+* Some work on ClutterPad examples, and writing examples which live inside of it
+ (lots of fun to play with!, cairo example...fun spring example...ClutterBox2D)
+
+* Working around a WebKit bug (which is actually fixed in SVN now), should
+ prevent a crash that happened sometimes with C modules.
+
+* Clutter animatev wrapper looks up property type wrapper now, so as to avoid
+ having to pass [GObject.TYPE_FOO, bar]
+
+* Implement some varargs functions which can be implemented on top of non-vararg
+ variants in JavaScript extensions.
+
+* JSON stuff (stringify,parse) is now in gnome-js-common.
+
+* Add seed_value_to_format to API, for converting an Array of SeedValue based
+ on a format string.
+
+* Install seed-debug.h so modules can make use of it.
+
+* Search path now works in nonstandard prefix, default search path includes
+ gnome-js-common moduledir (from pkgconfig).
+
+* Support to/from Date objects to time_t.
+
+== Seed 0.7, "Another Side of Bob Dylan" (2009.05.13) ==
+
+* Support for library init methods.
+
+* The REPL now supports multi-line entry.
+
+* Signal disconnection.
+
+* Significant Gtk-Doc reorganization.
+
+* New C modules:
+ * sandbox - provides sandboxed JavaScriptCore contexts.
+ * DBus - Client side DBus bindings.
+ * libxml - XML parsing, XPath, etc.
+
+* Examples:
+ * New: ClutterPad (initially by Johan Euphrosine).
+ * New: dbus-banshee, dbus-consolekit, dbus-networkmanager
+ * New: xml-dom.js xml-tree.js, xml-xpath.js.
+ * Pango examples have returned.
+ * Same Seed performance is increased significantly.
+ * Many examples now use "recent" style; some were completely rewritten
+
+* Improvements to test system, and quite a few more tests.
+
+* Improvements to error checking/handling in signal code.
+
+* Reorganization of API related to GClosure handling, much cleaner and easier.
+
+* Several new API methods.
+
+* GC related crash fixes.
+
+* Improvements to seed_value_to_string (mostly formatting improvements).
+
+* Void methods now properly return undefined instead of null.
+
+* seed_make_exception takes format strings now.
+
+== Seed 0.6, "Beatles for Sale" (2009.04.29) ==
+
+* Significant build fixes and cleanups. Should build on more distros
+ with weird libffis now.
+
+* Depend on GObject-introspection from GIT.
+
+* Some API additions.
+
+* Reimplement Seed.import_namespace in terms of the new imports system,
+ will be entirely deprecated for 0.6.
+
+* Improve memory management in signals and closures.
+
+* Rewrite the GType subclassing to avoid using FFI,
+ saves memory and improves performance.
+
+* GType "init" now means "constructor" and not "instance init".
+
+* Signal installation, is now handled by an array on the type definition
+ rather than in class_init (which was clunky and C-like).
+
+* Lots of new documentation, including a documentation index, a description
+ of the mapping from C to JavaScript, an example index, and updates to
+ the rest of the documentation.
+
+* Significant cleanup of all of the examples, a lot of them had bit
+ rotted a bit, being written months ago.
+
+== Seed 0.5, "Transformer" (2009.04.16) ==
+
+* Many, many crash fixes.
+
+* Significantly better base memory usage (on the order of MB) for some apps.
+
+* Enums use Gtk.WindowType.NORMAL instead of Gtk.WindowType.Normal.
+ This may break existing code in subtle ways (as Gtk.WindowType.Normal
+ will now be JavaScript null).
+
+* instance_init is now just init when creating new GTypes. This will require
+ changes in any code using subclassing.
+
+* Enum types are validated when passed in to functions now.
+
+* Complete rewrite of import system, spanning GObject Introspection namespaces,
+ native modules, and JavaScript files, which is compatible with Gjs.
+
+* Along with above, deprecate Seed.import_namespace.
+
+* New 'os' module, similar to that of Python. Provides access to a significant
+ quantity of low-level system features unavailable from GLib.
+
+* Significant updates to Canvas module - most features are compatible with the
+ Mozilla/WebKit implementations at this point.
+
+* Clutter 0.9 animation API wrappers.
+
+* Add seed_repl_expose; gives the ability to drop to a JavaScript REPL from
+ within C, and magically expose JSValueRefs to JS in a simple way.
+
+* Seed.readline history persists between sessions (stored in ~/.seed_history)
+
+* Support for several more array types.
+
+* Added Seed.breakpoint(), which inserts a breakpoint instruction.
+
+* API additions: Lots of API additions. Including a significant amount
+of API documentation.
+
+* New examples:
+ * opengl-glib examples (teapot, gears, triangle)
+ * Gtk Twitter client (from the Ars Technica article)
+ * Same Seed (Clutter 0.9 rewrite of Same Gnome)
+ * Clutter-COGL example
+ * Reddit client (Gio and JSON)
+ * Library of Clutter "slide transitions"
+ * Rewrote clutter example for 0.9
+
+* The Lights Off example now lives in Gnome Games.
+
+== Seed 0.3, "Wednesday Morning 3AM" (2008.12.31) ==
+
+* Lots of memory changes. Memory usage isn't bad anymore,
+ reference counting actually works (no big leaks or anything anymore
+ ...there are still a few very small ones you can trigger).
+ Memory usage of most of the examples after they've loaded,
+ has about halved (or more in cases like the browser) since 0.1,
+ and now compares very favorably to other
+ dynamic languages. Lots of g_slice_alloc, which comes off
+ quite nicely when creating bunches of small structs like ClutterColor.
+
+* Innumerable bug fixes.
+
+* Structs work now! Things like GdkRectangle: you can allocate them,
+ get at their members, etc.
+ * Including struct "literals, i.e." stage.set_color({red: 255, alpha: 220}).
+
+* GObject subclassing, which was rushed in to a 0.1 point release,
+ is reliable now! signal installation too.
+
+* Multiple context support, rather than the silly global context.
+
+* Support for string array argument conversion.
+
+* C extension Modules
+ * readline
+ * Multiprocessing -- Simple IPC pipes. Just an example, really.
+ * sqlite
+ * canvas -- A little, toy, mostly functional but incomplete HTML Canvas
+ implementation. May be useful until we have cairo bindings.
+ Supports SVG/PDF output.
+
+* Signals use userdata now. The 'this' argument was removed,
+ as it really just lead to organizational issues.
+
+* object.signal.connect is defined for connecting by strings
+ (allows for connecting to detailed signals, like property notifications)
+
+* 'out' arguments of methods work, granted in a rather poor fashion,
+ not sure of the best way to do this yet.
+
+* Enums use Gtk.WindowType.Normal instead of Gtk.WindowType.normal,
+ may break existing code in subtle ways (as Gtk.WindowType.normal
+ will now be JavaScript null).
+
+* Licensing update - libseed is LGPL. The trivial examples are BSD,
+ the more complete ones are GPL.
+
+* Lots of leaks fixed, and also some reference bugs that lead to crashing.
+
+* External API is pretty usable now.
+
+* External API example (Turtle Graphics)
+
+* Threading sort of works now. It's rather unpredictable,
+ but async callbacks and stuff are fine.
+
+* Many more Seed examples. Ranging from Gnio Server, to threading. The
+ browser example is pretty neat now, and has sqlite bookmarks, WebInspector,
+ and a few other tidbits. lightsoff and browser are the two highlight examples
+ to play with.
+
+* Skeleton GTK-Doc for API
+
+* New builtins: Seed.spawn, Seed.repl/glib_repl/thread_repl.
+ Kind of useful for debugging.
+
+* Removed builtins: Seed.prototype: Now use Gtk.Window.prototype
+ Seed.closure, Automatically handled now.
+ Seed.closure_native, automagic.
+ Seed.readline, moved in to module.
diff --git a/README b/README
new file mode 100644
index 0000000..b552a96
--- /dev/null
+++ b/README
@@ -0,0 +1,27 @@
+=== Seed README ===
+
+Seed is a library and interpreter, dynamically bridging (through gobject-introspection) the WebKit JavaScriptCore engine with the GObject type system. In a more concrete sense, Seed enables you to immediately write applications around a significant portion of the GNOME platform, and easily embed JavaScript as a scripting language in your GObject library.
+
+Seed recommends WebKitGtk+ 3.0 (built against gtk+-3.0). If you want to use WebKitGtk+ 1.0, append "--with-webkit=1.0" to your configuration arguments.
+
+Website: http://live.gnome.org/Seed
+SVN: git://git.gnome.org/seed
+
+Dependencies (Ubuntu package name):
+ * gobject-introspection (gobject-introspection)
+ * gobject-introspection-glib (gobject-introspection-glib)
+ * gir-repository (gobject-introspection-repository)
+ * webkit (libwebkit-dev)
+ * readline (libreadline-dev)
+ * ffi (libffi-dev)
+ * gnome-js-common (gnome-js-common)
+
+Recommended Dependencies (Ubuntu package name):
+ * gobject-introspection-freedesktop
+ * sqlite3 (libsqlite3-dev)
+ * soup (libsoup2.4-dev)
+ * clutter (libclutter-1.0-dev)
+ * clutter-gtk (libclutter-gtk-0.10-dev)
+ * cairo (libcairo-dev)
+ * gtk-doc (gtk-doc-tools)
+ * dbus (libdbus-1-dev)
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..58783ff
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1946 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 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.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+ dnl NLS is obligatory
+ [USE_NLS=yes
+ AC_SUBST(USE_NLS)
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ AC_CHECK_HEADER(libintl.h,
+ [gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !ngettext ("","", 1)],
+ gt_cv_func_ngettext_libc=yes,
+ gt_cv_func_ngettext_libc=no)
+ ])
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes,
+ gt_cv_func_dgettext_libc=no)
+ ])
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])])
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)],
+ :,-liconv)
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ AC_CHECK_FUNCS(dcgettext)
+ MSGFMT_OPTS=
+ AC_MSG_CHECKING([if msgfmt accepts -c])
+ GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+ AC_SUBST(MSGFMT_OPTS)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share and
+ dnl and CATOBJEXT=.gmo in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac])
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+ ])
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is not GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.ac.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(PO_IN_DATADIR_TRUE)
+ AC_SUBST(PO_IN_DATADIR_FALSE)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+
+ GLIB_LC_MESSAGES
+ GLIB_WITH_NLS
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+ localedir=`eval echo "${libdir}/locale"`
+else
+ localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+ [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_ac,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+#
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+ m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
+
+
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+
+ dnl check for tools we added during development
+ AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
+ AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
+ AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
+
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH([html-dir],
+ AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST([HTML_DIR])
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE([gtk-doc],
+ AS_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [[default=no]]]),,
+ [enable_gtk_doc=no])
+
+ if test x$enable_gtk_doc = xyes; then
+ ifelse([$1],[],
+ [PKG_CHECK_EXISTS([gtk-doc],,
+ AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+ [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+ AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
+ dnl don't check for glib if we build glib
+ if test "x$PACKAGE_NAME" != "xglib"; then
+ dnl don't fail if someone does not have glib
+ PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,)
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to build gtk-doc documentation])
+ AC_MSG_RESULT($enable_gtk_doc)
+
+ dnl enable/disable output formats
+ AC_ARG_ENABLE([gtk-doc-html],
+ AS_HELP_STRING([--enable-gtk-doc-html],
+ [build documentation in html format [[default=yes]]]),,
+ [enable_gtk_doc_html=yes])
+ AC_ARG_ENABLE([gtk-doc-pdf],
+ AS_HELP_STRING([--enable-gtk-doc-pdf],
+ [build documentation in pdf format [[default=no]]]),,
+ [enable_gtk_doc_pdf=no])
+
+ if test -z "$GTKDOC_MKPDF"; then
+ enable_gtk_doc_pdf=no
+ fi
+
+
+ AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
+ AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+ AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
+])
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 40 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL], [
+AC_PREREQ([2.50])dnl
+AC_REQUIRE([AM_NLS])dnl
+
+case "$am__api_version" in
+ 1.[01234])
+ AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+ ;;
+ *)
+ ;;
+esac
+
+if test -n "$1"; then
+ AC_MSG_CHECKING([for intltool >= $1])
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+ [INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ ]
+ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+ test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+ AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.])
+fi
+
+AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update])
+AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge])
+AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract])
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+ AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.])
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+_IT_SUBST(INTLTOOL_DESKTOP_RULE)
+_IT_SUBST(INTLTOOL_DIRECTORY_RULE)
+_IT_SUBST(INTLTOOL_KEYS_RULE)
+_IT_SUBST(INTLTOOL_PROP_RULE)
+_IT_SUBST(INTLTOOL_OAF_RULE)
+_IT_SUBST(INTLTOOL_PONG_RULE)
+_IT_SUBST(INTLTOOL_SERVER_RULE)
+_IT_SUBST(INTLTOOL_SHEET_RULE)
+_IT_SUBST(INTLTOOL_SOUNDLIST_RULE)
+_IT_SUBST(INTLTOOL_UI_RULE)
+_IT_SUBST(INTLTOOL_XAM_RULE)
+_IT_SUBST(INTLTOOL_KBD_RULE)
+_IT_SUBST(INTLTOOL_XML_RULE)
+_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+_IT_SUBST(INTLTOOL_CAVES_RULE)
+_IT_SUBST(INTLTOOL_SCHEMAS_RULE)
+_IT_SUBST(INTLTOOL_THEME_RULE)
+_IT_SUBST(INTLTOOL_SERVICE_RULE)
+_IT_SUBST(INTLTOOL_POLICY_RULE)
+
+# Check the gettext tools to make sure they are GNU
+AC_PATH_PROG(XGETTEXT, xgettext)
+AC_PATH_PROG(MSGMERGE, msgmerge)
+AC_PATH_PROG(MSGFMT, msgfmt)
+AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+ AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+ AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+ AC_MSG_ERROR([perl not found])
+fi
+AC_MSG_CHECKING([for perl >= 5.8.1])
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ AC_MSG_ERROR([perl 5.8.1 is required for intltool])
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ AC_MSG_RESULT([$IT_PERL_VERSION])
+fi
+if test "x$2" != "xno-xml"; then
+ AC_MSG_CHECKING([for XML::Parser])
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ AC_MSG_RESULT([ok])
+ else
+ AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+ fi
+fi
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[]],
+ [[extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr]])],
+ [DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share
+ dnl in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [DATADIRNAME=share], [DATADIRNAME=lib])
+ ;;
+ *)
+ [DATADIRNAME=lib]
+ ;;
+ esac])
+fi
+AC_SUBST(DATADIRNAME)
+
+IT_PO_SUBDIR([po])
+
+])
+
+
+# IT_PO_SUBDIR(DIRNAME)
+# ---------------------
+# All po subdirs have to be declared with this macro; the subdir "po" is
+# declared by IT_PROG_INTLTOOL.
+#
+AC_DEFUN([IT_PO_SUBDIR],
+[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+dnl
+dnl The following CONFIG_COMMANDS should be executed at the very end
+dnl of config.status.
+AC_CONFIG_COMMANDS_PRE([
+ AC_CONFIG_COMMANDS([$1/stamp-it], [
+ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then
+ AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.])
+ fi
+ rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+ >"$1/stamp-it.tmp"
+ [sed '/^#/d
+ s/^[[].*] *//
+ /^[ ]*$/d
+ '"s|^| $ac_top_srcdir/|" \
+ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+ ]
+ [sed '/^POTFILES =/,/[^\\]$/ {
+ /^POTFILES =/!d
+ r $1/POTFILES
+ }
+ ' "$1/Makefile.in" >"$1/Makefile"]
+ rm -f "$1/Makefile.tmp"
+ mv "$1/stamp-it.tmp" "$1/stamp-it"
+ ])
+])dnl
+])
+
+# _IT_SUBST(VARIABLE)
+# -------------------
+# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+#
+AC_DEFUN([_IT_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
+
+# deprecated macros
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+
+
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE([nls],
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT([$USE_NLS])
+ AC_SUBST([USE_NLS])
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+#
+# 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|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+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.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have 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_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ 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
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[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])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[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://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 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.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# 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, 2006, 2008
+# 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 9
+
+# 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])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+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, 2006, 2009
+# 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 10
+
+# 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], UPC, [depcc="$UPC" am_compiler_list=],
+ [$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
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ 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
+
+ # 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. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ 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
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj 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])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# 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 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ 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.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 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 16
+
+# 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.62])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
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+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
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])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)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+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
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# 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_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 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
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+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, 2008
+# 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 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ 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, 2009 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_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.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
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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 6
+
+# 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
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# 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, 2006 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 for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 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_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],
+[m4_foreach_w([_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, 2008
+# 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 5
+
+# 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
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# 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) 2009 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 1
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# 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="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 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_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# 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
+
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
diff --git a/compile b/compile
new file mode 100755
index 0000000..c0096a7
--- /dev/null
+++ b/compile
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2009-10-06.20; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.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, 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, see <http://www.gnu.org/licenses/>.
+
+# 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# 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-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..40eaed4
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1517 @@
+#! /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, 2006, 2007, 2008, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
+
+timestamp='2011-05-11'
+
+# 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. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a 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.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+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, 2006, 2007, 2008, 2009, 2010, 2011 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 "$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 ;;
+ sh5el) machine=sh5le-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 -q __ELF__
+ 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 ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-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'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ 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 ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ 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:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-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:*:[4567])
+ 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 -q __LP64__
+ 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:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *: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 ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-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 ;;
+ 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 -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
+ fi
+ exit ;;
+ avr32*: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 ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ 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:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ 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 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-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 ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-tilera-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 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.[02]*:*)
+ 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 i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-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; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ 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; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; 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.[02]*:*)
+ 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 ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ 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 ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-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
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
+ 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 ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ 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 ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ 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://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+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/config.h.in b/config.h.in
new file mode 100644
index 0000000..fec644c
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,95 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* GETTEXT package name */
+#undef GETTEXT_PACKAGE
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the `webkitgtk-1.0' library (-lwebkitgtk-1.0). */
+#undef HAVE_LIBWEBKITGTK_1_0
+
+/* Define to 1 if you have the `webkitgtk-3.0' library (-lwebkitgtk-3.0). */
+#undef HAVE_LIBWEBKITGTK_3_0
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <pty.h> header file. */
+#undef HAVE_PTY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..30fdca8
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1760 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
+
+timestamp='2011-03-23'
+
+# 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 GNU 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.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# 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, 2006, 2007, 2008, 2009, 2010, 2011 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-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-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 | -microblaze)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -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 | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | open8 \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pyramid \
+ | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+ # 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
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-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-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | 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-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pyramid-* \
+ | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # 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
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ 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
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-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
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ 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
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ 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
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ 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
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ 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 | ppcbe) basic_machine=powerpc-unknown
+ ;;
+ ppc-* | ppcbe-*)
+ 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
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ 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
+ ;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ 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
+ ;;
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
+ ;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
+ 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
+ ;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-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[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ 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.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -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* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -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* | -cegcc* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -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* | -toppers* | -drops* | -es*)
+ # 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
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -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
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ 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
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ 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
+ ;;
+ -cnk*|-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/configure b/configure
new file mode 100755
index 0000000..f50ae92
--- /dev/null
+++ b/configure
@@ -0,0 +1,18152 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68 for seed 3.2.0.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+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
+IFS=$as_save_IFS
+
+ ;;
+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
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; 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
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# 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
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_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 sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# 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'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='seed'
+PACKAGE_TARNAME='seed'
+PACKAGE_VERSION='3.2.0'
+PACKAGE_STRING='seed 3.2.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+GTK_DOC_USE_REBASE_FALSE
+GTK_DOC_USE_REBASE_TRUE
+GTK_DOC_USE_LIBTOOL_FALSE
+GTK_DOC_USE_LIBTOOL_TRUE
+GTK_DOC_BUILD_PDF_FALSE
+GTK_DOC_BUILD_PDF_TRUE
+GTK_DOC_BUILD_HTML_FALSE
+GTK_DOC_BUILD_HTML_TRUE
+ENABLE_GTK_DOC_FALSE
+ENABLE_GTK_DOC_TRUE
+GTKDOC_DEPS_LIBS
+GTKDOC_DEPS_CFLAGS
+HTML_DIR
+GTKDOC_MKPDF
+GTKDOC_REBASE
+GTKDOC_CHECK
+SEED_DEBUG_CFLAGS
+PROFILE_MODULES_FALSE
+PROFILE_MODULES_TRUE
+SEED_PROFILE_LIBS
+SEED_PROFILE_CFLAGS
+BUILD_MPFR_MODULE
+BUILD_MPFR_MODULE_FALSE
+BUILD_MPFR_MODULE_TRUE
+BUILD_GETTEXT_MODULE
+BUILD_GETTEXT_MODULE_FALSE
+BUILD_GETTEXT_MODULE_TRUE
+BUILD_CAIRO_MODULE
+BUILD_CAIRO_MODULE_FALSE
+BUILD_CAIRO_MODULE_TRUE
+BUILD_GTKBUILDER_MODULE
+BUILD_GTKBUILDER_MODULE_FALSE
+BUILD_GTKBUILDER_MODULE_TRUE
+GTK_LDFLAGS
+GTK_LIBS
+GTK_CFLAGS
+BUILD_DYNAMICOBJECT_MODULE
+BUILD_DYNAMICOBJECT_MODULE_FALSE
+BUILD_DYNAMICOBJECT_MODULE_TRUE
+BUILD_LIBXML_MODULE
+BUILD_LIBXML_MODULE_FALSE
+BUILD_LIBXML_MODULE_TRUE
+LIBXML_LDFLAGS
+LIBXML_LIBS
+LIBXML_CFLAGS
+BUILD_FFI_MODULE
+BUILD_FFI_MODULE_FALSE
+BUILD_FFI_MODULE_TRUE
+BUILD_OS_MODULE
+BUILD_OS_MODULE_FALSE
+BUILD_OS_MODULE_TRUE
+DBUSGLIB_LDFLAGS
+DBUSGLIB_LIBS
+DBUSGLIB_CFLAGS
+DBUS_LDFLAGS
+DBUS_LIBS
+DBUS_CFLAGS
+BUILD_DBUS_MODULE
+BUILD_DBUS_MODULE_FALSE
+BUILD_DBUS_MODULE_TRUE
+BUILD_EXAMPLE_MODULE
+BUILD_EXAMPLE_MODULE_FALSE
+BUILD_EXAMPLE_MODULE_TRUE
+BUILD_SQLITE_MODULE
+BUILD_SQLITE_MODULE_FALSE
+BUILD_SQLITE_MODULE_TRUE
+SQLITE_LDFLAGS
+SQLITE_LIBS
+SQLITE_CFLAGS
+BUILD_MULTIPROCESSING_MODULE
+BUILD_MULTIPROCESSING_MODULE_FALSE
+BUILD_MULTIPROCESSING_MODULE_TRUE
+BUILD_READLINE_MODULE
+BUILD_READLINE_MODULE_FALSE
+BUILD_READLINE_MODULE_TRUE
+BUILD_CANVAS_MODULE
+BUILD_CANVAS_MODULE_FALSE
+BUILD_CANVAS_MODULE_TRUE
+GDK_LDFLAGS
+GDK_LIBS
+GDK_CFLAGS
+CAIRO_LDFLAGS
+CAIRO_LIBS
+CAIRO_CFLAGS
+GTHREAD_LIBS
+GTHREAD_CFLAGS
+GNOME_JS_DIR
+GNOME_JS_LIBS
+GNOME_JS_CFLAGS
+GOBJECT_INTROSPECTION_VERSION
+GOBJECT_INTROSPECTION_LDFLAGS
+GOBJECT_INTROSPECTION_LIBS
+GOBJECT_INTROSPECTION_CFLAGS
+SEED_GTK_VERSION
+WEBKIT_LDFLAGS
+WEBKIT_PC
+WEBKIT_LIBS
+WEBKIT_CFLAGS
+FFI_LDFLAGS
+FFI_LIBS
+FFI_CFLAGS
+ALL_LINGUAS
+INTLTOOL_PERL
+MSGMERGE
+INTLTOOL_POLICY_RULE
+INTLTOOL_SERVICE_RULE
+INTLTOOL_THEME_RULE
+INTLTOOL_SCHEMAS_RULE
+INTLTOOL_CAVES_RULE
+INTLTOOL_XML_NOMERGE_RULE
+INTLTOOL_XML_RULE
+INTLTOOL_KBD_RULE
+INTLTOOL_XAM_RULE
+INTLTOOL_UI_RULE
+INTLTOOL_SOUNDLIST_RULE
+INTLTOOL_SHEET_RULE
+INTLTOOL_SERVER_RULE
+INTLTOOL_PONG_RULE
+INTLTOOL_OAF_RULE
+INTLTOOL_PROP_RULE
+INTLTOOL_KEYS_RULE
+INTLTOOL_DIRECTORY_RULE
+INTLTOOL_DESKTOP_RULE
+INTLTOOL_EXTRACT
+INTLTOOL_MERGE
+INTLTOOL_UPDATE
+MKINSTALLDIRS
+POSUB
+POFILES
+PO_IN_DATADIR_FALSE
+PO_IN_DATADIR_TRUE
+INTLLIBS
+INSTOBJEXT
+GMOFILES
+DATADIRNAME
+CATOBJEXT
+CATALOGS
+XGETTEXT
+GMSGFMT
+MSGFMT_OPTS
+MSGFMT
+USE_NLS
+GETTEXT_PACKAGE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_silent_rules
+enable_nls
+with_webkit
+enable_canvas_module
+enable_readline_module
+enable_multiprocessing_module
+enable_sqlite_module
+enable_example_module
+enable_dbus_module
+enable_os_module
+enable_ffi_module
+enable_libxml_module
+enable_dynamicobject_module
+enable_gtkbuilder_module
+enable_cairo_module
+enable_gettext_module
+enable_mpfr_module
+enable_profile
+enable_profile_modules
+enable_debug
+with_html_dir
+enable_gtk_doc
+enable_gtk_doc_html
+enable_gtk_doc_pdf
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+FFI_CFLAGS
+FFI_LIBS
+WEBKIT_CFLAGS
+WEBKIT_LIBS
+GOBJECT_INTROSPECTION_CFLAGS
+GOBJECT_INTROSPECTION_LIBS
+GNOME_JS_CFLAGS
+GNOME_JS_LIBS
+GTHREAD_CFLAGS
+GTHREAD_LIBS
+CAIRO_CFLAGS
+CAIRO_LIBS
+GDK_CFLAGS
+GDK_LIBS
+SQLITE_CFLAGS
+SQLITE_LIBS
+DBUS_CFLAGS
+DBUS_LIBS
+DBUSGLIB_CFLAGS
+DBUSGLIB_LIBS
+LIBXML_CFLAGS
+LIBXML_LIBS
+GTK_CFLAGS
+GTK_LIBS
+GTKDOC_DEPS_CFLAGS
+GTKDOC_DEPS_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# 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.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+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
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -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)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$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 ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$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 ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ 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 ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=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 ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_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'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+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
+ $as_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
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# 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 the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ 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
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# 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 seed 3.2.0 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 \`..']
+
+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]
+ --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]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/seed]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_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
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of seed 3.2.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-maintainer-mode disable 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-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')
+ --disable-nls do not use Native Language Support
+ --enable-canvas-module enable the canvas Seed module. [default=yes]
+ --enable-readline-module
+ enable the readline Seed module. [default=yes]
+ --enable-multiprocessing-module
+ enable the multiprocessing Seed module.
+ [default=yes]
+ --enable-sqlite-module enable the sqlite Seed module. [default=yes]
+ --enable-example-module enable the example Seed module. [default=yes]
+ --enable-dbus-module enable the dbus Seed module. [default=yes]
+ --enable-os-module enable the os Seed module. [default=yes]
+ --enable-ffi-module enable the ffi Seed module. [default=yes]
+ --enable-libxml-module enable the libxml Seed module. [default=yes]
+ --enable-dynamicobject-module
+ enable the DynamicObject Seed module. [default=yes]
+ --enable-gtkbuilder-module
+ enable the gtkbuilder Seed module. [default=yes]
+ --enable-cairo-module enable the cairo Seed module. [default=yes]
+ --enable-gettext-module enable the gettext Seed module. [default=yes]
+ --enable-mpfr-module enable the mpfr Seed module. [default=yes]
+ --enable-profile turn on profiling [default=no]
+ --enable-profile-modules
+ turn on profiling for modules [default=no]
+ --enable-debug enable verbose debugging. [default=no]
+ --enable-gtk-doc use gtk-doc to build documentation [[default=no]]
+ --enable-gtk-doc-html build documentation in html format [[default=yes]]
+ --enable-gtk-doc-pdf build documentation in pdf format [[default=no]]
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+ --with-webkit=[3.0/1.0] Select the Webkit backend, default=3.0
+ --with-html-dir=PATH path to installed docs
+
+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>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
+ PKG_CONFIG_PATH
+ directories to add to pkg-config's search path
+ PKG_CONFIG_LIBDIR
+ path overriding pkg-config's built-in search path
+ FFI_CFLAGS C compiler flags for FFI, overriding pkg-config
+ FFI_LIBS linker flags for FFI, overriding pkg-config
+ WEBKIT_CFLAGS
+ C compiler flags for WEBKIT, overriding pkg-config
+ WEBKIT_LIBS linker flags for WEBKIT, overriding pkg-config
+ GOBJECT_INTROSPECTION_CFLAGS
+ C compiler flags for GOBJECT_INTROSPECTION, overriding
+ pkg-config
+ GOBJECT_INTROSPECTION_LIBS
+ linker flags for GOBJECT_INTROSPECTION, overriding pkg-config
+ GNOME_JS_CFLAGS
+ C compiler flags for GNOME_JS, overriding pkg-config
+ GNOME_JS_LIBS
+ linker flags for GNOME_JS, overriding pkg-config
+ GTHREAD_CFLAGS
+ C compiler flags for GTHREAD, overriding pkg-config
+ GTHREAD_LIBS
+ linker flags for GTHREAD, overriding pkg-config
+ CAIRO_CFLAGS
+ C compiler flags for CAIRO, overriding pkg-config
+ CAIRO_LIBS linker flags for CAIRO, overriding pkg-config
+ GDK_CFLAGS C compiler flags for GDK, overriding pkg-config
+ GDK_LIBS linker flags for GDK, overriding pkg-config
+ SQLITE_CFLAGS
+ C compiler flags for SQLITE, overriding pkg-config
+ SQLITE_LIBS linker flags for SQLITE, overriding pkg-config
+ DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config
+ DBUS_LIBS linker flags for DBUS, overriding pkg-config
+ DBUSGLIB_CFLAGS
+ C compiler flags for DBUSGLIB, overriding pkg-config
+ DBUSGLIB_LIBS
+ linker flags for DBUSGLIB, overriding pkg-config
+ LIBXML_CFLAGS
+ C compiler flags for LIBXML, overriding pkg-config
+ LIBXML_LIBS linker flags for LIBXML, overriding pkg-config
+ GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
+ GTK_LIBS linker flags for GTK, overriding pkg-config
+ GTKDOC_DEPS_CFLAGS
+ C compiler flags for GTKDOC_DEPS, overriding pkg-config
+ GTKDOC_DEPS_LIBS
+ linker flags for GTKDOC_DEPS, 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.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested 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
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+seed configure 3.2.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 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
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); 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 $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* 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_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by seed $as_me 3.2.0, which was
+generated by GNU Autoconf 2.68. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+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`
+/usr/bin/hostinfo = `(/usr/bin/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=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&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_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append 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
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset 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: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > 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
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ 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. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_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 $ac_precious_vars; 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,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_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
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_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.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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
+
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; 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
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# 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.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+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. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$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'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# 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".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "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 $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+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='seed'
+ VERSION='3.2.0'
+
+
+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"}
+
+# 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 -'
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to disable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$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
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 -std 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 -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 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
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-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=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&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
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ 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
+
+ # 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. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ 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
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$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
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4'
+macro_revision='1.3293'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+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 delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ 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_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-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.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&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
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+ $as_echo_n "(cached) " >&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* | cegcc*)
+ # 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;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ 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
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ 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`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # 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.
+ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ 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`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# 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
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$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
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ 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
+
+
+
+
+
+
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+ $as_echo_n "(cached) " >&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
+aix[4-9]*)
+ 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',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | 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
+ ;;
+
+haiku*)
+ 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])(-bit)?( [LM]SB)? 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
+ ;;
+
+interix[3-9]*)
+ # 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* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ 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=pass_all
+ ;;
+
+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
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ 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
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+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 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+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
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 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 for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+ $as_echo_n "(cached) " >&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]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# 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
+
+# Try without a prefix underscore, 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.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$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=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && 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 <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_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 -rf 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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 '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ 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-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ 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"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+ $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.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))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-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-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=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-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
+
+
+
+
+
+
+
+ # Check whether --enable-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
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+ $as_echo_n "(cached) " >&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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+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
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&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 <<_LT_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
+
+_LT_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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&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 <<_LT_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
+
+_LT_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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+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;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# 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 the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$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
+echo "$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 -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$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:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$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=
+
+
+ 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*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # 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'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # 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).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ 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'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # 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
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ lt_prog_compiler_pic='-Xcompiler -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
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # 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'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # 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'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ 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
+
+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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$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:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_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
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$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:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$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:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_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
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # 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_|_GLOBAL__F[ID]_.*'
+ # 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.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ link_all_deplibs=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = 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>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [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
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ 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
+ ;;
+ esac
+ ;;
+
+ 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* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ 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/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ 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
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ 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'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # 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; func_echo_all \"$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' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; 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 '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; 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~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $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 <<_LT_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.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $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
+ ;;
+ *)
+ # 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.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ 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
+ ;;
+
+ 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $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
+ ;;
+
+ aix[4-9]*)
+ 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
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ 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") || (\$ 2 == "W")) && (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].*|aix[5-9]*)
+ 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_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ 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
+ :
+ 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
+ link_all_deplibs=no
+ 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
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # 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.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+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 func_echo_all "${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.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+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'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ 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*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ 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
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ 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'
+ # Don't use ranlib
+ old_postinstall_cmds='chmod 644 $oldlib'
+ postlink_cmds='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ 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 `func_echo_all "$deplibs" | $SED '\''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'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ 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* | dragonfly*)
+ archive_cmds='$CC -shared $pic_flag -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 $pic_flag ${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 && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared $pic_flag ${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_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=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 && test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag ${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'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${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
+
+ ;;
+ 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_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ 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
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ 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
+ else
+ ld_shlibs=no
+ 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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ 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} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${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='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_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
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${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 $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ 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'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ 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 and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ 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* | sco3.2v5.0.[024]*)
+ 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='${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,$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
+ ;;
+
+ 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
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# 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.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 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\":${as_lineno-$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=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # 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.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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"
+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'
+ ;;
+
+aix[4-9]*)
+ 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*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ 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=`func_echo_all "$lib" | $SED '\''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'
+ ;;
+ esac
+ ;;
+
+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* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ 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~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ 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="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ 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
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ 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
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # 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'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # 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}${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`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ 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
+ ;;
+
+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
+ ;;
+ *) # from 4.6 on, and DragonFly
+ 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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ 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=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ 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'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ 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* | k*bsd*-gnu | kopensolaris*-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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # 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>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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'
+ ;;
+
+netbsdelf*-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='NetBSD ld.elf_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=qnx
+ 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='ldqnx.so'
+ ;;
+
+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"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+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
+ 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
+ shlibpath_overrides_runpath=yes
+ 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'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ 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'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/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}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent 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_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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; 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
+
+
+
+
+
+
+ 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* | cegcc*)
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; 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
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+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"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+ $as_echo_n "(cached) " >&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 <<_LT_EOF
+#line $LINENO "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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$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\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+ $as_echo_n "(cached) " >&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 <<_LT_EOF
+#line $LINENO "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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&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"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "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"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&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
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+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"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+
+
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+fi
+
+# Use AM_SILENT_RULES if present
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=0;;
+esac
+AM_BACKSLASH='\'
+
+
+ensureflag() {
+ flag="$1"; shift
+ result="$@"
+
+ case " ${result} " in
+ *[\ \ ]${flag}[\ \ ]*) ;;
+ *) result="${flag} ${result}" ;;
+ esac
+
+ echo ${result}
+}
+
+
+GETTEXT_PACKAGE=seed
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+ for ac_header in locale.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LOCALE_H 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_locale_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if ${am_cv_val_LC_MESSAGES+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_val_LC_MESSAGES=yes
+else
+ am_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
+$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+ fi
+ fi
+ USE_NLS=yes
+
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = xyes; then :
+ gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
+$as_echo_n "checking for ngettext in libc... " >&6; }
+if ${gt_cv_func_ngettext_libc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_ngettext_libc=yes
+else
+ gt_cv_func_ngettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
+$as_echo "$gt_cv_func_ngettext_libc" >&6; }
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
+$as_echo_n "checking for dgettext in libc... " >&6; }
+if ${gt_cv_func_dgettext_libc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_dgettext_libc=yes
+else
+ gt_cv_func_dgettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
+$as_echo "$gt_cv_func_dgettext_libc" >&6; }
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ for ac_func in bind_textdomain_codeset
+do :
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
+$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
+if ${ac_cv_lib_intl_bindtextdomain+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char bindtextdomain ();
+int
+main ()
+{
+return bindtextdomain ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_bindtextdomain=yes
+else
+ ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
+$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
+if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_ngettext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_ngettext=yes
+else
+ ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
+$as_echo_n "checking for dgettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_dgettext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dgettext ();
+int
+main ()
+{
+return dgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_dgettext=yes
+else
+ ac_cv_lib_intl_dgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
+$as_echo "$ac_cv_lib_intl_dgettext" >&6; }
+if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
+ gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
+$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_ngettext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_ngettext=yes
+else
+ ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
+$as_echo_n "checking for dcgettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_dcgettext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dcgettext ();
+int
+main ()
+{
+return dcgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_dcgettext=yes
+else
+ ac_cv_lib_intl_dcgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
+$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
+if test "x$ac_cv_lib_intl_dcgettext" = xyes; then :
+ gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv
+else
+ :
+fi
+
+else
+ :
+fi
+
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ for ac_func in bind_textdomain_codeset
+do :
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ /*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ for ac_func in dcgettext
+do :
+ ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
+if test "x$ac_cv_func_dcgettext" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+fi
+done
+
+ MSGFMT_OPTS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
+$as_echo_n "checking if msgfmt accepts -c... " >&6; }
+ cat >conftest.foo <<_ACEOF
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+_ACEOF
+if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
+ ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+echo "$as_me: failed input was:" >&5
+sed 's/^/| /' conftest.foo >&5
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ /*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ case $host in
+ *-*-solaris*)
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+
+fi
+
+
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ ac_config_commands="$ac_config_commands default-1"
+
+
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+
+
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+case "$am__api_version" in
+ 1.01234)
+ as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5
+ ;;
+ *)
+ ;;
+esac
+
+if test -n "0.35.0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5
+$as_echo_n "checking for intltool >= 0.35.0... " >&6; }
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+ INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5
+$as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; }
+ test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+ as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5
+fi
+
+# Extract the first word of "intltool-update", so it can be a program name with args.
+set dummy intltool-update; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_UPDATE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE
+if test -n "$INTLTOOL_UPDATE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5
+$as_echo "$INTLTOOL_UPDATE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "intltool-merge", so it can be a program name with args.
+set dummy intltool-merge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INTLTOOL_MERGE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_MERGE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE
+if test -n "$INTLTOOL_MERGE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5
+$as_echo "$INTLTOOL_MERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "intltool-extract", so it can be a program name with args.
+set dummy intltool-extract; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_EXTRACT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT
+if test -n "$INTLTOOL_EXTRACT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5
+$as_echo "$INTLTOOL_EXTRACT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+ as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check the gettext tools to make sure they are GNU
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XGETTEXT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XGETTEXT=$ac_cv_path_XGETTEXT
+if test -n "$XGETTEXT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MSGMERGE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MSGMERGE=$ac_cv_path_MSGMERGE
+if test -n "$MSGMERGE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGFMT="$MSGFMT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MSGFMT=$ac_cv_path_MSGFMT
+if test -n "$MSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+ as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+ as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INTLTOOL_PERL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+if test -n "$INTLTOOL_PERL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5
+$as_echo "$INTLTOOL_PERL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$INTLTOOL_PERL"; then
+ as_fn_error $? "perl not found" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5
+$as_echo_n "checking for perl >= 5.8.1... " >&6; }
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5
+$as_echo "$IT_PERL_VERSION" >&6; }
+fi
+if test "x" != "xno-xml"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5
+$as_echo_n "checking for XML::Parser... " >&6; }
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ else
+ as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5
+ fi
+fi
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ DATADIRNAME=share
+else
+ case $host in
+ *-*-solaris*)
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+ DATADIRNAME=share
+else
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFI" >&5
+$as_echo_n "checking for FFI... " >&6; }
+
+if test -n "$FFI_CFLAGS"; then
+ pkg_cv_FFI_CFLAGS="$FFI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libffi") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$FFI_LIBS"; then
+ pkg_cv_FFI_LIBS="$FFI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libffi") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi" 2>&1`
+ else
+ FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$FFI_PKG_ERRORS" >&5
+
+ have_ffi_pkgconfig=no
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ have_ffi_pkgconfig=no
+else
+ FFI_CFLAGS=$pkg_cv_FFI_CFLAGS
+ FFI_LIBS=$pkg_cv_FFI_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ have_ffi_pkgconfig=yes
+fi
+
+if test x"$have_ffi_pkgconfig" = xno ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi.h" >&5
+$as_echo_n "checking for ffi.h... " >&6; }
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ffi.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ have_ffi_h=yes
+else
+ have_ffi_h=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+ if test x"$have_ffi_h" = x"yes"; then
+ save_LIBS=$LIBS
+ if test x"$with_ffi" = x"yes" || test x"$with_ffi" = x"auto"; then
+ other_LIBS=
+ else
+ other_LIBS=$with_ffi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ffi_call" >&5
+$as_echo_n "checking for library containing ffi_call... " >&6; }
+if ${ac_cv_search_ffi_call+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ffi_call ();
+int
+main ()
+{
+return ffi_call ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' ffi; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $other_LIBS $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_ffi_call=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_ffi_call+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_ffi_call+:} false; then :
+
+else
+ ac_cv_search_ffi_call=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ffi_call" >&5
+$as_echo "$ac_cv_search_ffi_call" >&6; }
+ac_res=$ac_cv_search_ffi_call
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+ as_fn_error $? "libffi not found" "$LINENO" 5
+fi
+
+ if test x"$ac_cv_search_ffi_call" = x"none required" ; then
+ FFI_LDFLAGS=$other_LIBS
+ else
+ FFI_LDFLAGS="$ac_cv_search_ffi_call $other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+ if test x"$have_ffi_h" != x"yes" ; then
+ as_fn_error $? "ffi.h not found" "$LINENO" 5
+ fi
+
+ FFI_CFLAGS=
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ffi_h" >&5
+$as_echo "$have_ffi_h" >&6; }
+fi
+
+
+
+
+
+
+
+# Check whether --with-webkit was given.
+if test "${with_webkit+set}" = set; then :
+ withval=$with_webkit;
+else
+ with_webkit=3.0
+fi
+
+
+case $with_webkit in #(
+ 3.0) :
+
+ WEBKIT_PC=webkitgtk-3.0
+ SEED_GTK_VERSION=-gtk3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSContextGroupCreate in -lwebkitgtk-3.0" >&5
+$as_echo_n "checking for JSContextGroupCreate in -lwebkitgtk-3.0... " >&6; }
+if ${ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwebkitgtk-3.0 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JSContextGroupCreate ();
+int
+main ()
+{
+return JSContextGroupCreate ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate=yes
+else
+ ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate" >&5
+$as_echo "$ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate" >&6; }
+if test "x$ac_cv_lib_webkitgtk_3_0_JSContextGroupCreate" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBWEBKITGTK_3_0 1
+_ACEOF
+
+ LIBS="-lwebkitgtk-3.0 $LIBS"
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSContextGroupCreate in -ljavascriptcoregtk-3.0" >&5
+$as_echo_n "checking for JSContextGroupCreate in -ljavascriptcoregtk-3.0... " >&6; }
+if ${ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljavascriptcoregtk-3.0 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JSContextGroupCreate ();
+int
+main ()
+{
+return JSContextGroupCreate ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate=yes
+else
+ ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate" >&5
+$as_echo "$ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate" >&6; }
+if test "x$ac_cv_lib_javascriptcoregtk_3_0_JSContextGroupCreate" = xyes; then :
+ WEBKIT_PC=javascriptcoregtk-3.0
+fi
+
+fi
+
+ ;; #(
+ 1.0) :
+
+ save_LIBS=$LIBSma
+ LIBS=`pkg-config --libs webkit-1.0`
+ WEBKIT_PC=webkitgtk-1.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSContextGroupCreate in -lwebkitgtk-1.0" >&5
+$as_echo_n "checking for JSContextGroupCreate in -lwebkitgtk-1.0... " >&6; }
+if ${ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwebkitgtk-1.0 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JSContextGroupCreate ();
+int
+main ()
+{
+return JSContextGroupCreate ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate=yes
+else
+ ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate" >&5
+$as_echo "$ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate" >&6; }
+if test "x$ac_cv_lib_webkitgtk_1_0_JSContextGroupCreate" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBWEBKITGTK_1_0 1
+_ACEOF
+
+ LIBS="-lwebkitgtk-1.0 $LIBS"
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSContextGroupCreate in -ljavascriptcoregtk-1.0" >&5
+$as_echo_n "checking for JSContextGroupCreate in -ljavascriptcoregtk-1.0... " >&6; }
+if ${ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljavascriptcoregtk-1.0 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JSContextGroupCreate ();
+int
+main ()
+{
+return JSContextGroupCreate ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate=yes
+else
+ ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate" >&5
+$as_echo "$ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate" >&6; }
+if test "x$ac_cv_lib_javascriptcoregtk_1_0_JSContextGroupCreate" = xyes; then :
+ WEBKIT_PC=javascriptcoregtk-1.0
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSContextGroupCreate in -lwebkit-1.0" >&5
+$as_echo_n "checking for JSContextGroupCreate in -lwebkit-1.0... " >&6; }
+if ${ac_cv_lib_webkit_1_0_JSContextGroupCreate+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwebkit-1.0 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char JSContextGroupCreate ();
+int
+main ()
+{
+return JSContextGroupCreate ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_webkit_1_0_JSContextGroupCreate=yes
+else
+ ac_cv_lib_webkit_1_0_JSContextGroupCreate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_webkit_1_0_JSContextGroupCreate" >&5
+$as_echo "$ac_cv_lib_webkit_1_0_JSContextGroupCreate" >&6; }
+if test "x$ac_cv_lib_webkit_1_0_JSContextGroupCreate" = xyes; then :
+ WEBKIT_PC=webkit-1.0
+else
+ as_fn_error $? "The installed version of WebKit is too old. Seed requires WebKit SVN revision 35442 or greater." "$LINENO" 5
+fi
+
+fi
+
+fi
+
+ LIBS=$save_LIBS
+ ;; #(
+ *) :
+ as_fn_error $? "Invalid argument for --with-webkit" "$LINENO" 5
+ ;;
+esac
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
+$as_echo_n "checking for WEBKIT... " >&6; }
+
+if test -n "$WEBKIT_CFLAGS"; then
+ pkg_cv_WEBKIT_CFLAGS="$WEBKIT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$WEBKIT_PC\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$WEBKIT_PC") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBKIT_CFLAGS=`$PKG_CONFIG --cflags "$WEBKIT_PC" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$WEBKIT_LIBS"; then
+ pkg_cv_WEBKIT_LIBS="$WEBKIT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$WEBKIT_PC\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$WEBKIT_PC") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBKIT_LIBS=`$PKG_CONFIG --libs "$WEBKIT_PC" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ WEBKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$WEBKIT_PC" 2>&1`
+ else
+ WEBKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$WEBKIT_PC" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$WEBKIT_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements ($WEBKIT_PC) were not met:
+
+$WEBKIT_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 WEBKIT_CFLAGS
+and WEBKIT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 WEBKIT_CFLAGS
+and WEBKIT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ WEBKIT_CFLAGS=$pkg_cv_WEBKIT_CFLAGS
+ WEBKIT_LIBS=$pkg_cv_WEBKIT_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GOBJECT_INTROSPECTION" >&5
+$as_echo_n "checking for GOBJECT_INTROSPECTION... " >&6; }
+
+if test -n "$GOBJECT_INTROSPECTION_CFLAGS"; then
+ pkg_cv_GOBJECT_INTROSPECTION_CFLAGS="$GOBJECT_INTROSPECTION_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GOBJECT_INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags "gobject-introspection-1.0 >= 0.6.3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GOBJECT_INTROSPECTION_LIBS"; then
+ pkg_cv_GOBJECT_INTROSPECTION_LIBS="$GOBJECT_INTROSPECTION_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GOBJECT_INTROSPECTION_LIBS=`$PKG_CONFIG --libs "gobject-introspection-1.0 >= 0.6.3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GOBJECT_INTROSPECTION_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gobject-introspection-1.0 >= 0.6.3" 2>&1`
+ else
+ GOBJECT_INTROSPECTION_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gobject-introspection-1.0 >= 0.6.3" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GOBJECT_INTROSPECTION_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gobject-introspection-1.0 >= 0.6.3) were not met:
+
+$GOBJECT_INTROSPECTION_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 GOBJECT_INTROSPECTION_CFLAGS
+and GOBJECT_INTROSPECTION_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GOBJECT_INTROSPECTION_CFLAGS
+and GOBJECT_INTROSPECTION_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GOBJECT_INTROSPECTION_CFLAGS=$pkg_cv_GOBJECT_INTROSPECTION_CFLAGS
+ GOBJECT_INTROSPECTION_LIBS=$pkg_cv_GOBJECT_INTROSPECTION_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+
+GOBJECT_INTROSPECTION_VERSION=`$PKG_CONFIG --modversion gobject-introspection-1.0 | $AWK '{ split($1, a , ".") ; printf "0x%02d%02d%02d", a[1], a[2], a[3] }'`
+
+
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_JS" >&5
+$as_echo_n "checking for GNOME_JS... " >&6; }
+
+if test -n "$GNOME_JS_CFLAGS"; then
+ pkg_cv_GNOME_JS_CFLAGS="$GNOME_JS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-js-common\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-js-common") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GNOME_JS_CFLAGS=`$PKG_CONFIG --cflags "gnome-js-common" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GNOME_JS_LIBS"; then
+ pkg_cv_GNOME_JS_LIBS="$GNOME_JS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-js-common\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-js-common") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GNOME_JS_LIBS=`$PKG_CONFIG --libs "gnome-js-common" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GNOME_JS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnome-js-common" 2>&1`
+ else
+ GNOME_JS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnome-js-common" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GNOME_JS_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gnome-js-common) were not met:
+
+$GNOME_JS_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 GNOME_JS_CFLAGS
+and GNOME_JS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GNOME_JS_CFLAGS
+and GNOME_JS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GNOME_JS_CFLAGS=$pkg_cv_GNOME_JS_CFLAGS
+ GNOME_JS_LIBS=$pkg_cv_GNOME_JS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+GNOME_JS_DIR=`pkg-config --variable=moduledir gnome-js-common`
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5
+$as_echo_n "checking for GTHREAD... " >&6; }
+
+if test -n "$GTHREAD_CFLAGS"; then
+ pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTHREAD_LIBS"; then
+ pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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 --print-errors --cflags --libs "gthread-2.0" 2>&1`
+ else
+ GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTHREAD_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gthread-2.0) were not met:
+
+$GTHREAD_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 GTHREAD_CFLAGS
+and GTHREAD_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GTHREAD_CFLAGS
+and GTHREAD_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS
+ GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+# Check whether --enable-canvas-module was given.
+if test "${enable_canvas_module+set}" = set; then :
+ enableval=$enable_canvas_module; want_canvas_module=$enableval
+else
+ want_canvas_module="yes"
+fi
+
+
+if test x"$want_canvas_module" = x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
+$as_echo_n "checking for CAIRO... " >&6; }
+
+if test -n "$CAIRO_CFLAGS"; then
+ pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$CAIRO_LIBS"; then
+ pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo" 2>&1`
+ else
+ CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$CAIRO_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (cairo) were not met:
+
+$CAIRO_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 CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
+ CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+ if test x"$with_webkit" = x"3.0" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDK" >&5
+$as_echo_n "checking for GDK... " >&6; }
+
+if test -n "$GDK_CFLAGS"; then
+ pkg_cv_GDK_CFLAGS="$GDK_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-3.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gdk-3.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GDK_CFLAGS=`$PKG_CONFIG --cflags "gdk-3.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GDK_LIBS"; then
+ pkg_cv_GDK_LIBS="$GDK_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-3.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gdk-3.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GDK_LIBS=`$PKG_CONFIG --libs "gdk-3.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GDK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdk-3.0" 2>&1`
+ else
+ GDK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdk-3.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GDK_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gdk-3.0) were not met:
+
+$GDK_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 GDK_CFLAGS
+and GDK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GDK_CFLAGS
+and GDK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GDK_CFLAGS=$pkg_cv_GDK_CFLAGS
+ GDK_LIBS=$pkg_cv_GDK_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ else
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDK" >&5
+$as_echo_n "checking for GDK... " >&6; }
+
+if test -n "$GDK_CFLAGS"; then
+ pkg_cv_GDK_CFLAGS="$GDK_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gdk-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GDK_CFLAGS=`$PKG_CONFIG --cflags "gdk-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GDK_LIBS"; then
+ pkg_cv_GDK_LIBS="$GDK_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gdk-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GDK_LIBS=`$PKG_CONFIG --libs "gdk-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GDK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdk-2.0" 2>&1`
+ else
+ GDK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdk-2.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GDK_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gdk-2.0) were not met:
+
+$GDK_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 GDK_CFLAGS
+and GDK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GDK_CFLAGS
+and GDK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GDK_CFLAGS=$pkg_cv_GDK_CFLAGS
+ GDK_LIBS=$pkg_cv_GDK_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ fi
+
+
+fi
+
+ if test "x$want_canvas_module" = "xyes"; then
+ BUILD_CANVAS_MODULE_TRUE=
+ BUILD_CANVAS_MODULE_FALSE='#'
+else
+ BUILD_CANVAS_MODULE_TRUE='#'
+ BUILD_CANVAS_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-readline-module was given.
+if test "${enable_readline_module+set}" = set; then :
+ enableval=$enable_readline_module; want_readline_module=$enableval
+else
+ want_readline_module="yes"
+fi
+
+if test x"$want_readline_module" = x"yes" ; then
+ ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+
+else
+ as_fn_error $? "the readline library is not installed." "$LINENO" 5
+fi
+
+
+fi
+
+ if test "x$want_readline_module" = "xyes"; then
+ BUILD_READLINE_MODULE_TRUE=
+ BUILD_READLINE_MODULE_FALSE='#'
+else
+ BUILD_READLINE_MODULE_TRUE='#'
+ BUILD_READLINE_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-multiprocessing-module was given.
+if test "${enable_multiprocessing_module+set}" = set; then :
+ enableval=$enable_multiprocessing_module; want_multiprocessing_module=$enableval
+else
+ want_multiprocessing_module="yes"
+fi
+
+
+ if test "x$want_multiprocessing_module" = "xyes"; then
+ BUILD_MULTIPROCESSING_MODULE_TRUE=
+ BUILD_MULTIPROCESSING_MODULE_FALSE='#'
+else
+ BUILD_MULTIPROCESSING_MODULE_TRUE='#'
+ BUILD_MULTIPROCESSING_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-sqlite-module was given.
+if test "${enable_sqlite_module+set}" = set; then :
+ enableval=$enable_sqlite_module; want_sqlite_module=$enableval
+else
+ want_sqlite_module="yes"
+fi
+
+
+if test x"$want_sqlite_module" = x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SQLITE" >&5
+$as_echo_n "checking for SQLITE... " >&6; }
+
+if test -n "$SQLITE_CFLAGS"; then
+ pkg_cv_SQLITE_CFLAGS="$SQLITE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "sqlite3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_SQLITE_CFLAGS=`$PKG_CONFIG --cflags "sqlite3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$SQLITE_LIBS"; then
+ pkg_cv_SQLITE_LIBS="$SQLITE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "sqlite3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_SQLITE_LIBS=`$PKG_CONFIG --libs "sqlite3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ SQLITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sqlite3" 2>&1`
+ else
+ SQLITE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sqlite3" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$SQLITE_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (sqlite3) were not met:
+
+$SQLITE_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 SQLITE_CFLAGS
+and SQLITE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 SQLITE_CFLAGS
+and SQLITE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ SQLITE_CFLAGS=$pkg_cv_SQLITE_CFLAGS
+ SQLITE_LIBS=$pkg_cv_SQLITE_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+fi
+
+ if test "x$want_sqlite_module" = "xyes"; then
+ BUILD_SQLITE_MODULE_TRUE=
+ BUILD_SQLITE_MODULE_FALSE='#'
+else
+ BUILD_SQLITE_MODULE_TRUE='#'
+ BUILD_SQLITE_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-example-module was given.
+if test "${enable_example_module+set}" = set; then :
+ enableval=$enable_example_module; want_example_module=$enableval
+else
+ want_example_module="yes"
+fi
+
+
+ if test "x$want_example_module" = "xyes"; then
+ BUILD_EXAMPLE_MODULE_TRUE=
+ BUILD_EXAMPLE_MODULE_FALSE='#'
+else
+ BUILD_EXAMPLE_MODULE_TRUE='#'
+ BUILD_EXAMPLE_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-dbus-module was given.
+if test "${enable_dbus_module+set}" = set; then :
+ enableval=$enable_dbus_module; want_dbus_module=$enableval
+else
+ want_dbus_module="yes"
+fi
+
+
+
+ if test "x$want_dbus_module" = "xyes"; then
+ BUILD_DBUS_MODULE_TRUE=
+ BUILD_DBUS_MODULE_FALSE='#'
+else
+ BUILD_DBUS_MODULE_TRUE='#'
+ BUILD_DBUS_MODULE_FALSE=
+fi
+
+
+
+if test x"$want_dbus_module" = x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
+$as_echo_n "checking for DBUS... " >&6; }
+
+if test -n "$DBUS_CFLAGS"; then
+ pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$DBUS_LIBS"; then
+ pkg_cv_DBUS_LIBS="$DBUS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1" 2>&1`
+ else
+ DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$DBUS_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (dbus-1) were not met:
+
+$DBUS_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 DBUS_CFLAGS
+and DBUS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 DBUS_CFLAGS
+and DBUS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS
+ DBUS_LIBS=$pkg_cv_DBUS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUSGLIB" >&5
+$as_echo_n "checking for DBUSGLIB... " >&6; }
+
+if test -n "$DBUSGLIB_CFLAGS"; then
+ pkg_cv_DBUSGLIB_CFLAGS="$DBUSGLIB_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-glib-1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DBUSGLIB_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$DBUSGLIB_LIBS"; then
+ pkg_cv_DBUSGLIB_LIBS="$DBUSGLIB_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-glib-1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DBUSGLIB_LIBS=`$PKG_CONFIG --libs "dbus-glib-1" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ DBUSGLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-glib-1" 2>&1`
+ else
+ DBUSGLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-glib-1" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$DBUSGLIB_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (dbus-glib-1) were not met:
+
+$DBUSGLIB_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 DBUSGLIB_CFLAGS
+and DBUSGLIB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 DBUSGLIB_CFLAGS
+and DBUSGLIB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ DBUSGLIB_CFLAGS=$pkg_cv_DBUSGLIB_CFLAGS
+ DBUSGLIB_LIBS=$pkg_cv_DBUSGLIB_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+fi
+
+
+
+# Check whether --enable-os-module was given.
+if test "${enable_os_module+set}" = set; then :
+ enableval=$enable_os_module; want_os_module=$enableval
+else
+ want_os_module="yes"
+fi
+
+
+
+ if test "x$want_os_module" = "xyes"; then
+ BUILD_OS_MODULE_TRUE=
+ BUILD_OS_MODULE_FALSE='#'
+else
+ BUILD_OS_MODULE_TRUE='#'
+ BUILD_OS_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-ffi-module was given.
+if test "${enable_ffi_module+set}" = set; then :
+ enableval=$enable_ffi_module; want_ffi_module=$enableval
+else
+ want_ffi_module="yes"
+fi
+
+
+
+ if test "x$want_ffi_module" = "xyes"; then
+ BUILD_FFI_MODULE_TRUE=
+ BUILD_FFI_MODULE_FALSE='#'
+else
+ BUILD_FFI_MODULE_TRUE='#'
+ BUILD_FFI_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-libxml-module was given.
+if test "${enable_libxml_module+set}" = set; then :
+ enableval=$enable_libxml_module; want_libxml_module=$enableval
+else
+ want_libxml_module="yes"
+fi
+
+
+if test x"$want_libxml_module" = x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML" >&5
+$as_echo_n "checking for LIBXML... " >&6; }
+
+if test -n "$LIBXML_CFLAGS"; then
+ pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$LIBXML_LIBS"; then
+ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ LIBXML_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1`
+ else
+ LIBXML_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LIBXML_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (libxml-2.0) were not met:
+
+$LIBXML_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 LIBXML_CFLAGS
+and LIBXML_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 LIBXML_CFLAGS
+and LIBXML_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS
+ LIBXML_LIBS=$pkg_cv_LIBXML_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+fi
+
+ if test "x$want_libxml_module" = "xyes"; then
+ BUILD_LIBXML_MODULE_TRUE=
+ BUILD_LIBXML_MODULE_FALSE='#'
+else
+ BUILD_LIBXML_MODULE_TRUE='#'
+ BUILD_LIBXML_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-os-module was given.
+if test "${enable_os_module+set}" = set; then :
+ enableval=$enable_os_module; want_os_module=$enableval
+else
+ want_os_module="yes"
+fi
+
+
+
+ if test "x$want_os_module" = "xyes"; then
+ BUILD_OS_MODULE_TRUE=
+ BUILD_OS_MODULE_FALSE='#'
+else
+ BUILD_OS_MODULE_TRUE='#'
+ BUILD_OS_MODULE_FALSE=
+fi
+
+
+
+
+# Check whether --enable-dynamicobject-module was given.
+if test "${enable_dynamicobject_module+set}" = set; then :
+ enableval=$enable_dynamicobject_module; want_dynamicobject_module=$enableval
+else
+ want_dynamicobject_module="yes"
+fi
+
+
+
+ if test "x$want_dynamicobject_module" = "xyes"; then
+ BUILD_DYNAMICOBJECT_MODULE_TRUE=
+ BUILD_DYNAMICOBJECT_MODULE_FALSE='#'
+else
+ BUILD_DYNAMICOBJECT_MODULE_TRUE='#'
+ BUILD_DYNAMICOBJECT_MODULE_FALSE=
+fi
+
+
+
+
+# Check whether --enable-gtkbuilder-module was given.
+if test "${enable_gtkbuilder_module+set}" = set; then :
+ enableval=$enable_gtkbuilder_module; want_gtkbuilder_module=$enableval
+else
+ want_gtkbuilder_module="yes"
+fi
+
+
+if test x"$want_gtkbuilder_module" = x"yes" ; then
+ if test x"$with_webkit" = x"3.0" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
+$as_echo_n "checking for GTK... " >&6; }
+
+if test -n "$GTK_CFLAGS"; then
+ pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-3.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTK_LIBS"; then
+ pkg_cv_GTK_LIBS="$GTK_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-3.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-3.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0" 2>&1`
+ else
+ GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gtk+-3.0) were not met:
+
+$GTK_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 GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
+ GTK_LIBS=$pkg_cv_GTK_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ else
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
+$as_echo_n "checking for GTK... " >&6; }
+
+if test -n "$GTK_CFLAGS"; then
+ pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTK_LIBS"; then
+ pkg_cv_GTK_LIBS="$GTK_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0" 2>&1`
+ else
+ GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (gtk+-2.0) were not met:
+
+$GTK_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 GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
+ GTK_LIBS=$pkg_cv_GTK_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ fi
+
+
+fi
+
+ if test "x$want_gtkbuilder_module" = "xyes"; then
+ BUILD_GTKBUILDER_MODULE_TRUE=
+ BUILD_GTKBUILDER_MODULE_FALSE='#'
+else
+ BUILD_GTKBUILDER_MODULE_TRUE='#'
+ BUILD_GTKBUILDER_MODULE_FALSE=
+fi
+
+
+
+
+# Check whether --enable-cairo-module was given.
+if test "${enable_cairo_module+set}" = set; then :
+ enableval=$enable_cairo_module; want_cairo_module=$enableval
+else
+ want_cairo_module="yes"
+fi
+
+
+if test x"$want_cairo_module" = x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
+$as_echo_n "checking for CAIRO... " >&6; }
+
+if test -n "$CAIRO_CFLAGS"; then
+ pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$CAIRO_LIBS"; then
+ pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo" 2>&1`
+ else
+ CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$CAIRO_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (cairo) were not met:
+
+$CAIRO_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 CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
+ CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+fi
+
+ if test "x$want_cairo_module" = "xyes"; then
+ BUILD_CAIRO_MODULE_TRUE=
+ BUILD_CAIRO_MODULE_FALSE='#'
+else
+ BUILD_CAIRO_MODULE_TRUE='#'
+ BUILD_CAIRO_MODULE_FALSE=
+fi
+
+
+
+
+# Check whether --enable-gettext-module was given.
+if test "${enable_gettext_module+set}" = set; then :
+ enableval=$enable_gettext_module; want_gettext_module=$enableval
+else
+ want_gettext_module="yes"
+fi
+
+
+ if test "x$want_gettext_module" = "xyes"; then
+ BUILD_GETTEXT_MODULE_TRUE=
+ BUILD_GETTEXT_MODULE_FALSE='#'
+else
+ BUILD_GETTEXT_MODULE_TRUE='#'
+ BUILD_GETTEXT_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-mpfr-module was given.
+if test "${enable_mpfr_module+set}" = set; then :
+ enableval=$enable_mpfr_module; want_mpfr_module=$enableval
+else
+ want_mpfr_module="yes"
+fi
+
+
+if test x"$want_mpfr_module" = x"yes" ; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <mpfr.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ have_mpfr_h=yes
+else
+ have_mpfr_h=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+ if test x"$have_mpfr_h" = x"yes"; then
+ save_LIBS=$LIBS
+ if test x"$with_mpfr" = x"yes" || test x"$with_mpfr" = x"auto"; then
+ other_LIBS=
+ else
+ other_LIBS=$with_mpfr
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing mpfr_init2" >&5
+$as_echo_n "checking for library containing mpfr_init2... " >&6; }
+if ${ac_cv_search_mpfr_init2+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char mpfr_init2 ();
+int
+main ()
+{
+return mpfr_init2 ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' mpfr; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $other_LIBS $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_mpfr_init2=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_mpfr_init2+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_mpfr_init2+:} false; then :
+
+else
+ ac_cv_search_mpfr_init2=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_mpfr_init2" >&5
+$as_echo "$ac_cv_search_mpfr_init2" >&6; }
+ac_res=$ac_cv_search_mpfr_init2
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+ as_fn_error $? "mpfr not found" "$LINENO" 5
+fi
+
+ if test x"$ac_cv_search_mpfr_call" = x"none required" ; then
+ MPFR_LDFLAGS=$other_LIBS
+ else
+ MPFR_LDFLAGS="$other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+ if test x"$have_mpfr_h" != x"yes" ; then
+ as_fn_error $? "mpfr.h not found" "$LINENO" 5
+ fi
+
+ MPFR_CFLAGS=
+fi
+
+ if test "x$want_mpfr_module" = "xyes"; then
+ BUILD_MPFR_MODULE_TRUE=
+ BUILD_MPFR_MODULE_FALSE='#'
+else
+ BUILD_MPFR_MODULE_TRUE='#'
+ BUILD_MPFR_MODULE_FALSE=
+fi
+
+
+
+# Check whether --enable-profile was given.
+if test "${enable_profile+set}" = set; then :
+ enableval=$enable_profile; enable_profile="yes"
+else
+ enable_profile="no"
+fi
+
+
+# Check whether --enable-profile-modules was given.
+if test "${enable_profile_modules+set}" = set; then :
+ enableval=$enable_profile_modules; enable_profile_modules="yes"
+else
+ enable_profile_modules="no"
+fi
+
+
+if test "x$enable_profile" = "xyes"; then
+ SEED_PROFILE_CFLAGS="-fprofile-arcs -ftest-coverage"
+ SEED_PROFILE_LIBS="-lgcov"
+ need_debug="yes"
+fi
+
+if test "x$enable_profile" = "xno"; then
+ enable_profile_modules="no"
+fi
+
+
+
+
+ if test "x$enable_profile_modules" = "xyes"; then
+ PROFILE_MODULES_TRUE=
+ PROFILE_MODULES_FALSE='#'
+else
+ PROFILE_MODULES_TRUE='#'
+ PROFILE_MODULES_FALSE=
+fi
+
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+ enableval=$enable_debug; enable_debug="yes"
+else
+ enable_debug="no"
+fi
+
+
+if test "x$enable_debug" = "xyes"; then
+ SEED_DEBUG_CFLAGS="-DSEED_ENABLE_DEBUG -g"
+ CFLAGS="-O0 -Wall"
+else
+ SEED_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
+ CFLAGS="-Wall"
+
+ if test "x$need_debug" = "xyes"; then
+ as_fn_error $? "debug must be enabled in order to enable profiling." "$LINENO" 5
+ fi
+fi
+
+
+
+for ac_header in pty.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default"
+if test "x$ac_cv_header_pty_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PTY_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+ # Extract the first word of "gtkdoc-check", so it can be a program name with args.
+set dummy gtkdoc-check; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_CHECK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_CHECK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK
+if test -n "$GTKDOC_CHECK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
+$as_echo "$GTKDOC_CHECK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ for ac_prog in gtkdoc-rebase
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_REBASE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_REBASE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE
+if test -n "$GTKDOC_REBASE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5
+$as_echo "$GTKDOC_REBASE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GTKDOC_REBASE" && break
+done
+test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true"
+
+ # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args.
+set dummy gtkdoc-mkpdf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_MKPDF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_MKPDF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF
+if test -n "$GTKDOC_MKPDF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5
+$as_echo "$GTKDOC_MKPDF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+# Check whether --with-html-dir was given.
+if test "${with_html_dir+set}" = set; then :
+ withval=$with_html_dir;
+else
+ with_html_dir='${datadir}/gtk-doc/html'
+fi
+
+ HTML_DIR="$with_html_dir"
+
+
+ # Check whether --enable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then :
+ enableval=$enable_gtk_doc;
+else
+ enable_gtk_doc=no
+fi
+
+
+ if test x$enable_gtk_doc = xyes; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.9\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.9") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ :
+else
+ as_fn_error $? "You need to have gtk-doc >= 1.9 installed to build $PACKAGE_NAME" "$LINENO" 5
+fi
+ if test "x$PACKAGE_NAME" != "xglib"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5
+$as_echo_n "checking for GTKDOC_DEPS... " >&6; }
+
+if test -n "$GTKDOC_DEPS_CFLAGS"; then
+ pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTKDOC_DEPS_LIBS"; then
+ pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+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
+ GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
+ else
+ GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTKDOC_DEPS_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0) were not met:
+
+$GTKDOC_DEPS_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 GTKDOC_DEPS_CFLAGS
+and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_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 GTKDOC_DEPS_CFLAGS
+and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS
+ GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
+$as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
+$as_echo "$enable_gtk_doc" >&6; }
+
+ # Check whether --enable-gtk-doc-html was given.
+if test "${enable_gtk_doc_html+set}" = set; then :
+ enableval=$enable_gtk_doc_html;
+else
+ enable_gtk_doc_html=yes
+fi
+
+ # Check whether --enable-gtk-doc-pdf was given.
+if test "${enable_gtk_doc_pdf+set}" = set; then :
+ enableval=$enable_gtk_doc_pdf;
+else
+ enable_gtk_doc_pdf=no
+fi
+
+
+ if test -z "$GTKDOC_MKPDF"; then
+ enable_gtk_doc_pdf=no
+ fi
+
+
+ if test x$enable_gtk_doc = xyes; then
+ ENABLE_GTK_DOC_TRUE=
+ ENABLE_GTK_DOC_FALSE='#'
+else
+ ENABLE_GTK_DOC_TRUE='#'
+ ENABLE_GTK_DOC_FALSE=
+fi
+
+ if test x$enable_gtk_doc_html = xyes; then
+ GTK_DOC_BUILD_HTML_TRUE=
+ GTK_DOC_BUILD_HTML_FALSE='#'
+else
+ GTK_DOC_BUILD_HTML_TRUE='#'
+ GTK_DOC_BUILD_HTML_FALSE=
+fi
+
+ if test x$enable_gtk_doc_pdf = xyes; then
+ GTK_DOC_BUILD_PDF_TRUE=
+ GTK_DOC_BUILD_PDF_FALSE='#'
+else
+ GTK_DOC_BUILD_PDF_TRUE='#'
+ GTK_DOC_BUILD_PDF_FALSE=
+fi
+
+ if test -n "$LIBTOOL"; then
+ GTK_DOC_USE_LIBTOOL_TRUE=
+ GTK_DOC_USE_LIBTOOL_FALSE='#'
+else
+ GTK_DOC_USE_LIBTOOL_TRUE='#'
+ GTK_DOC_USE_LIBTOOL_FALSE=
+fi
+
+ if test -n "$GTKDOC_REBASE"; then
+ GTK_DOC_USE_REBASE_TRUE=
+ GTK_DOC_USE_REBASE_FALSE='#'
+else
+ GTK_DOC_USE_REBASE_TRUE='#'
+ GTK_DOC_USE_REBASE_FALSE=
+fi
+
+
+
+ac_config_files="$ac_config_files seed.pc Makefile doc/index.html doc/conventions.html doc/runtime.html doc/tutorial-standalone/tutorial.html doc/modules/canvas/canvas.html doc/modules/multiprocessing/multiprocessing.html doc/modules/canvas/Makefile doc/modules/multiprocessing/Makefile doc/modules/readline/Makefile doc/modules/gtkbuilder/Makefile doc/modules/sqlite/Makefile doc/modules/sandbox/Makefile doc/mapping/mapping.html libseed/Makefile po/Makefile.in src/Makefile extensions/Makefile tests/Makefile tests/javascript/Makefile tests/javascript/gtypes/Makefile tests/javascript/signals/Makefile tests/javascript/structs/Makefile tests/c/Makefile doc/Makefile doc/modules/Makefile doc/modules/version.xml doc/tutorial-standalone/Makefile doc/reference/Makefile doc/reference/version.xml doc/mapping/Makefile modules/Makefile modules/example/Makefile modules/sqlite/Makefile modules/canvas/Makefile modules/readline/Makefile modules/multiprocessing/Makefile modules/sandbox/Makefile modules/os/Makefile modules/dbus/Makefile modules/dbus/util/Makefile modules/libxml/Makefile modules/cairo/Makefile modules/gtkbuilder/Makefile modules/gettext/Makefile modules/mpfr/Makefile modules/ffi/Makefile modules/DynamicObject/Makefile libseed/seed-path.h"
+
+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, we kill variables containing newlines.
+# 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.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ 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}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+ ac_config_commands="$ac_config_commands po/stamp-it"
+
+
+if test -z "${BUILD_CANVAS_MODULE_TRUE}" && test -z "${BUILD_CANVAS_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_CANVAS_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_READLINE_MODULE_TRUE}" && test -z "${BUILD_READLINE_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_READLINE_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MULTIPROCESSING_MODULE_TRUE}" && test -z "${BUILD_MULTIPROCESSING_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_MULTIPROCESSING_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_SQLITE_MODULE_TRUE}" && test -z "${BUILD_SQLITE_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_SQLITE_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXAMPLE_MODULE_TRUE}" && test -z "${BUILD_EXAMPLE_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_EXAMPLE_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DBUS_MODULE_TRUE}" && test -z "${BUILD_DBUS_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DBUS_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_OS_MODULE_TRUE}" && test -z "${BUILD_OS_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_OS_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_FFI_MODULE_TRUE}" && test -z "${BUILD_FFI_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_FFI_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_LIBXML_MODULE_TRUE}" && test -z "${BUILD_LIBXML_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_LIBXML_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_OS_MODULE_TRUE}" && test -z "${BUILD_OS_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_OS_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DYNAMICOBJECT_MODULE_TRUE}" && test -z "${BUILD_DYNAMICOBJECT_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DYNAMICOBJECT_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_GTKBUILDER_MODULE_TRUE}" && test -z "${BUILD_GTKBUILDER_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_GTKBUILDER_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_CAIRO_MODULE_TRUE}" && test -z "${BUILD_CAIRO_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_CAIRO_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_GETTEXT_MODULE_TRUE}" && test -z "${BUILD_GETTEXT_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_GETTEXT_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MPFR_MODULE_TRUE}" && test -z "${BUILD_MPFR_MODULE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_MPFR_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PROFILE_MODULES_TRUE}" && test -z "${PROFILE_MODULES_FALSE}"; then
+ as_fn_error $? "conditional \"PROFILE_MODULES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $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}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+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
+IFS=$as_save_IFS
+
+ ;;
+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
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; 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
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# 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
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# 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'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by seed $as_me 3.2.0, which was
+generated by GNU Autoconf 2.68. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ 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 the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+seed config.status 3.2.0
+configured by $0, generated by GNU Autoconf 2.68,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+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=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ 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 || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# 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
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "seed.pc") CONFIG_FILES="$CONFIG_FILES seed.pc" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/index.html") CONFIG_FILES="$CONFIG_FILES doc/index.html" ;;
+ "doc/conventions.html") CONFIG_FILES="$CONFIG_FILES doc/conventions.html" ;;
+ "doc/runtime.html") CONFIG_FILES="$CONFIG_FILES doc/runtime.html" ;;
+ "doc/tutorial-standalone/tutorial.html") CONFIG_FILES="$CONFIG_FILES doc/tutorial-standalone/tutorial.html" ;;
+ "doc/modules/canvas/canvas.html") CONFIG_FILES="$CONFIG_FILES doc/modules/canvas/canvas.html" ;;
+ "doc/modules/multiprocessing/multiprocessing.html") CONFIG_FILES="$CONFIG_FILES doc/modules/multiprocessing/multiprocessing.html" ;;
+ "doc/modules/canvas/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/canvas/Makefile" ;;
+ "doc/modules/multiprocessing/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/multiprocessing/Makefile" ;;
+ "doc/modules/readline/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/readline/Makefile" ;;
+ "doc/modules/gtkbuilder/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/gtkbuilder/Makefile" ;;
+ "doc/modules/sqlite/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/sqlite/Makefile" ;;
+ "doc/modules/sandbox/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/sandbox/Makefile" ;;
+ "doc/mapping/mapping.html") CONFIG_FILES="$CONFIG_FILES doc/mapping/mapping.html" ;;
+ "libseed/Makefile") CONFIG_FILES="$CONFIG_FILES libseed/Makefile" ;;
+ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "extensions/Makefile") CONFIG_FILES="$CONFIG_FILES extensions/Makefile" ;;
+ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/javascript/Makefile") CONFIG_FILES="$CONFIG_FILES tests/javascript/Makefile" ;;
+ "tests/javascript/gtypes/Makefile") CONFIG_FILES="$CONFIG_FILES tests/javascript/gtypes/Makefile" ;;
+ "tests/javascript/signals/Makefile") CONFIG_FILES="$CONFIG_FILES tests/javascript/signals/Makefile" ;;
+ "tests/javascript/structs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/javascript/structs/Makefile" ;;
+ "tests/c/Makefile") CONFIG_FILES="$CONFIG_FILES tests/c/Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "doc/modules/Makefile") CONFIG_FILES="$CONFIG_FILES doc/modules/Makefile" ;;
+ "doc/modules/version.xml") CONFIG_FILES="$CONFIG_FILES doc/modules/version.xml" ;;
+ "doc/tutorial-standalone/Makefile") CONFIG_FILES="$CONFIG_FILES doc/tutorial-standalone/Makefile" ;;
+ "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;;
+ "doc/reference/version.xml") CONFIG_FILES="$CONFIG_FILES doc/reference/version.xml" ;;
+ "doc/mapping/Makefile") CONFIG_FILES="$CONFIG_FILES doc/mapping/Makefile" ;;
+ "modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;;
+ "modules/example/Makefile") CONFIG_FILES="$CONFIG_FILES modules/example/Makefile" ;;
+ "modules/sqlite/Makefile") CONFIG_FILES="$CONFIG_FILES modules/sqlite/Makefile" ;;
+ "modules/canvas/Makefile") CONFIG_FILES="$CONFIG_FILES modules/canvas/Makefile" ;;
+ "modules/readline/Makefile") CONFIG_FILES="$CONFIG_FILES modules/readline/Makefile" ;;
+ "modules/multiprocessing/Makefile") CONFIG_FILES="$CONFIG_FILES modules/multiprocessing/Makefile" ;;
+ "modules/sandbox/Makefile") CONFIG_FILES="$CONFIG_FILES modules/sandbox/Makefile" ;;
+ "modules/os/Makefile") CONFIG_FILES="$CONFIG_FILES modules/os/Makefile" ;;
+ "modules/dbus/Makefile") CONFIG_FILES="$CONFIG_FILES modules/dbus/Makefile" ;;
+ "modules/dbus/util/Makefile") CONFIG_FILES="$CONFIG_FILES modules/dbus/util/Makefile" ;;
+ "modules/libxml/Makefile") CONFIG_FILES="$CONFIG_FILES modules/libxml/Makefile" ;;
+ "modules/cairo/Makefile") CONFIG_FILES="$CONFIG_FILES modules/cairo/Makefile" ;;
+ "modules/gtkbuilder/Makefile") CONFIG_FILES="$CONFIG_FILES modules/gtkbuilder/Makefile" ;;
+ "modules/gettext/Makefile") CONFIG_FILES="$CONFIG_FILES modules/gettext/Makefile" ;;
+ "modules/mpfr/Makefile") CONFIG_FILES="$CONFIG_FILES modules/mpfr/Makefile" ;;
+ "modules/ffi/Makefile") CONFIG_FILES="$CONFIG_FILES modules/ffi/Makefile" ;;
+ "modules/DynamicObject/Makefile") CONFIG_FILES="$CONFIG_FILES modules/DynamicObject/Makefile" ;;
+ "libseed/seed-path.h") CONFIG_FILES="$CONFIG_FILES libseed/seed-path.h" ;;
+ "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ 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 against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #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.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # 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. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ 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.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_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=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # 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
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# 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
+
+# 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//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# 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
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# 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
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# 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
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# 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
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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
+
+# 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
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# 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
+
+# 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
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# 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 a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# 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 DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# 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
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# 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
+
+# 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
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_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
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # 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)
+
+ if test x"$xsi_shell" = xyes; then
+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\ # positional parameters, so assign one to ordinary parameter first.\
+\ func_stripname_result=${3}\
+\ func_stripname_result=${func_stripname_result#"${1}"}\
+\ func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\ func_split_long_opt_name=${1%%=*}\
+\ func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\ func_split_short_opt_arg=${1#??}\
+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\ case ${1} in\
+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\ *) func_lo2o_result=${1} ;;\
+\ esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+ func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+ func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+ func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+ eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\ func_quote_for_eval "${2}"\
+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+ "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac ;;
+ "po/stamp-it":C)
+ if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then
+ as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5
+ fi
+ rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp"
+ >"po/stamp-it.tmp"
+ sed '/^#/d
+ s/^[[].*] *//
+ /^[ ]*$/d
+ '"s|^| $ac_top_srcdir/|" \
+ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES"
+
+ sed '/^POTFILES =/,/[^\\]$/ {
+ /^POTFILES =/!d
+ r po/POTFILES
+ }
+ ' "po/Makefile.in" >"po/Makefile"
+ rm -f "po/Makefile.tmp"
+ mv "po/stamp-it.tmp" "po/stamp-it"
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# 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 || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+echo "
+Build Configuration:
+ Debug......................$enable_debug
+ Profiling/Coverage.........$enable_profile
+ Profiling for Modules......$enable_profile_modules
+ gtk-doc....................$enable_gtk_doc
+
+Installation:
+ Prefix.....................$prefix
+
+Modules:
+ Canvas.....................$want_canvas_module
+ example....................$want_example_module
+ multiprocessing............$want_multiprocessing_module
+ readline...................$want_readline_module
+ SQLite.....................$want_sqlite_module
+ DBus.......................$want_dbus_module
+ libxml.....................$want_libxml_module
+ cairo......................$want_cairo_module
+ gtkbuilder.................$want_gtkbuilder_module
+ gettext....................$want_gettext_module
+ mpfr.......................$want_mpfr_module
+ ffi........................$want_ffi_module
+ Dynamic Object.............$want_dynamicobject_module
+"
+
+if test "x$want_readline_module" != "xyes"; then
+echo "WARNING: The readline module is not enabled.
+ Without this, the Seed REPL will not work;
+ however, most Seed applications will still run.
+"
+fi
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..acc2a24
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,501 @@
+AC_PREREQ(2.59)
+AC_INIT(seed, 3.2.0)
+
+AM_INIT_AUTOMAKE([1.7 -Wno-portability])
+AM_MAINTAINER_MODE([enable])
+AC_CONFIG_HEADERS([config.h])
+
+AC_CANONICAL_HOST
+
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+PKG_PROG_PKG_CONFIG
+
+# Use AM_SILENT_RULES if present
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+changequote(,)dnl
+ensureflag() {
+ flag="$1"; shift
+ result="$@"
+
+ case " ${result} " in
+ *[\ \ ]${flag}[\ \ ]*) ;;
+ *) result="${flag} ${result}" ;;
+ esac
+
+ echo ${result}
+}
+
+changequote([,])dnl
+
+dnl =====================Internationalization==================================
+GETTEXT_PACKAGE=seed
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name])
+AM_GLIB_GNU_GETTEXT
+IT_PROG_INTLTOOL([0.35.0])
+
+dnl ============================libffi=========================================
+PKG_CHECK_MODULES(FFI, libffi, have_ffi_pkgconfig=yes, have_ffi_pkgconfig=no)
+
+if test x"$have_ffi_pkgconfig" = xno ; then
+ AC_MSG_CHECKING(for ffi.h)
+
+ AC_TRY_CPP([#include <ffi.h>], have_ffi_h=yes, have_ffi_h=no)
+ if test x"$have_ffi_h" = x"yes"; then
+ save_LIBS=$LIBS
+ if test x"$with_ffi" = x"yes" || test x"$with_ffi" = x"auto"; then
+ other_LIBS=
+ else
+ other_LIBS=$with_ffi
+ fi
+
+ AC_SEARCH_LIBS(ffi_call,ffi,,AC_MSG_ERROR([libffi not found]),$other_LIBS)
+ if test x"$ac_cv_search_ffi_call" = x"none required" ; then
+ FFI_LDFLAGS=$other_LIBS
+ else
+ FFI_LDFLAGS="$ac_cv_search_ffi_call $other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+ if test x"$have_ffi_h" != x"yes" ; then
+ AC_MSG_ERROR([ffi.h not found])
+ fi
+
+ FFI_CFLAGS=
+
+ AC_MSG_RESULT([$have_ffi_h])
+fi
+
+AC_SUBST(FFI_LDFLAGS)
+AC_SUBST(FFI_CFLAGS)
+
+dnl ==============================WebKit=======================================
+m4_define([webkit_default], [3.0])
+
+AC_ARG_WITH([webkit],
+ [AC_HELP_STRING([--with-webkit=@<:@3.0/1.0@:>@],
+ [Select the Webkit backend, default=3.0])],
+ [],
+ [with_webkit=webkit_default])
+
+dnl=== support both 1.0 and 3.0 (default 3.0) ==
+AS_CASE([$with_webkit],
+ [3.0], [
+ WEBKIT_PC=webkitgtk-3.0
+ SEED_GTK_VERSION=-gtk3
+ AC_CHECK_LIB(webkitgtk-3.0, JSContextGroupCreate,,
+ AC_CHECK_LIB(javascriptcoregtk-3.0, JSContextGroupCreate,WEBKIT_PC=javascriptcoregtk-3.0))
+ ],
+ [1.0], [
+ save_LIBS=$LIBSma
+ LIBS=`pkg-config --libs webkit-1.0`
+ WEBKIT_PC=webkitgtk-1.0
+ AC_CHECK_LIB(webkitgtk-1.0, JSContextGroupCreate,,
+ AC_CHECK_LIB(javascriptcoregtk-1.0, JSContextGroupCreate,WEBKIT_PC=javascriptcoregtk-1.0,
+ AC_CHECK_LIB(webkit-1.0, JSContextGroupCreate,WEBKIT_PC=webkit-1.0,
+ AC_MSG_ERROR([The installed version of WebKit is too old. Seed requires WebKit SVN revision 35442 or greater.]))))
+ LIBS=$save_LIBS
+ ],
+
+ [AC_MSG_ERROR([Invalid argument for --with-webkit])]
+)
+PKG_CHECK_MODULES(WEBKIT, $WEBKIT_PC)
+AC_SUBST(WEBKIT_PC)
+AC_SUBST(WEBKIT_CFLAGS)
+AC_SUBST(WEBKIT_LDFLAGS)
+AC_SUBST(SEED_GTK_VERSION)
+
+dnl =========================Introspection=====================================
+
+PKG_CHECK_MODULES(GOBJECT_INTROSPECTION, gobject-introspection-1.0 >= 0.6.3)
+AC_SUBST(GOBJECT_INTROSPECTION_CFLAGS)
+AC_SUBST(GOBJECT_INTROSPECTION_LDFLAGS)
+
+GOBJECT_INTROSPECTION_VERSION=`$PKG_CONFIG --modversion gobject-introspection-1.0 | $AWK '{ split($1, a , ".") ; printf "0x%02d%02d%02d", a[[1]], a[[2]], a[[3]] }'`
+
+AC_SUBST(GOBJECT_INTROSPECTION_VERSION)
+
+
+
+
+dnl ========================GNOME-js common====================================
+PKG_CHECK_MODULES(GNOME_JS, gnome-js-common)
+GNOME_JS_DIR=`pkg-config --variable=moduledir gnome-js-common`
+AC_SUBST(GNOME_JS_DIR)
+
+dnl ========================GThread============================================
+PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
+
+dnl =============================Modules=======================================
+dnl ==== canvas ====
+AC_ARG_ENABLE(canvas-module,
+ AC_HELP_STRING([--enable-canvas-module],
+ [enable the canvas Seed module. [default=yes]]),
+ [want_canvas_module=$enableval],[want_canvas_module="yes"])
+
+if test x"$want_canvas_module" = x"yes" ; then
+ PKG_CHECK_MODULES(CAIRO, cairo)
+ AC_SUBST(CAIRO_CFLAGS)
+ AC_SUBST(CAIRO_LDFLAGS)
+ if test x"$with_webkit" = x"3.0" ; then
+ PKG_CHECK_MODULES(GDK, gdk-3.0)
+ else
+ PKG_CHECK_MODULES(GDK, gdk-2.0)
+ fi
+ AC_SUBST(GDK_CFLAGS)
+ AC_SUBST(GDK_LDFLAGS)
+fi
+
+AM_CONDITIONAL(BUILD_CANVAS_MODULE, test "x$want_canvas_module" = "xyes")
+AC_SUBST(BUILD_CANVAS_MODULE)
+
+dnl ==== readline ====
+AC_ARG_ENABLE(readline-module,
+ AC_HELP_STRING([--enable-readline-module],
+ [enable the readline Seed module. [default=yes]]),
+ [want_readline_module=$enableval],[want_readline_module="yes"])
+if test x"$want_readline_module" = x"yes" ; then
+ AC_CHECK_HEADER([readline/readline.h],,AC_MSG_ERROR([the readline library is not installed.]))
+fi
+
+AM_CONDITIONAL(BUILD_READLINE_MODULE, test "x$want_readline_module" = "xyes")
+AC_SUBST(BUILD_READLINE_MODULE)
+
+dnl ==== multiprocessing ====
+AC_ARG_ENABLE(multiprocessing-module,
+ AC_HELP_STRING([--enable-multiprocessing-module],
+ [enable the multiprocessing Seed module. [default=yes]]),
+ [want_multiprocessing_module=$enableval],
+ [want_multiprocessing_module="yes"])
+
+AM_CONDITIONAL(BUILD_MULTIPROCESSING_MODULE, test "x$want_multiprocessing_module" = "xyes")
+AC_SUBST(BUILD_MULTIPROCESSING_MODULE)
+
+dnl ==== sqlite ====
+AC_ARG_ENABLE(sqlite-module,
+ AC_HELP_STRING([--enable-sqlite-module],
+ [enable the sqlite Seed module. [default=yes]]),
+ [want_sqlite_module=$enableval],[want_sqlite_module="yes"])
+
+if test x"$want_sqlite_module" = x"yes" ; then
+ PKG_CHECK_MODULES(SQLITE, sqlite3)
+ AC_SUBST(SQLITE_CFLAGS)
+ AC_SUBST(SQLITE_LDFLAGS)
+fi
+
+AM_CONDITIONAL(BUILD_SQLITE_MODULE, test "x$want_sqlite_module" = "xyes")
+AC_SUBST(BUILD_SQLITE_MODULE)
+
+dnl ==== Example ====
+AC_ARG_ENABLE(example-module,
+ AC_HELP_STRING([--enable-example-module],
+ [enable the example Seed module. [default=yes]]),
+ [want_example_module=$enableval],[want_example_module="yes"])
+
+AM_CONDITIONAL(BUILD_EXAMPLE_MODULE, test "x$want_example_module" = "xyes")
+AC_SUBST(BUILD_EXAMPLE_MODULE)
+
+dnl ==== dbus ====
+AC_ARG_ENABLE(dbus-module,
+ AC_HELP_STRING([--enable-dbus-module],
+ [enable the dbus Seed module. [default=yes]]),
+ [want_dbus_module=$enableval],[want_dbus_module="yes"])
+
+
+AM_CONDITIONAL(BUILD_DBUS_MODULE, test "x$want_dbus_module" = "xyes")
+AC_SUBST(BUILD_DBUS_MODULE)
+
+if test x"$want_dbus_module" = x"yes" ; then
+ PKG_CHECK_MODULES(DBUS, dbus-1)
+ AC_SUBST(DBUS_CFLAGS)
+ AC_SUBST(DBUS_LDFLAGS)
+ PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1)
+ AC_SUBST(DBUSGLIB_CFLAGS)
+ AC_SUBST(DBUSGLIB_LDFLAGS)
+fi
+
+
+
+dnl ==== os ====
+AC_ARG_ENABLE(os-module,
+ AC_HELP_STRING([--enable-os-module],
+ [enable the os Seed module. [default=yes]]),
+ [want_os_module=$enableval],[want_os_module="yes"])
+
+
+AM_CONDITIONAL(BUILD_OS_MODULE, test "x$want_os_module" = "xyes")
+AC_SUBST(BUILD_OS_MODULE)
+
+dnl ==== ffi ====
+AC_ARG_ENABLE(ffi-module,
+ AC_HELP_STRING([--enable-ffi-module],
+ [enable the ffi Seed module. [default=yes]]),
+ [want_ffi_module=$enableval],[want_ffi_module="yes"])
+
+
+AM_CONDITIONAL(BUILD_FFI_MODULE, test "x$want_ffi_module" = "xyes")
+AC_SUBST(BUILD_FFI_MODULE)
+
+dnl ==== libxml ====
+AC_ARG_ENABLE(libxml-module,
+ AC_HELP_STRING([--enable-libxml-module],
+ [enable the libxml Seed module. [default=yes]]),
+ [want_libxml_module=$enableval],[want_libxml_module="yes"])
+
+if test x"$want_libxml_module" = x"yes" ; then
+ PKG_CHECK_MODULES(LIBXML, libxml-2.0)
+ AC_SUBST(LIBXML_CFLAGS)
+ AC_SUBST(LIBXML_LDFLAGS)
+fi
+
+AM_CONDITIONAL(BUILD_LIBXML_MODULE, test "x$want_libxml_module" = "xyes")
+AC_SUBST(BUILD_LIBXML_MODULE)
+
+dnl ==== os ====
+AC_ARG_ENABLE(os-module,
+ AC_HELP_STRING([--enable-os-module],
+ [enable the os Seed module. [default=yes]]),
+ [want_os_module=$enableval],[want_os_module="yes"])
+
+
+AM_CONDITIONAL(BUILD_OS_MODULE, test "x$want_os_module" = "xyes")
+AC_SUBST(BUILD_OS_MODULE)
+
+
+dnl ==== DynamicObject ====
+AC_ARG_ENABLE(dynamicobject-module,
+ AC_HELP_STRING([--enable-dynamicobject-module],
+ [enable the DynamicObject Seed module. [default=yes]]),
+ [want_dynamicobject_module=$enableval],[want_dynamicobject_module="yes"])
+
+
+AM_CONDITIONAL(BUILD_DYNAMICOBJECT_MODULE, test "x$want_dynamicobject_module" = "xyes")
+AC_SUBST(BUILD_DYNAMICOBJECT_MODULE)
+
+
+dnl ==== gtkbuilder ====
+AC_ARG_ENABLE(gtkbuilder-module,
+ AC_HELP_STRING([--enable-gtkbuilder-module],
+ [enable the gtkbuilder Seed module. [default=yes]]),
+ [want_gtkbuilder_module=$enableval],[want_gtkbuilder_module="yes"])
+
+if test x"$want_gtkbuilder_module" = x"yes" ; then
+ if test x"$with_webkit" = x"3.0" ; then
+ PKG_CHECK_MODULES(GTK, gtk+-3.0)
+ else
+ PKG_CHECK_MODULES(GTK, gtk+-2.0)
+ fi
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LDFLAGS)
+fi
+
+AM_CONDITIONAL(BUILD_GTKBUILDER_MODULE, test "x$want_gtkbuilder_module" = "xyes")
+AC_SUBST(BUILD_GTKBUILDER_MODULE)
+
+
+dnl ==== cairo ====
+AC_ARG_ENABLE(cairo-module,
+ AC_HELP_STRING([--enable-cairo-module],
+ [enable the cairo Seed module. [default=yes]]),
+ [want_cairo_module=$enableval],[want_cairo_module="yes"])
+
+if test x"$want_cairo_module" = x"yes" ; then
+ PKG_CHECK_MODULES(CAIRO, cairo)
+ AC_SUBST(CAIRO_CFLAGS)
+ AC_SUBST(CAIRO_LDFLAGS)
+fi
+
+AM_CONDITIONAL(BUILD_CAIRO_MODULE, test "x$want_cairo_module" = "xyes")
+AC_SUBST(BUILD_CAIRO_MODULE)
+
+
+dnl ==== gettext ====
+AC_ARG_ENABLE(gettext-module,
+ AC_HELP_STRING([--enable-gettext-module],
+ [enable the gettext Seed module. [default=yes]]),
+ [want_gettext_module=$enableval],[want_gettext_module="yes"])
+
+AM_CONDITIONAL(BUILD_GETTEXT_MODULE, test "x$want_gettext_module" = "xyes")
+AC_SUBST(BUILD_GETTEXT_MODULE)
+
+dnl ==== mpfr ====
+AC_ARG_ENABLE(mpfr-module,
+ AC_HELP_STRING([--enable-mpfr-module],
+ [enable the mpfr Seed module. [default=yes]]),
+ [want_mpfr_module=$enableval],[want_mpfr_module="yes"])
+
+if test x"$want_mpfr_module" = x"yes" ; then
+ AC_TRY_CPP([#include <mpfr.h>], have_mpfr_h=yes, have_mpfr_h=no)
+ if test x"$have_mpfr_h" = x"yes"; then
+ save_LIBS=$LIBS
+ if test x"$with_mpfr" = x"yes" || test x"$with_mpfr" = x"auto"; then
+ other_LIBS=
+ else
+ other_LIBS=$with_mpfr
+ fi
+
+ AC_SEARCH_LIBS(mpfr_init2,mpfr,,AC_MSG_ERROR([mpfr not found]),$other_LIBS)
+ if test x"$ac_cv_search_mpfr_call" = x"none required" ; then
+ MPFR_LDFLAGS=$other_LIBS
+ else
+ MPFR_LDFLAGS="$other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+ if test x"$have_mpfr_h" != x"yes" ; then
+ AC_MSG_ERROR([mpfr.h not found])
+ fi
+
+ MPFR_CFLAGS=
+fi
+
+AM_CONDITIONAL(BUILD_MPFR_MODULE, test "x$want_mpfr_module" = "xyes")
+AC_SUBST(BUILD_MPFR_MODULE)
+
+dnl ===========================Profiling=======================================
+AC_ARG_ENABLE(profile,
+ AC_HELP_STRING([--enable-profile],
+ [turn on profiling [default=no]]),
+ [enable_profile="yes"],[enable_profile="no"])
+
+AC_ARG_ENABLE(profile-modules,
+ AC_HELP_STRING([--enable-profile-modules],
+ [turn on profiling for modules [default=no]]),
+ [enable_profile_modules="yes"],[enable_profile_modules="no"])
+
+if test "x$enable_profile" = "xyes"; then
+ SEED_PROFILE_CFLAGS="-fprofile-arcs -ftest-coverage"
+ SEED_PROFILE_LIBS="-lgcov"
+ [need_debug="yes"]
+fi
+
+if test "x$enable_profile" = "xno"; then
+ [enable_profile_modules="no"]
+fi
+
+AC_SUBST(SEED_PROFILE_CFLAGS)
+AC_SUBST(SEED_PROFILE_LIBS)
+
+AM_CONDITIONAL(PROFILE_MODULES, test "x$enable_profile_modules" = "xyes")
+
+dnl =============================Debug=========================================
+AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug],
+ [enable verbose debugging. [default=no]]),
+ [enable_debug="yes"],[enable_debug="no"])
+
+if test "x$enable_debug" = "xyes"; then
+ SEED_DEBUG_CFLAGS="-DSEED_ENABLE_DEBUG -g"
+ CFLAGS="-O0 -Wall"
+else
+ SEED_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
+ CFLAGS="-Wall"
+
+ if test "x$need_debug" = "xyes"; then
+ AC_MSG_ERROR([debug must be enabled in order to enable profiling.])
+ fi
+fi
+
+AC_SUBST(SEED_DEBUG_CFLAGS)
+
+AC_CHECK_HEADERS(pty.h)
+
+dnl =============================gtk-doc=======================================
+GTK_DOC_CHECK(1.9)
+
+dnl =============================Output========================================
+AC_CONFIG_FILES([
+seed.pc
+Makefile
+
+doc/index.html
+doc/conventions.html
+doc/runtime.html
+doc/tutorial-standalone/tutorial.html
+
+doc/modules/canvas/canvas.html
+doc/modules/multiprocessing/multiprocessing.html
+
+doc/modules/canvas/Makefile
+doc/modules/multiprocessing/Makefile
+doc/modules/readline/Makefile
+doc/modules/gtkbuilder/Makefile
+doc/modules/sqlite/Makefile
+doc/modules/sandbox/Makefile
+
+doc/mapping/mapping.html
+
+libseed/Makefile
+po/Makefile.in
+src/Makefile
+extensions/Makefile
+tests/Makefile
+tests/javascript/Makefile
+tests/javascript/gtypes/Makefile
+tests/javascript/signals/Makefile
+tests/javascript/structs/Makefile
+tests/c/Makefile
+doc/Makefile
+doc/modules/Makefile
+doc/modules/version.xml
+doc/tutorial-standalone/Makefile
+doc/reference/Makefile
+doc/reference/version.xml
+doc/mapping/Makefile
+modules/Makefile
+modules/example/Makefile
+modules/sqlite/Makefile
+modules/canvas/Makefile
+modules/readline/Makefile
+modules/multiprocessing/Makefile
+modules/sandbox/Makefile
+modules/os/Makefile
+modules/dbus/Makefile
+modules/dbus/util/Makefile
+modules/libxml/Makefile
+modules/cairo/Makefile
+modules/gtkbuilder/Makefile
+modules/gettext/Makefile
+modules/mpfr/Makefile
+modules/ffi/Makefile
+modules/DynamicObject/Makefile
+
+libseed/seed-path.h
+])
+AC_OUTPUT
+
+echo "
+Build Configuration:
+ Debug......................$enable_debug
+ Profiling/Coverage.........$enable_profile
+ Profiling for Modules......$enable_profile_modules
+ gtk-doc....................$enable_gtk_doc
+
+Installation:
+ Prefix.....................$prefix
+
+Modules:
+ Canvas.....................$want_canvas_module
+ example....................$want_example_module
+ multiprocessing............$want_multiprocessing_module
+ readline...................$want_readline_module
+ SQLite.....................$want_sqlite_module
+ DBus.......................$want_dbus_module
+ libxml.....................$want_libxml_module
+ cairo......................$want_cairo_module
+ gtkbuilder.................$want_gtkbuilder_module
+ gettext....................$want_gettext_module
+ mpfr.......................$want_mpfr_module
+ ffi........................$want_ffi_module
+ Dynamic Object.............$want_dynamicobject_module
+"
+
+if test "x$want_readline_module" != "xyes"; then
+echo "WARNING: The readline module is not enabled.
+ Without this, the Seed REPL will not work;
+ however, most Seed applications will still run.
+"
+fi
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..df8eea7
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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, see <http://www.gnu.org/licenses/>.
+
+# 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
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u="sed s,\\\\\\\\,/,g"
+ depmode=msvisualcpp
+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.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ 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.
+ 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
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # 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,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ 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
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+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 mechanism 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 $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 "X$1" != 'X--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 "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ 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.
+ -arch)
+ eat=yes ;;
+ -*|$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 "X$1" != 'X--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.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # 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
+ ;;
+
+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-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..215ba1d
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,16 @@
+SUBDIRS = tutorial-standalone modules mapping reference
+
+EXTRA_DIST = \
+ index.html.in \
+ runtime.html.in \
+ style.css \
+ conventions.html.in \
+ sh.css \
+ sh.js \
+ sh_js.js \
+ seed.1
+
+doc_DATA = index.html runtime.html conventions.html style.css sh.css sh.js sh_js.js
+
+## File created by the gnome-build tools
+
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..cb47433
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/conventions.html.in $(srcdir)/index.html.in \
+ $(srcdir)/runtime.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = index.html conventions.html runtime.html
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(docdir)"
+DATA = $(doc_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = tutorial-standalone modules mapping reference
+EXTRA_DIST = \
+ index.html.in \
+ runtime.html.in \
+ style.css \
+ conventions.html.in \
+ sh.css \
+ sh.js \
+ sh_js.js \
+ seed.1
+
+doc_DATA = index.html runtime.html conventions.html style.css sh.css sh.js sh_js.js
+all: 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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/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
+$(am__aclocal_m4_deps):
+index.html: $(top_builddir)/config.status $(srcdir)/index.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+conventions.html: $(top_builddir)/config.status $(srcdir)/conventions.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+runtime.html: $(top_builddir)/config.status $(srcdir)/runtime.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(docdir)" && rm -f $$files
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(docdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-docDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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-docDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive 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-docDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-docDATA
+
+
+# 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/doc/conventions.html.in b/doc/conventions.html.in
new file mode 100644
index 0000000..e692bcc
--- /dev/null
+++ b/doc/conventions.html.in
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed Coding Conventions</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="sh.js"></script>
+ <script type="text/javascript" src="sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="sh.css" />
+ <style type="text/css">
+ div.section
+ {
+ font-weight: bold;
+ }
+ </style>
+
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed Coding Conventions</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section">Naming and Capitalization</div>
+<p>
+<ul>
+ <li>Always use UpperCamelCase for the names of classes.</li>
+ <li>Always use underscore_case for the names of variables and functions.</li>
+</ul>
+</p>
+
+<div class="section">Encapsulation</div>
+<p>
+<ul>
+ <li>Prefer functions to properties, for performance's sake.</li>
+ <li>Place all code for a class <em>within</em> its init function. Look at the tutorial Web Browser for an example.</li>
+</ul>
+</p>
+</body>
+</html>
diff --git a/doc/index.html.in b/doc/index.html.in
new file mode 100644
index 0000000..a8c3703
--- /dev/null
+++ b/doc/index.html.in
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed Documentation</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="sh.js"></script>
+ <script type="text/javascript" src="sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="sh.css" />
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed Documentation</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section"><b>Tutorial</b></div>
+<p>
+There is a (very) introductory tutorial to Seed, covering the creation of a small GTK+ WebKit browser, <a href="tutorial-standalone/tutorial.html">here</a>.
+</p>
+<div class="section"><b>Mapping</b></div>
+<p>
+There is a document covering at a broad level, how things in a namespace are mapped to Seed when importing, <a href="mapping/mapping.html">here</a>.
+<div class="section"><b>Reference Manual</b></div>
+<p>
+The C API, some of the modules, and a small (but expanding) portion of the runtime API is documented <a href="reference/html/index.html">here</a>.
+</p>
+<div class="section"><b>Runtime</b></div>
+<p>
+Documentation on the Seed builtins and runtime is <a href="runtime.html">here</a>.
+</p>
+<div class="section"><b>Examples</b></div>
+<p>
+Seed has a wide variety of examples <a href="http://git.gnome.org/cgit/seed/tree/examples">in git</a>. A partial index of some of the more useful examples is below:
+</p>
+<p><b>Large Examples</b></p>
+<ul>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/browser">browser</a> - An expanded version of the simple WebKit browser outlined in the tutorial</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/clutter-pad">clutter-pad</a> - An example to prototype Clutter scripts using a GtkSourceView widget and a GtkClutter stage. Demonstrates usage of sandbox module and GtkBuilder</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/clutter-shader">clutter-shader</a> - Demonstrates the use of Clutter Shaders and GtkSourceView</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/pango.js">pango</a> - Demonstrates a bit more complicated Pango usage, and Clutter usage, to create a sort of font playground</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/turtle">turtle</a> - a simple example of the C embedding API to create a logo like turtle</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/twitter">twitter</a> - A moderately simple Gtk twitter client, demonstrates GIO, Gtk, GdkPixbuf.</li>
+</ul>
+<p><b>Small Examples</b></p>
+<ul>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/accelgroup.js">accelgroup.js</a> - Demonstrates proper use of Gtk key accelerators</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/actions.js">actions.js</a> - Gtk actions, for menus, toolbars, and accelerators</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/async-quine.js">async-quine.js</a> - A Quine which loads itself asynchronously</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/broken">broken</a> - Several old examples, or old versions of examples which have not been updated</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/calculator.js">calculator.js</a> - A simple GTK calculator</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/clutter-1.0.js">clutter-1.0.js</a> - A silly demo of Clutter 1.0</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/clutter-cairo-1.0.js">clutter-cairo-1.0.js</a> - Simple use of Clutter 1.0's Cairo component</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/clutter-cogl-1.0.js">clutter-cogl-1.0.js</a> - Demonstrates usage of COGL for drawing in Clutter</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/dbus/dbus-banshee.js">dbus-banshee</a> - Demonstrates the use of DBus to control Banshee</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/dbus/dbus-consolekit.js">dbus-consolekit</a> - Demonstrates the use of DBus to query ConsoleKit</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/dbus/dbus-networkmanager.js">dbus-networkmanager</a> - Demonstrates the use of DBus to query NetworkManager</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/gconf.js">gconf.js</a> - Simple GConf usage (reading keys)</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/gdkpixbufloader.js">gdkpixbufloader.js</a> - Demonstrates reading an image with GIO and loading it in to a GdkPixbuf</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/glib">glib</a> - Several examples of using GLib, including timers, timeouts and threading</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/Gnio.js">Gnio.js</a> - Basic client usage of GIO</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/Gnio-server.js">Gnio-server.js</a> -Implementing a server using GIO</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/gtkplug.js">gtkplug.js</a> - Demonstrates GtkPlug usage</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/gtktextview.js">gtktextview.js</a> - A very simple use of GtkTextView</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/gtktreeview.js">gtktreeview.js</a> - Demonstrates the use of GtkTreeView</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/json-reddit.js">json-reddit.js</a> - Uses GIO and JSON to parse the reddit homepage</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/ls.js">ls.js</a> - Enumerating a directory with GIO</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/n-oscillator.js">n-oscillator.js</a> - Demonstrates basic Gtk and GStreamer usage</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/notify-test.js">notify-test.js</a> - Usage of libnotify</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/opengl">opengl</a> - Reimplementations of classic opengl examples in Seed (including glxgears!)</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/pango-fontset.js">pango-fontset</a> - Demonstrates basic Pango usage (for querying font information)</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/poppler.js">poppler.js</a> - A simple PDF viewer, demonstrates poppler and GTK</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/quine.js">quine.js</a> - Reads itself with GIO</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/repl.js">repl.js</a> - The Seed REPL</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/soup.js">soup.js</a> - Basic client usage of soup</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/threaded-repl.js">threaded-repl.js</a> - An example of a REPL which runs async while a GTK program continues to run</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/video.js">video.js</a> - Runs the GStreamer video test</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/vte-test.js">vte-test.js</a> - A simple terminal using VTE</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/xml/xml-dom.js">xml-dom</a> - Demonstrates the use of the libxml module for basic document access using DOM methods</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/xml/xml-tree.js">xml-tree</a> - Demonstrates the use of the libxml module for basic document access using the document tree</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/xml/xml-xpath.js">xml-xpath</a> - Demonstrates the use of the libxml module for basic document access using XPath</li>
+<li><a href="http://git.gnome.org/cgit/seed/tree/examples/xml/weather.js">weather</a> - Demonstrates the use of XPath and Soup to check the weather using the Yahoo API</li>
+</ul>
+<div class="section"><b>Native Modules</b></div>
+<p>
+Seed has several C extension modules, to bind libraries not available from GObject-introspection.
+</p>
+
+<div class="subsection"><b>readline, sqlite, GtkBuilder, and sandbox</b></div>
+<p>
+Documented in the main manual (<a href="reference/html/modules.html">html</a> <a href="modules/modules.pdf">pdf</a>)
+</p>
+
+<div class="subsection"><b>canvas</b></div>
+<p>
+A reimplementation of HTML5 canvas, with some Cairo integration. Documented <a href="modules/canvas.html">here</a>
+</p>
+
+<div class="subsection"><b>os</b></div>
+<p>
+A module similar (nearly identical) to python's os module. Not yet documented, python os module documentation is useful.
+</p>
+<div class="subsection"><b>dbus</b></div>
+<p>
+A module which allows usage of DBus. Not yet documented, but see the <a href="http://git.gnome.org/cgit/seed/tree/examples/dbus-banshee.js">dbus-banshee</a> or <a href="http://git.gnome.org/cgit/seed/tree/examples/dbus-consolekit.js">dbus-consolekit</a> examples.
+</p>
+<div class="subsection"><b>libxml</b></div>
+<p>
+A module which allows basic usage of libxml. Not yet documented, or complete, however very similar to the <a href="http://xmlsoft.org/python.html">libxml2 python module</a>.
+</p>
+</body>
+</html>
diff --git a/doc/mapping/Makefile.am b/doc/mapping/Makefile.am
new file mode 100644
index 0000000..cf89a22
--- /dev/null
+++ b/doc/mapping/Makefile.am
@@ -0,0 +1,11 @@
+
+tutorialdir=$(docdir)/mapping
+tutorial_DATA = \
+ mapping.html \
+ enum-mapping.png
+EXTRA_DIST = \
+ mapping.html.in \
+ enum-mapping.png
+
+## File created by the gnome-build tools
+
diff --git a/doc/mapping/Makefile.in b/doc/mapping/Makefile.in
new file mode 100644
index 0000000..1790e28
--- /dev/null
+++ b/doc/mapping/Makefile.in
@@ -0,0 +1,507 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/mapping
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/mapping.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = mapping.html
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(tutorialdir)"
+DATA = $(tutorial_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+tutorialdir = $(docdir)/mapping
+tutorial_DATA = \
+ mapping.html \
+ enum-mapping.png
+
+EXTRA_DIST = \
+ mapping.html.in \
+ enum-mapping.png
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/mapping/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/mapping/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
+$(am__aclocal_m4_deps):
+mapping.html: $(top_builddir)/config.status $(srcdir)/mapping.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-tutorialDATA: $(tutorial_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(tutorialdir)" || $(MKDIR_P) "$(DESTDIR)$(tutorialdir)"
+ @list='$(tutorial_DATA)'; test -n "$(tutorialdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tutorialdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(tutorialdir)" || exit $$?; \
+ done
+
+uninstall-tutorialDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tutorial_DATA)'; test -n "$(tutorialdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(tutorialdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(tutorialdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(tutorialdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tutorialDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-tutorialDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ install-tutorialDATA installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-tutorialDATA
+
+
+# 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/doc/mapping/enum-mapping.png b/doc/mapping/enum-mapping.png
new file mode 100644
index 0000000..eb675fa
--- /dev/null
+++ b/doc/mapping/enum-mapping.png
Binary files differ
diff --git a/doc/mapping/mapping.html.in b/doc/mapping/mapping.html.in
new file mode 100644
index 0000000..2a7c998
--- /dev/null
+++ b/doc/mapping/mapping.html.in
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed C Mapping Conventions</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="../style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="../sh.js"></script>
+ <script type="text/javascript" src="../sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="../sh.css" />
+ <style type="text/css">
+ div.section
+ {
+ font-weight: bold;
+ }
+ </style>
+
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed C Mapping Conventions</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section">Enums and Flags</div>
+<p>
+The mapping of enum types to JavaScript is straightforward.
+</p>
+<div style="text-align: center;">
+<img src="./enum-mapping.png">
+</div>
+<p>
+In this example, <namespace>Gtk</namespace> is the namespace, <type>WindowType</type> is the enum class, and <member>NORMAL</member> is the enum member. Note that the enum member is always UPPERCASE, and the enum class is CasedLikeTypes.
+
+It is worth noting that this is the same convention as Vala.
+
+When passing enums in to functions, the enum will be checked (to ensure it is in fact a value of the required enum class). This is not true for fields.
+</p>
+
+<div class="section">Toplevel Functions</div>
+<p>
+Toplevel library functions are mapped exactly as you would expect, with <namespace>gtk</namespace>_<member>main</member> mapping to <namespace>Gtk</namespace>.<member>main</member>.
+</p>
+<div class="section">Constants</div>
+Constants are placed directly on the namespace, with the same casing as present in the C library.
+<pre style="javascript">
+<namespace>Clutter</namespace>.<member>COGL_FIXED_0_5</member>
+<namespace>Clutter</namespace>.<member>Alt_L</member>
+</pre>
+<div class="section">Objects</div>
+<p>
+Objects are given a constructor on the namespace. <namespace>Clutter</namespace><member>Texture</member> having a constructor at <namespace>Clutter</namespace>.<member>Texture</member>
+</p>
+<div class="subsection">Constructors</div>
+<p>
+Object constructors, accept as their only argument, a JavaScript object pairing GObject properties, with values.
+
+As an example,
+<pre class="javascript">
+w = new <namespace>Gtk</namespace>.<type>Window</type>({title: "Hello"});
+c = new <namespace>Clutter</namespace>.<type>Texture</type>({width: 300, height:300});
+</pre>
+All other properties are left to their default values. Note, <code><namespace>Gtk</namespace>.<type>Window</type>.<member>prototype</member></code> is the prototype of all <code><namespace>Gtk</namespace>.<type>Window</type></code> instances. It is also possible for objects to have "named" constructors which take specific arguments, i.e. for <code><namespace>clutter</namespace>_<type>texture</type>_new_<member>from_file</member</code> we have
+<pre class="javascript">t = new <namespace>Clutter</namespace>.<type>Texture</type>.<member>from_file</member>("/tmp/cat.png");</pre>
+
+In addition <code><namespace>gtk</namespace>_<type>window</type>_<member>new</member></code> maps to <code><namespace>Gtk</namespace>.<type>Window</type>.<member>c_new</member></code> (because <code>new</code> is a JavaScript keyword). This however is rarely used.
+</p>
+<div class="subsection">Methods & Static Methods </div>
+<p>
+Non static methods (or "instance" methods) are accessible from the object, as you would expect.
+<pre class="javascript">
+w = new <namespace>Gtk</namespace>.<type>Window</type>();
+w.<member>resize</member>(300, 300);
+</pre>
+
+Static methods are accessible from the constructor, so for <namespace>clutter</namespace>_<type>stage</type>_<member>get_default</member>.
+<pre class="javascript">
+c = <namespace>Clutter</namespace>.<type>Stage</type>.<member>get_default</member>();
+</pre>
+
+The type conversion, is fairly sophisticated, so where C methods expect non-basic types, like function pointers, GLists, or C arrays, you are able to just pass in JavaScript functions and arrays.
+<pre class="javascript">
+w = new <namespace>Gtk</namespace>.<type>Window</type>();
+w.add (new <namespace>Gtk</namespace>.<type>VBox</type>());
+w.foreach(function (widget) {
+ print(widget);
+ });
+
+children = w.<member>get_children</member>();
+for (i in children) {
+ print(children[i]);
+}
+
+</pre>
+</p>
+<div class="subsection">Properties</div>
+<p>
+When attempting to set a property on an object, the following things happen in order.
+<ul>
+<li>If the property name corresponds to a GObject property name, then the JavaScript value is converted to a GValue and set as the property. </li>
+<li>If the property name corresponds to a member of the objects struct (i.e. the GtkWindow struct), the JavaScript value is set inside the struct. </li>
+<li>The property name is set on the JavaScript object. </li>
+</ul>
+and vice versa for reading properties.
+
+One thing which may be surprising to developers used to other scripting languages (say, python) is that an attempt to access an unset property will just return <code>null</code>, instead of throwing an exception.
+
+So, accessing for example <code>actor.wi<u>td</u>h</code> will return <code>null</code> and it is up to you to catch your typo.
+</p>
+<div class="subsection">Signals</div>
+<p>
+Interaction with an objects signals, takes place through the <code>object.signals</code> property. For example
+<pre class="javascript">
+w.signal.map.connect(function(window) {print ("Hello world");});
+foo.signal.bar.emit(3, 7, "Baz");
+</pre>
+In addition you can use <code>user_data</code>, similar to C
+<pre class="javascript">
+w.signal.map.connect(function(window, user_data) {print(user_data)}, "Hello world");
+</pre>
+In many cases this is made useless by JavaScript's support for closures.
+
+Note, in many cases, it is useful to access signals with details, for example <code>notify::x</code> however as this is not a valid JavaScript identifier, you have to use the array syntax for accessing properties,
+<pre class="javascript">
+w.signal["notify::x"].connect(function(){print("x changed")});
+</pre>
+
+Sometimes, it may be desirable to check that the functions you are connecting to signals, have the correct arity (accept the proper number of argmuents), and if you compile Seed with debugging enabled, and pass <code>--seed-debug=signal</code> or <code>--seed-debug=all</code>, Seed will give warnings when connections of improper arity are made (however clearly this is only sometimes a bug).
+
+</p>
+<div class="section">Structs and Unions</div>
+<p>
+Structs and Union's are given a constructor on the namespace. <namespace>Gdk</namespace><member>EventKey</member> simply having a constructor at <namespace>Gdk</namespace>.<member>EventKey</member>.
+</p>
+<div class="subsection">Constructors</div>
+<p>
+Struct and Union constructors, accept as their only argument, a pair of initialization parameters, in a similar fashion to object constructors.
+
+As an example,
+
+ <pre class="javascript">c = new <namespace>Clutter</namespace>.<type>Color</type>({red: 0xff, alpha: 0xff});</pre>
+
+All other fields are "zeroed" in the C sense that the memory is allocated with g_slice_alloc0.
+
+Like objects <code><namespace>Clutter</namespace>.<type>Color</type>.<member>prototype</member></code> is the prototype of all ClutterColor instances.
+
+Again like objects, structs can have "named" constructors which take specific arguments, i.e. for <code><namespace>soup</namespace>_<type>date</type>_new_<member>from_now</member></code>
+<pre class="javascript">d = new <namespace>Soup</namespace>.<type>Date</type>.<member>from_now</member>(0)</pre>
+
+Once again <code><namespace>soup</namespace>_<type>date</type>_<member>new</member></code> would map to <code><namespace>Soup</namespace>.<type>Date</type>.<member>c_new</member></code>.
+</p>
+<div class="subsection">Methods & Static Methods</div>
+<p>
+Non static methods are directly accessible from the object, i.e.
+<pre class="javascript">
+c = new <namespace>Clutter</namespace>.<type>Color</type>({red: 0xff, alpha: 0xff});
+c.<member>from_string</member>("purple");
+</pre>
+</p>
+<b>TODO: Static methods</b>
+<div class="subsection">Implicit creation</div>
+<p>
+Anywhere where a struct is expected, (property assignment, or a method call), a JavaScript object describing the struct can be used.
+<pre style="javascript">
+stage.<member>color</member> = {red: 0xff, blue: 0xcc, alpha: 0xff};
+</pre>
+The semantics are identical to constructors, in that uninitialized fields will be zeroed.
+</p>
+</body>
+</html>
diff --git a/doc/modules/Makefile.am b/doc/modules/Makefile.am
new file mode 100644
index 0000000..1f3ee15
--- /dev/null
+++ b/doc/modules/Makefile.am
@@ -0,0 +1,17 @@
+SUBDIRS=canvas multiprocessing readline sandbox sqlite gtkbuilder
+EXTRA_DIST=make-functions.js book.xml version.xml.in
+
+if ENABLE_GTK_DOC
+html/index.html: version.xml book.xml sqlite/sqlite.xml sqlite/sqlite-funcs.xml readline/readline.xml readline/readline-funcs.xml make-functions.js gtkbuilder/gtkbuilder-funcs.xml gtkbuilder/gtkbuilder.xml sandbox/sandbox.xml sandbox/sandbox-funcs.xml
+ mkdir -p html;
+ gtkdoc-mkhtml "Seed" book.xml;
+ mv *.html *.css *.png *.sgml *.devhelp* html
+
+bookdir = $(docdir)/modules/html
+book_DATA = html/index.html
+
+install-data-local:
+ cp -r html $(DESTDIR)$(docdir)/modules
+
+CLEANFILES = html/*
+endif
diff --git a/doc/modules/Makefile.in b/doc/modules/Makefile.in
new file mode 100644
index 0000000..ea21cf0
--- /dev/null
+++ b/doc/modules/Makefile.in
@@ -0,0 +1,715 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/version.xml.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(bookdir)"
+DATA = $(book_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = canvas multiprocessing readline sandbox sqlite gtkbuilder
+EXTRA_DIST = make-functions.js book.xml version.xml.in
+@ENABLE_GTK_DOC_TRUE@bookdir = $(docdir)/modules/html
+@ENABLE_GTK_DOC_TRUE@book_DATA = html/index.html
+@ENABLE_GTK_DOC_TRUE@CLEANFILES = html/*
+all: 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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/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
+$(am__aclocal_m4_deps):
+version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-bookDATA: $(book_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(bookdir)" || $(MKDIR_P) "$(DESTDIR)$(bookdir)"
+ @list='$(book_DATA)'; test -n "$(bookdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bookdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(bookdir)" || exit $$?; \
+ done
+
+uninstall-bookDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(book_DATA)'; test -n "$(bookdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bookdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bookdir)" && rm -f $$files
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bookdir)"; 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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+@ENABLE_GTK_DOC_FALSE@install-data-local:
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-bookDATA install-data-local
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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-bookDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-bookDATA \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-bookDATA
+
+
+@ENABLE_GTK_DOC_TRUE@html/index.html: version.xml book.xml sqlite/sqlite.xml sqlite/sqlite-funcs.xml readline/readline.xml readline/readline-funcs.xml make-functions.js gtkbuilder/gtkbuilder-funcs.xml gtkbuilder/gtkbuilder.xml sandbox/sandbox.xml sandbox/sandbox-funcs.xml
+@ENABLE_GTK_DOC_TRUE@ mkdir -p html;
+@ENABLE_GTK_DOC_TRUE@ gtkdoc-mkhtml "Seed" book.xml;
+@ENABLE_GTK_DOC_TRUE@ mv *.html *.css *.png *.sgml *.devhelp* html
+
+@ENABLE_GTK_DOC_TRUE@install-data-local:
+@ENABLE_GTK_DOC_TRUE@ cp -r html $(DESTDIR)$(docdir)/modules
+
+# 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/doc/modules/book.xml b/doc/modules/book.xml
new file mode 100644
index 0000000..02f0b82
--- /dev/null
+++ b/doc/modules/book.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>Seed Modules Reference Manual</title>
+ <releaseinfo>
+ Documentation for Seed &version; modules.
+ The latest version of this documentation can be found on-line at
+ <ulink role="online-location" url="http://library.gnome.org/devel/seed/unstable/">http://library.gnome.org/devel/seed/unstable/</ulink>.
+ </releaseinfo>
+ </bookinfo>
+
+ <xi:include href="readline/readline.xml"/>
+ <xi:include href="sqlite/sqlite.xml"/>
+ <xi:include href="gtkbuilder/gtkbuilder.xml"/>
+ <xi:include href="sandbox/sandbox.xml"/>
+
+</book>
diff --git a/doc/modules/canvas/Makefile.am b/doc/modules/canvas/Makefile.am
new file mode 100644
index 0000000..79042e4
--- /dev/null
+++ b/doc/modules/canvas/Makefile.am
@@ -0,0 +1,5 @@
+modulesdir = $(docdir)/modules
+modules_DATA = \
+ canvas.html
+EXTRA_DIST = \
+ canvas.html.in
diff --git a/doc/modules/canvas/Makefile.in b/doc/modules/canvas/Makefile.in
new file mode 100644
index 0000000..f96dbb7
--- /dev/null
+++ b/doc/modules/canvas/Makefile.in
@@ -0,0 +1,505 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/canvas
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/canvas.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = canvas.html
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(modulesdir)"
+DATA = $(modules_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+modulesdir = $(docdir)/modules
+modules_DATA = \
+ canvas.html
+
+EXTRA_DIST = \
+ canvas.html.in
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/canvas/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/canvas/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
+$(am__aclocal_m4_deps):
+canvas.html: $(top_builddir)/config.status $(srcdir)/canvas.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-modulesDATA: $(modules_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(modulesdir)" || $(MKDIR_P) "$(DESTDIR)$(modulesdir)"
+ @list='$(modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(modulesdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(modulesdir)" || exit $$?; \
+ done
+
+uninstall-modulesDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(modulesdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(modulesdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(modulesdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-modulesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-modulesDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-modulesDATA \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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-modulesDATA
+
+
+# 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/doc/modules/canvas/canvas.html.in b/doc/modules/canvas/canvas.html.in
new file mode 100644
index 0000000..b15f327
--- /dev/null
+++ b/doc/modules/canvas/canvas.html.in
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed canvas Module Documentation</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="../style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="../sh.js"></script>
+ <script type="text/javascript" src="../sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="../sh.css" />
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed <i>canvas</i> Module</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section"><b>Usage</b></div>
+<p>
+In order to use functions from the canvas module, you must first import it:
+</p>
+<pre class="sh_javascript">
+canvas = imports.canvas;
+</pre>
+<div class="section"><b>External Documentation</b></div>
+<p>
+The canvas module is actually an implementation of a subset of the <a href="https://developer.mozilla.org/en/Canvas_tutorial">HTML Canvas</a> element. Many of the functions from Canvas directly translate into Seed, and you can use <a href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas-element">any</a> <a href="https://developer.mozilla.org/en/HTML/Canvas">Canvas</a> <a href="http://developer.apple.com/documentation/appleapplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html">documentation</a> to help develop Seed canvas code. The drawing functions will not be redocumented here.
+</p>
+<div class="section"><b>new CairoCanvas</b>(cairo)<br/>
+<b>new PDFCanvas</b>(filename, width, height)<br/>
+<b>new SVGCanvas</b>(filename, width, height)<br/>
+<b>new ImageCanvas</b>(filename, width, height)</div>
+<p>
+Construct a Canvas with a particular output format. <b>CairoCanvas</b>es are constructed given a <i>cairo</i> to draw to, while the others output to a file, and need to be given a size for the canvas.
+</p>
+</body>
+</html>
diff --git a/doc/modules/gtkbuilder/Makefile.am b/doc/modules/gtkbuilder/Makefile.am
new file mode 100644
index 0000000..9a98911
--- /dev/null
+++ b/doc/modules/gtkbuilder/Makefile.am
@@ -0,0 +1,13 @@
+EXTRA_DIST = \
+ gtkbuilder.js \
+ example.ui \
+ example.js \
+ gtkbuilder.xml
+
+gtkbuilder-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/gtkbuilder/gtkbuilder.js $(top_srcdir)/doc/modules/gtkbuilder/example.ui $(top_srcdir)/doc/modules/gtkbuilder/example.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/gtkbuilder/gtkbuilder.js > $(top_builddir)/doc/modules/gtkbuilder/gtkbuilder-funcs.xml
+CLEANFILES=gtkbuilder-funcs.xml
+
+gtkbuilderdocsdir = \
+ $(docdir)/modules/gtkbuilder/html
+gtkbuilderdocs_DATA = gtkbuilder-funcs.xml
diff --git a/doc/modules/gtkbuilder/Makefile.in b/doc/modules/gtkbuilder/Makefile.in
new file mode 100644
index 0000000..0d541b6
--- /dev/null
+++ b/doc/modules/gtkbuilder/Makefile.in
@@ -0,0 +1,510 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/gtkbuilder
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(gtkbuilderdocsdir)"
+DATA = $(gtkbuilderdocs_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ gtkbuilder.js \
+ example.ui \
+ example.js \
+ gtkbuilder.xml
+
+CLEANFILES = gtkbuilder-funcs.xml
+gtkbuilderdocsdir = \
+ $(docdir)/modules/gtkbuilder/html
+
+gtkbuilderdocs_DATA = gtkbuilder-funcs.xml
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/gtkbuilder/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/gtkbuilder/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-gtkbuilderdocsDATA: $(gtkbuilderdocs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(gtkbuilderdocsdir)" || $(MKDIR_P) "$(DESTDIR)$(gtkbuilderdocsdir)"
+ @list='$(gtkbuilderdocs_DATA)'; test -n "$(gtkbuilderdocsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gtkbuilderdocsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(gtkbuilderdocsdir)" || exit $$?; \
+ done
+
+uninstall-gtkbuilderdocsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(gtkbuilderdocs_DATA)'; test -n "$(gtkbuilderdocsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(gtkbuilderdocsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(gtkbuilderdocsdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(gtkbuilderdocsdir)"; 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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-gtkbuilderdocsDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-gtkbuilderdocsDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-gtkbuilderdocsDATA \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am 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-gtkbuilderdocsDATA
+
+
+gtkbuilder-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/gtkbuilder/gtkbuilder.js $(top_srcdir)/doc/modules/gtkbuilder/example.ui $(top_srcdir)/doc/modules/gtkbuilder/example.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/gtkbuilder/gtkbuilder.js > $(top_builddir)/doc/modules/gtkbuilder/gtkbuilder-funcs.xml
+
+# 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/doc/modules/gtkbuilder/example.js b/doc/modules/gtkbuilder/example.js
new file mode 100755
index 0000000..f167329
--- /dev/null
+++ b/doc/modules/gtkbuilder/example.js
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<programlisting>
+#!/usr/local/bin/seed
+Gtk = imports.gi.Gtk;
+GtkBuilder = imports.gtkbuilder;
+
+handlers = {
+ ok_button_clicked: function(button){
+ Seed.quit();
+ }
+};
+
+Gtk.init(Seed.argv);
+
+b = new Gtk.Builder();
+b.add_from_file("test.ui");
+b.connect_signals(handlers);
+
+d = b.get_object("dialog1");
+
+d.show_all();
+
+Gtk.main();
+</programlisting>
diff --git a/doc/modules/gtkbuilder/example.ui b/doc/modules/gtkbuilder/example.ui
new file mode 100644
index 0000000..02ca7ae
--- /dev/null
+++ b/doc/modules/gtkbuilder/example.ui
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<programlisting>
+&lt;interface&gt;
+ &lt;object class="GtkDialog" id="dialog1"&gt;
+ &lt;child internal-child="vbox"&gt;
+ &lt;object class="GtkVBox" id="vbox1"&gt;
+ &lt;property name="border-width"&gt;10&lt;/property&gt;
+ &lt;child internal-child="action_area"&gt;
+ &lt;object class="GtkHButtonBox" id="hbuttonbox1"&gt;
+ &lt;property name="border-width"&gt;20&lt;/property&gt;
+ &lt;child&gt;
+ &lt;object class="GtkButton" id="ok_button"&gt;
+ &lt;property name="label"&gt;gtk-ok&lt;/property&gt;
+ &lt;property name="use-stock"&gt;TRUE&lt;/property&gt;
+ &lt;signal name="clicked" handler="ok_button_clicked"/&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+&lt;/interface&gt;
+</programlisting>
diff --git a/doc/modules/gtkbuilder/gtkbuilder.js b/doc/modules/gtkbuilder/gtkbuilder.js
new file mode 100644
index 0000000..438d9ce
--- /dev/null
+++ b/doc/modules/gtkbuilder/gtkbuilder.js
@@ -0,0 +1,10 @@
+funcs = [{id: "gtkbuilder-connect-signals",
+ title: "builder.connect_signals (object, user_data)",
+ description: "Connects the signals present in the GtkBuilder to the functions present in <parameter>object</parameter>. That is to say, a signal with handler name, 'ok_button_clicked' will be connected to the 'ok_button_clicked' property of object.",
+ params: [
+ {name: "object", description: "The object containing the signal handlers"},
+ {name: "user_data", description: "The user_data to use in connecting the signals"}
+ ]
+
+ }]
+
diff --git a/doc/modules/gtkbuilder/gtkbuilder.xml b/doc/modules/gtkbuilder/gtkbuilder.xml
new file mode 100644
index 0000000..899b2aa
--- /dev/null
+++ b/doc/modules/gtkbuilder/gtkbuilder.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<chapter id="GtkBuilder-module" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <chapterinfo>
+ <author>
+ <firstname>Robert</firstname>
+ <surname>Carr</surname>
+ <affiliation>
+ <address>
+ <email>racarr@<parameter>gnome.org</parameter></email>
+ </address>
+ </affiliation>
+ </author>
+ </chapterinfo>
+ <title>GtkBuilder</title>
+
+ <refsect1>
+ <title>API Reference</title>
+ <para>
+ The GtkBuilder extends Gtk.GtkBuilder.prototype to implement a custom automatic signal connection function, which is useful in Seed. It does not provide any methods or types, so there is no need to save it's namespace, as of such it can be imported as follows.
+ <programlisting>
+ imports.gtkbuilder;
+ </programlisting>
+ </para>
+
+ <xi:include href="gtkbuilder-funcs.xml"/>
+ </refsect1>
+ <refsect1>
+ <title>Examples</title>
+ <para>Below are several examples of using the Seed GtkBuilder module. For additional resources, consult the examples/ folder of the Seed source</para>
+ <example id="GtkBuilder-xml-example">
+ <xi:include href="example.ui"/>
+ <xi:include href="example.js"/>
+ </example>
+ </refsect1>
+</chapter>
+
diff --git a/doc/modules/make-functions.js b/doc/modules/make-functions.js
new file mode 100755
index 0000000..d13acd1
--- /dev/null
+++ b/doc/modules/make-functions.js
@@ -0,0 +1,40 @@
+#!/usr/bin/env seed
+Seed.include(Seed.argv[2]);
+
+function output_param (param){
+ print("<varlistentry><term><parameter>" + param.name +
+ "</parameter></term>" + "<listitem><simpara>" +
+ param.descripton + "</simpara></listitem></varlistentry>");
+
+}
+
+function output_function (func){
+ var start = print("<refsect2 id=\"" + func.id + "\" role=\"function\">" +
+ "<title>" + func.title + "</title>" +
+ "<para>" + func.description + "</para>");
+
+ if (func.params || func.returns)
+ print("<variablelist role=\"params\">");
+ if (func.params != null){
+ for (var i = 0; i < func.params.length; i++){
+ output_param (func.params[i]);
+ }
+ }
+ if (func.returns != null){
+ print("<varlistentry><term><emphasis>Returns</emphasis></term>" +
+ "<listitem><simpara>" + func.returns +
+ "</simpara></listitem></varlistentry>");
+ }
+ if (func.params || func.returns)
+ print("</variablelist>");
+ print("</refsect2>");
+
+}
+
+print("<para>");
+for (var i = 0; i < funcs.length; i++)
+{
+ output_function (funcs[i]);
+}
+print("</para>");
+
diff --git a/doc/modules/multiprocessing/Makefile.am b/doc/modules/multiprocessing/Makefile.am
new file mode 100644
index 0000000..612f9fe
--- /dev/null
+++ b/doc/modules/multiprocessing/Makefile.am
@@ -0,0 +1,5 @@
+modulesdir = $(docdir)/modules
+modules_DATA = \
+ multiprocessing.html
+EXTRA_DIST = \
+ multiprocessing.html.in
diff --git a/doc/modules/multiprocessing/Makefile.in b/doc/modules/multiprocessing/Makefile.in
new file mode 100644
index 0000000..3595d81
--- /dev/null
+++ b/doc/modules/multiprocessing/Makefile.in
@@ -0,0 +1,505 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/multiprocessing
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/multiprocessing.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = multiprocessing.html
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(modulesdir)"
+DATA = $(modules_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+modulesdir = $(docdir)/modules
+modules_DATA = \
+ multiprocessing.html
+
+EXTRA_DIST = \
+ multiprocessing.html.in
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/multiprocessing/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/multiprocessing/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
+$(am__aclocal_m4_deps):
+multiprocessing.html: $(top_builddir)/config.status $(srcdir)/multiprocessing.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-modulesDATA: $(modules_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(modulesdir)" || $(MKDIR_P) "$(DESTDIR)$(modulesdir)"
+ @list='$(modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(modulesdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(modulesdir)" || exit $$?; \
+ done
+
+uninstall-modulesDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(modulesdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(modulesdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(modulesdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-modulesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-modulesDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-modulesDATA \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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-modulesDATA
+
+
+# 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/doc/modules/multiprocessing/multiprocessing.html.in b/doc/modules/multiprocessing/multiprocessing.html.in
new file mode 100644
index 0000000..5debd7d
--- /dev/null
+++ b/doc/modules/multiprocessing/multiprocessing.html.in
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed multiprocessing Module Documentation</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="../style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="../sh.js"></script>
+ <script type="text/javascript" src="../sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="../sh.css" />
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed <i>multiprocessing</i> Module</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section"><b>Usage</b></div>
+<p>
+In order to use functions from the multiprocessing module, you must first import it:
+</p>
+<pre class="sh_javascript">
+multiprocessing = imports.multiprocessing;
+</pre>
+</body>
+</html>
diff --git a/doc/modules/readline/Makefile.am b/doc/modules/readline/Makefile.am
new file mode 100644
index 0000000..fa54ab6
--- /dev/null
+++ b/doc/modules/readline/Makefile.am
@@ -0,0 +1,16 @@
+EXTRA_DIST = \
+ readline.js readline.xml
+
+readline-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/readline/readline.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/readline/readline.js > $(top_builddir)/doc/modules/readline/readline-funcs.xml
+CLEANFILES=readline-funcs.xml
+
+readlinedocsdir = \
+ $(docdir)/modules/readline/html
+readlinedocs_DATA = readline-funcs.xml
+
+#index.html: readline-funcs.xml
+# gtkdoc-mkhtml "readline" readline.xml;
+# mv *.html *.css *.png html
+
+#readlinedocs_DATA = html/*
diff --git a/doc/modules/readline/Makefile.in b/doc/modules/readline/Makefile.in
new file mode 100644
index 0000000..4a12bce
--- /dev/null
+++ b/doc/modules/readline/Makefile.in
@@ -0,0 +1,514 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/readline
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(readlinedocsdir)"
+DATA = $(readlinedocs_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ readline.js readline.xml
+
+CLEANFILES = readline-funcs.xml
+readlinedocsdir = \
+ $(docdir)/modules/readline/html
+
+readlinedocs_DATA = readline-funcs.xml
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/readline/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/readline/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-readlinedocsDATA: $(readlinedocs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(readlinedocsdir)" || $(MKDIR_P) "$(DESTDIR)$(readlinedocsdir)"
+ @list='$(readlinedocs_DATA)'; test -n "$(readlinedocsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(readlinedocsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(readlinedocsdir)" || exit $$?; \
+ done
+
+uninstall-readlinedocsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(readlinedocs_DATA)'; test -n "$(readlinedocsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(readlinedocsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(readlinedocsdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(readlinedocsdir)"; 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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-readlinedocsDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-readlinedocsDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am \
+ install-readlinedocsDATA 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-readlinedocsDATA
+
+
+readline-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/readline/readline.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/readline/readline.js > $(top_builddir)/doc/modules/readline/readline-funcs.xml
+
+#index.html: readline-funcs.xml
+# gtkdoc-mkhtml "readline" readline.xml;
+# mv *.html *.css *.png html
+
+#readlinedocs_DATA = html/*
+
+# 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/doc/modules/readline/readline.js b/doc/modules/readline/readline.js
new file mode 100644
index 0000000..551d684
--- /dev/null
+++ b/doc/modules/readline/readline.js
@@ -0,0 +1,27 @@
+funcs = [{id: "readline-readline",
+ title: "readline.readline (prompt)",
+ description: "Prompts for one line of input on standard input using <parameter>prompt</parameter> as the prompt.",
+ params: [
+ {name: "prompt", description: "A string to use as the readline prompt"}
+ ],
+ returns: "A string entered on standard input."},
+ {id: "readline-bind",
+ title: "readline.bind (key, function)",
+ description: "Binds <parameter>key</parameter> to <parameter>function</parameter> causing the function to be invokved whenever <parameter>key</parameter> is pressed",
+ params: [
+ {name: "key", description: "A string specifying the key to bind"},
+ {name: "function", description: "The function to invoke when <parameter>key</parameter> is pressed"}
+ ]},
+ {id: "readline-done",
+ title: "readline.done ()",
+ description: "Indicates that readline should finish the current line, and return from <parameter>readline.readline</parameter>. Can be used in callbacks to implement features like multiline editing"},
+ {id: "readline-buffer",
+ title: "readline.buffer()",
+ description: "Retrieve the current readline buffer",
+ returns: "The current readline buffer"},
+ {id: "readline-insert",
+ title: "readline.insert (string)",
+ description: "Inserts <parameter>string</parameter> in to the current readline buffer",
+ params: [
+ {name: "string", description: "The string to insert"}
+ ]}];
diff --git a/doc/modules/readline/readline.xml b/doc/modules/readline/readline.xml
new file mode 100644
index 0000000..914b1d5
--- /dev/null
+++ b/doc/modules/readline/readline.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<chapter id="readline-module" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <chapterinfo>
+ <author>
+ <firstname>Robert</firstname>
+ <surname>Carr</surname>
+ <affiliation>
+ <address>
+ <email>racarr@<parameter>gnome.org</parameter></email>
+ </address>
+ </affiliation>
+ </author>
+ </chapterinfo>
+ <title>readline</title>
+
+ <refsect1>
+ <title>API Reference</title>
+ <para>
+ The readline module allows for basic usage of the GNU readline library, in Seed. More advanced features may be added a a later time. In order to use the readline module it must be first imported.
+ <programlisting>
+ readline = imports.readline;
+ </programlisting>
+ </para>
+
+ <xi:include href="readline-funcs.xml"/>
+ </refsect1>
+ <refsect1>
+ <title>Examples</title>
+ <para>Below are several examples of using the Seed readline module. For additional resources, consult the examples/ folder of the Seed source</para>
+ <example id="readline-repl-example">
+ <para>This demonstrates a simple REPL using the readline module</para>
+ <programlisting>
+readline = imports.readline;
+while (1){
+ try{
+ eval(readline.readline("> "));
+ }
+ catch(e) {
+ print(e.name + " " + e.message);
+ }
+}
+ </programlisting>
+ </example>
+ </refsect1>
+</chapter>
+
diff --git a/doc/modules/sandbox/Makefile.am b/doc/modules/sandbox/Makefile.am
new file mode 100644
index 0000000..a4772a0
--- /dev/null
+++ b/doc/modules/sandbox/Makefile.am
@@ -0,0 +1,10 @@
+EXTRA_DIST = \
+ sandbox.js sandbox.xml
+
+sandbox-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/sandbox/sandbox.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/sandbox/sandbox.js > $(top_builddir)/doc/modules/sandbox/sandbox-funcs.xml
+CLEANFILES=sandbox-funcs.xml
+
+sandboxdocsdir = \
+ $(docdir)/modules/sandbox/html
+sandboxdocs_DATA = sandbox-funcs.xml
diff --git a/doc/modules/sandbox/Makefile.in b/doc/modules/sandbox/Makefile.in
new file mode 100644
index 0000000..e2dacff
--- /dev/null
+++ b/doc/modules/sandbox/Makefile.in
@@ -0,0 +1,508 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/sandbox
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(sandboxdocsdir)"
+DATA = $(sandboxdocs_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ sandbox.js sandbox.xml
+
+CLEANFILES = sandbox-funcs.xml
+sandboxdocsdir = \
+ $(docdir)/modules/sandbox/html
+
+sandboxdocs_DATA = sandbox-funcs.xml
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/sandbox/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/sandbox/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-sandboxdocsDATA: $(sandboxdocs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(sandboxdocsdir)" || $(MKDIR_P) "$(DESTDIR)$(sandboxdocsdir)"
+ @list='$(sandboxdocs_DATA)'; test -n "$(sandboxdocsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sandboxdocsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(sandboxdocsdir)" || exit $$?; \
+ done
+
+uninstall-sandboxdocsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sandboxdocs_DATA)'; test -n "$(sandboxdocsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(sandboxdocsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(sandboxdocsdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(sandboxdocsdir)"; 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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-sandboxdocsDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-sandboxdocsDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am \
+ install-sandboxdocsDATA 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-sandboxdocsDATA
+
+
+sandbox-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/sandbox/sandbox.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/sandbox/sandbox.js > $(top_builddir)/doc/modules/sandbox/sandbox-funcs.xml
+
+# 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/doc/modules/sandbox/sandbox.js b/doc/modules/sandbox/sandbox.js
new file mode 100644
index 0000000..b3a1afc
--- /dev/null
+++ b/doc/modules/sandbox/sandbox.js
@@ -0,0 +1,19 @@
+funcs = [{id: "sandbox-context",
+ title: "new sandbox.Context()",
+ description: "Creates a new sandbox context object, which wraps a Seed JavaScript context with it's own global object. By default this global object contains only default JSCore globals (Array, Object, etc...) and has no ability to interact with the outside system. Note the context must be manually destroyed with the <parameter>destroy</parameter> method."},
+ {id: "sandbox-eval",
+ title: "context.eval(source)",
+ description: "Evaluates a string <parameter>source</parameter> with context, returns the result.",
+ params: [
+ {name: "source", description: "The code to evaluate"}
+ ]},
+ {id: "sandbox-addglobals",
+ title: "context.add_globals()",
+ description: "Adds the default Seed globals to the context, including the 'Seed' global object, and the imports object."},
+ {id: "sandbox-destroy",
+ title: "context.destroy()",
+ description: "Destroys the internal context object, and any further usage of the wrapper is an exception"},
+ {id: "sandbox-global",
+ title: "context.global",
+ description: "A project, representing the literal global object of the context, may be freely read from and assigned to"}]
+
diff --git a/doc/modules/sandbox/sandbox.xml b/doc/modules/sandbox/sandbox.xml
new file mode 100644
index 0000000..73d7fc0
--- /dev/null
+++ b/doc/modules/sandbox/sandbox.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<chapter id="Sandbox-module" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <chapterinfo>
+ <author>
+ <firstname>Robert</firstname>
+ <surname>Carr</surname>
+ <affiliation>
+ <address>
+ <email>racarr@<parameter>gnome.org</parameter></email>
+ </address>
+ </affiliation>
+ </author>
+ </chapterinfo>
+ <title>Sandbox</title>
+
+ <refsect1>
+ <title>API Reference</title>
+ <para>
+ The sandbox module allows the creation of isolated JSCore contexts with individual global objects. It is useful as a literal "sandbox" or in a variety of other contexts.
+ <programlisting>
+ sandbox = imports.sandbox;
+ </programlisting>
+ </para>
+
+ <xi:include href="sandbox-funcs.xml"/>
+ </refsect1>
+ <refsect1>
+ <title>Examples</title>
+ <para>Below are several examples of using the Seed Sandbox module. For additional resources, consult the examples/ folder of the Seed source</para>
+ <example id="sandbox-example">
+ <programlisting>
+sandbox = imports.sandbox;
+
+ctx = new sandbox.Context();
+ctx.eval("b = 2+2");
+print(ctx.global.b); //4
+ctx.global.b = new Gtk.Window(); // Possible to expose objects to the context.
+ctx.eval("b.show()");
+ </programlisting>
+ </example>
+ </refsect1>
+</chapter>
+
diff --git a/doc/modules/sqlite/Makefile.am b/doc/modules/sqlite/Makefile.am
new file mode 100644
index 0000000..b738154
--- /dev/null
+++ b/doc/modules/sqlite/Makefile.am
@@ -0,0 +1,16 @@
+EXTRA_DIST = \
+ sqlite.js sqlite.xml
+
+sqlite-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/sqlite/sqlite.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/sqlite/sqlite.js > $(top_builddir)/doc/modules/sqlite/sqlite-funcs.xml
+CLEANFILES=sqlite-funcs.xml
+
+sqlitedocsdir = \
+ $(docdir)/modules/sqlite/html
+sqlitedocs_DATA = sqlite-funcs.xml
+
+#index.html: sqlite-funcs.xml
+# gtkdoc-mkhtml "sqlite" sqlite.xml;
+# mv *.html *.css *.png html
+
+#sqlitedocs_DATA = html/*
diff --git a/doc/modules/sqlite/Makefile.in b/doc/modules/sqlite/Makefile.in
new file mode 100644
index 0000000..185a965
--- /dev/null
+++ b/doc/modules/sqlite/Makefile.in
@@ -0,0 +1,513 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/modules/sqlite
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(sqlitedocsdir)"
+DATA = $(sqlitedocs_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ sqlite.js sqlite.xml
+
+CLEANFILES = sqlite-funcs.xml
+sqlitedocsdir = \
+ $(docdir)/modules/sqlite/html
+
+sqlitedocs_DATA = sqlite-funcs.xml
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/modules/sqlite/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/modules/sqlite/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-sqlitedocsDATA: $(sqlitedocs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(sqlitedocsdir)" || $(MKDIR_P) "$(DESTDIR)$(sqlitedocsdir)"
+ @list='$(sqlitedocs_DATA)'; test -n "$(sqlitedocsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sqlitedocsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(sqlitedocsdir)" || exit $$?; \
+ done
+
+uninstall-sqlitedocsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sqlitedocs_DATA)'; test -n "$(sqlitedocsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(sqlitedocsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(sqlitedocsdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(sqlitedocsdir)"; 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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-sqlitedocsDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-sqlitedocsDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-sqlitedocsDATA \
+ 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-sqlitedocsDATA
+
+
+sqlite-funcs.xml: $(top_builddir)/src/seed $(top_srcdir)/doc/modules/sqlite/sqlite.js
+ $(top_builddir)/src/seed $(top_srcdir)/doc/modules/make-functions.js $(top_srcdir)/doc/modules/sqlite/sqlite.js > $(top_builddir)/doc/modules/sqlite/sqlite-funcs.xml
+
+#index.html: sqlite-funcs.xml
+# gtkdoc-mkhtml "sqlite" sqlite.xml;
+# mv *.html *.css *.png html
+
+#sqlitedocs_DATA = html/*
+
+# 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/doc/modules/sqlite/sqlite.js b/doc/modules/sqlite/sqlite.js
new file mode 100644
index 0000000..4489d98
--- /dev/null
+++ b/doc/modules/sqlite/sqlite.js
@@ -0,0 +1,21 @@
+funcs = [{id: "sqlite-database",
+ title: "new sqlite.Database(filename)",
+ description: "Constructs a new sqlite.Database",
+ params: [
+ {name: "filename", description: "The SQLite database to be opened (or constructed if it does not exist"}
+ ],
+ returns: "A new sqlite.Database object, the <parameter>status</parameter> property will be one of the SQLite status enums"
+ },
+ {id: "sqlite-exec",
+ title:"database.exec(command, callback)",
+ description: "<para>Executes the SQLite <parameter>command</parameter> on the given database. If <parameter>callback</parameter> is defined, it is called with each table entry from the given command, with a single argument. The argument has properties for each value in the returned table entry.</para><para>Keep in mind that, just like in C, it is necessary to sanitize user input in your SQL before passing it to the database.</para>",
+ params: [
+ {name: "command", description: "The SQLite command to evaluate"},
+ {name: "callback", description: "The callback to invoke, should expect one argument and return nothing. <parameter>optional</parameter>"}
+ ],
+ returns: "An SQLite status enum representing the result of the operation"},
+ {id: "sqlite-close",
+ title: "database.close()",
+ description: "Closes an SQLite database and syncs"}];
+
+
diff --git a/doc/modules/sqlite/sqlite.xml b/doc/modules/sqlite/sqlite.xml
new file mode 100644
index 0000000..959e99e
--- /dev/null
+++ b/doc/modules/sqlite/sqlite.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<chapter id="sqlite-module" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <chapterinfo>
+ <author>
+ <firstname>Robert</firstname>
+ <surname>Carr</surname>
+ <affiliation>
+ <address>
+ <email>racarr@<parameter>gnome.org</parameter></email>
+ </address>
+ </affiliation>
+ </author>
+ </chapterinfo>
+ <title>SQLite</title>
+
+ <refsect1>
+ <title>API Reference</title>
+ <para>
+ The sqlite module allows for manipulation and querying of sqlite databases.
+ <programlisting>
+sqlite = imports.sqlite;
+ </programlisting>
+ </para>
+
+ The SQLite module provides a selection of status enums, to be used as the return values of functions. For meanings, consult the SQLite C documentation.
+ <programlisting>
+sqlite.[OK, ERROR, INTERNAL, PERM ABORT, BUSY,
+ LOCKED, NOMEM, READONLY, INTERRUPT, CORRUPT,
+ NOTFOUND, FULL, CANTOPEN, PROTOCOL, EMPTY,
+ SCHEMA, TOOBIG, CONSTRAINT, MISMATCH, MISUSE,
+ NOLFS, AUTH, FORMAT, RANGE, NOTADB, ROW, DONE]
+ </programlisting>
+ <xi:include href="sqlite-funcs.xml"/>
+ </refsect1>
+ <refsect1>
+ <title>Examples</title>
+ <para>Below are several examples of using the Seed sqlite module. For additional resources, consult the examples/ folder of the Seed source</para>
+ <example id="readline-repl-example">
+ <para>This demonstrates creating a new table, populating it, and querying it for results</para>
+ <programlisting>
+sqlite = imports.sqlite;
+var db = new sqlite.Database("people.db");
+db.exec("create table people (key INTEGER PRIMARY KEY, name TEXT," +
+ "age INTEGER, phone TEXT);");
+db.exec("insert into people(name, age, phone) " +
+ "values('John Smith', 24, '555-123-4567');");
+
+function cb_print_phone(results) {
+ print(results.phone);
+}
+
+db.exec("select * from people where name='John Smith';", cb_print_phone);
+db.close();
+ </programlisting>
+ </example>
+ </refsect1>
+</chapter>
+
diff --git a/doc/modules/version.xml.in b/doc/modules/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/doc/modules/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
new file mode 100644
index 0000000..b5c6595
--- /dev/null
+++ b/doc/reference/Makefile.am
@@ -0,0 +1,86 @@
+## Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=seed
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR=../../libseed
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS=
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=seed
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS=
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS=
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB=$(top_srcdir)/libseed/*.h
+CFILE_GLOB=$(top_srcdir)/libseed/*.c
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES=seed-builtins.h seed-closure.h seed-engine.h seed-exceptions.h seed-gtype.h seed-private.h seed-signals.h seed-structs.h seed-types.h seed-importer.h seed-debug.h seed-path.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files=seed-docs.sgml seed-sections.txt building.sgml introduction.sgml contact.sgml imports.sgml version.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files=
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+INCLUDES=
+GTKDOC_LIBS=
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST += version.xml.in
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+#TESTS = $(GTKDOC_CHECK)
diff --git a/doc/reference/Makefile.in b/doc/reference/Makefile.in
new file mode 100644
index 0000000..ca55977
--- /dev/null
+++ b/doc/reference/Makefile.in
@@ -0,0 +1,800 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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)/version.xml.in $(top_srcdir)/gtk-doc.make
+subdir = doc/reference
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE = seed
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR = ../../libseed
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS =
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS =
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS = --sgml-mode --output-format=xml --name-space=seed
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS =
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS =
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB = $(top_srcdir)/libseed/*.h
+CFILE_GLOB = $(top_srcdir)/libseed/*.c
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES = seed-builtins.h seed-closure.h seed-engine.h seed-exceptions.h seed-gtype.h seed-private.h seed-signals.h seed-structs.h seed-types.h seed-importer.h seed-debug.h seed-path.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES =
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files = seed-docs.sgml seed-sections.txt building.sgml introduction.sgml contact.sgml imports.sgml version.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files =
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+INCLUDES =
+GTKDOC_LIBS =
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in
+DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/reference/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/reference/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
+$(am__aclocal_m4_deps):
+version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distclean-local distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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-local
+
+
+@ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+@ENABLE_GTK_DOC_FALSE@all-local:
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+setup-build.stamp:
+ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ echo ' DOC Preparing build'; \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ @touch setup-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo ' DOC Scanning header files'
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ echo " DOC Introspecting gobjects"; \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo ' DOC Rebuilding template files'
+ @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo ' DOC Building XML'
+ @-chmod -R u+w $(srcdir)
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building HTML'
+ @rm -rf html
+ @mkdir html
+ @mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ @echo ' DOC Fixing cross-references'
+ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ @touch html-build.stamp
+
+#### pdf ####
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building PDF'
+ @rm -f $(DOC_MODULE).pdf
+ @mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ @touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local: clean
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+@ENABLE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+#TESTS = $(GTKDOC_CHECK)
+
+# 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/doc/reference/building.sgml b/doc/reference/building.sgml
new file mode 100644
index 0000000..3f0df00
--- /dev/null
+++ b/doc/reference/building.sgml
@@ -0,0 +1,294 @@
+<refentry id="seed-building" revision="04 Jul 2009">
+<refmeta>
+<refentrytitle>Compiling Seed</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>SEED Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Compiling Seed</refname>
+<refpurpose>
+How to compile Seed itself
+</refpurpose>
+ </refnamediv>
+
+ <refsect1 id="building">
+ <title>Building the Library on UNIX</title>
+ <para>
+ On UNIX, Seed uses the standard GNU build system,
+ using <application>autoconf</application> for package
+ configuration and resolving portability issues,
+ <application>automake</application> for building makefiles
+ that comply with the GNU Coding Standards, and
+ <application>libtool</application> for building shared
+ libraries on multiple platforms. The normal sequence for
+ compiling and installing Seed is thus:
+
+ <literallayout>
+ <userinput>./configure</userinput>
+ <userinput>make</userinput>
+ <userinput>make install</userinput>
+ </literallayout>
+ </para>
+
+ <para>
+ The standard options provided by <application>GNU
+ autoconf</application> may be passed to the
+ <command>configure</command> script. Please see the
+ <application>autoconf</application> documentation or run
+ <command>./configure --help</command> for information about
+ the standard options.
+ </para>
+ </refsect1>
+
+ <refsect1 id="dependencies">
+ <title>Dependencies</title>
+ <para>
+ Before you can compile Seed, you need to have
+ various external libraries installed on your system.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <ulink url="http://live.gnome.org/GObjectIntrospection">gobject-introspection library</ulink> is necessary to build Seed. It provides the bridge between Seed and many GObject-based libraries.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://webkit.org">WebKit</ulink> provides the JavaScriptCore interpreter, which is fundamental to Seed's ability to execute JavaScript. Seed requires a WebKit SVN revision newer than 35442. Keep in mind that some builds between this and HEAD still won't work with Seed, and performance has only improved, so try to keep an up-to-date version of WebKit if you're planning on working with Seed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://tiswww.case.edu/php/chet/readline/rltop.html">readline</ulink> is used by the Seed REPL in order to communicate with the user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://sourceware.org/libffi/">libffi</ulink> provides Seed with an interface to call into C libraries at runtime.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://ftp.gnome.org/pub/GNOME/sources/gnome-js-common/">gnome-js-common</ulink> includes a battery of tests against both Seed and GJS, and also provides numerous libraries of JavaScript functions, including JSON manipulation and various language extensions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1 id="moddependencies">
+ <title>Module Dependencies</title>
+ <para>
+ Seed ships with a number of native modules which provide access to libraries which help with development but are not able to be introspected. Some of these modules depend on external libraries, and Seed's configuration will fail if they are not installed; if you wish to build Seed without a module for which you do not have the underlying library installed, check the Extra Configuration Options section of this document.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://cairographics.org/">Cairo</ulink> provides access to fast 2D graphics and numerous different types of output, including drawing to the screen, to an image, to a PDF, etc.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.freedesktop.org/wiki/Software/dbus">DBus</ulink> enables Seed to manipulate the various message busses, and provides communication between applications.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.gnu.org/software/gettext/">gettext</ulink> is a common library used for internationalization support.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://xmlsoft.org/">libxml2</ulink> provides a powerful XML parsing interface.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.mpfr.org/">mpfr</ulink> provides multiple-precision arithmetic.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.sqlite.org/">sqlite3</ulink> provides straightforward read-write access to on-disk SQL databases.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1 id="optdependencies">
+ <title>Optional Dependencies</title>
+ <para>
+ Seed's library of examples utilizes many other GObject projects which Seed does not strictly depend on, and will not be enumerated here. Introspection data for these projects may either be found within the projects themselves, or in the <ulink url="http://live.gnome.org/GObjectIntrospection">gir-repository</ulink>.
+ </para>
+ </refsect1>
+
+ <refsect1 id="extra-configuration-options">
+ <title>Extra Configuration Options</title>
+
+ <para>
+ In addition to the normal options, the
+ <command>configure</command> script in the Seed
+ library supports these additional arguments:
+ </para>
+
+ <formalpara>
+ <title><systemitem>--disable-canvas-module</systemitem> and
+ <systemitem>--enable-canvas-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-canvas-module</systemitem>
+ as well, Seed attempts to build the Canvas native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-readline-module</systemitem> and
+ <systemitem>--enable-readline-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-readline-module</systemitem>
+ as well, Seed attempts to build the readline native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-multiprocessing-module</systemitem> and
+ <systemitem>--enable-multiprocessing-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-multiprocessing-module</systemitem>
+ as well, Seed attempts to build the multiprocessing native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-sqlite-module</systemitem> and
+ <systemitem>--enable-sqlite-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-sqlite-module</systemitem>
+ as well, Seed attempts to build the SQLite native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-example-module</systemitem> and
+ <systemitem>--enable-example-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-example-module</systemitem>
+ as well, Seed attempts to build the example native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-dbus-module</systemitem> and
+ <systemitem>--enable-dbus-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-dbus-module</systemitem>
+ as well, Seed attempts to build the DBus native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-os-module</systemitem> and
+ <systemitem>--enable-os-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-os-module</systemitem>
+ as well, Seed attempts to build the os native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-libxml-module</systemitem> and
+ <systemitem>--enable-libxml-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-libxml-module</systemitem>
+ as well, Seed attempts to build the libxml2 native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-gtkbuilder-module</systemitem> and
+ <systemitem>--enable-gtkbuilder-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-gtkbuilder-module</systemitem>
+ as well, Seed attempts to build the GtkBuilder native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-cairo-module</systemitem> and
+ <systemitem>--enable-cairo-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-cairo-module</systemitem>
+ as well, Seed attempts to build the Cairo native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-gettext-module</systemitem> and
+ <systemitem>--enable-gettext-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-gettext-module</systemitem>
+ as well, Seed attempts to build the gettext native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-mpfr-module</systemitem> and
+ <systemitem>--enable-mpfr-module</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-mpfr-module</systemitem>
+ as well, Seed attempts to build the mpfr native module.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-turtle-example</systemitem> and
+ <systemitem>--enable-turtle-example</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-turtle-example</systemitem>
+ as well, Seed attempts to build the Turtle example.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-examples</systemitem> and
+ <systemitem>--enable-examples</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-examples</systemitem>
+ as well, a library of JavaScript examples are installed alongside Seed.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-profile</systemitem> and
+ <systemitem>--enable-profile</systemitem></title>
+
+ <para>
+ With <systemitem>--enable-profile</systemitem>, Seed is built with profiling and coverage instructions. One can use <command>make profile</command> or <command>make profile-gui</command> to profile the library.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-profile-modules</systemitem> and
+ <systemitem>--enable-profile-modules</systemitem></title>
+
+ <para>
+ With <systemitem>--enable-profile-modules</systemitem>, all Seed modules are built with profiling and coverage instructions. One can use <command>make profile</command> or <command>make profile-gui</command> to profile the modules.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-debug</systemitem> and
+ <systemitem>--enable-debug</systemitem></title>
+
+ <para>
+ With <systemitem>--enable-debug</systemitem>, Seed is built without optimizations and with extra debugging information included, and extra debug arguments to the <command>seed</command> interpreter are enabled; you can learn about these by calling <command>seed --help</command>.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title><systemitem>--disable-shave</systemitem> and
+ <systemitem>--enable-shave</systemitem></title>
+
+ <para>
+ By default, and with <systemitem>--enable-shave</systemitem> as well, Seed is built with pretty-printed build output. Disable this to see the actual compiler and linker commands being executed.
+ </para>
+ </formalpara>
+ </refsect1>
+
+</refentry>
diff --git a/doc/reference/contact.sgml b/doc/reference/contact.sgml
new file mode 100644
index 0000000..c3d6271
--- /dev/null
+++ b/doc/reference/contact.sgml
@@ -0,0 +1,34 @@
+<refentry id="seed-contact" revision="05 Jul 2009">
+<refmeta>
+<refentrytitle>Contact Information</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>SEED Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Contact Information</refname>
+<refpurpose>
+Where to find help, ask questions, or bring patches
+</refpurpose>
+</refnamediv>
+
+ <refsect1 id="build">
+ <title>Authors</title>
+ <itemizedlist>
+ <listitem>Robert Carr &lt;<ulink url="mailto:racarr@svn.gnome.org">racarr@svn.gnome.org</ulink>&gt;</listitem>
+ <listitem>Tim Horton &lt;<ulink url="mailto:hortont@svn.gnome.org">hortont@svn.gnome.org</ulink>&gt;</listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1 id="git">
+ <title>Source Repository</title>
+ <para>The Seed source code is kept in the GNOME-wide version control at <ulink url="http://git.gnome.org/cgit/seed">git.gnome.org</ulink>. You can check out the code on your own machine if you have <command>git</command> installed:</para>
+ <para><command>git clone git://git.gnome.org/seed</command></para>
+ </refsect1>
+
+ <refsect1 id="bugs">
+ <title>Bugs</title>
+ <para>Bugs and feature requests can be reported on the <ulink url="http://bugzilla.gnome.org/enter_bug.cgi?product=seed">seed</ulink> product in GNOME Bugzilla.</para>
+ </refsect1>
+
+</refentry>
diff --git a/doc/reference/html/GtkBuilder-module.html b/doc/reference/html/GtkBuilder-module.html
new file mode 100644
index 0000000..5a6b8fe
--- /dev/null
+++ b/doc/reference/html/GtkBuilder-module.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GtkBuilder</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="modules.html" title="Part IV. Seed Module Reference">
+<link rel="prev" href="sqlite-module.html" title="SQLite">
+<link rel="next" href="Sandbox-module.html" title="Sandbox">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="sqlite-module.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="modules.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="Sandbox-module.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="GtkBuilder-module"></a>GtkBuilder</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Robert</span> <span class="surname">Carr</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+   <code class="email">&lt;<a class="email" href="mailto:racarr@gnome.org">racarr@<em class="parameter"><code>gnome.org</code></em></a>&gt;</code><br>
+ </p></div></div>
+</div></div>
+</div></div>
+<div class="refsect1">
+<a name="idp4916928"></a><h2>API Reference</h2>
+<p>
+ The GtkBuilder extends Gtk.GtkBuilder.prototype to implement a custom automatic signal connection function, which is useful in Seed. It does not provide any methods or types, so there is no need to save it's namespace, as of such it can be imported as follows.
+ </p>
+<pre class="programlisting">
+ imports.gtkbuilder;
+ </pre>
+<p>
+ </p>
+<p>
+</p>
+<div class="refsect2">
+<a name="gtkbuilder-connect-signals"></a><h3>builder.connect_signals (object, user_data)</h3>
+<p>Connects the signals present in the GtkBuilder to the functions present in <em class="parameter"><code>object</code></em>. That is to say, a signal with handler name, 'ok_button_clicked' will be connected to the 'ok_button_clicked' property of object.</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="idp6720976"></a><h2>Examples</h2>
+<p>Below are several examples of using the Seed GtkBuilder module. For additional resources, consult the examples/ folder of the Seed source</p>
+<div class="example">
+<a name="GtkBuilder-xml-example"></a><p class="title"><b>Example 16. </b></p>
+<div class="example-contents">
+<pre class="programlisting">
+&lt;interface&gt;
+ &lt;object class="GtkDialog" id="dialog1"&gt;
+ &lt;child internal-child="vbox"&gt;
+ &lt;object class="GtkVBox" id="vbox1"&gt;
+ &lt;property name="border-width"&gt;10&lt;/property&gt;
+ &lt;child internal-child="action_area"&gt;
+ &lt;object class="GtkHButtonBox" id="hbuttonbox1"&gt;
+ &lt;property name="border-width"&gt;20&lt;/property&gt;
+ &lt;child&gt;
+ &lt;object class="GtkButton" id="ok_button"&gt;
+ &lt;property name="label"&gt;gtk-ok&lt;/property&gt;
+ &lt;property name="use-stock"&gt;TRUE&lt;/property&gt;
+ &lt;signal name="clicked" handler="ok_button_clicked"/&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+ &lt;/child&gt;
+ &lt;/object&gt;
+&lt;/interface&gt;
+</pre>
+<pre class="programlisting">
+#!/usr/local/bin/seed
+Gtk = imports.gi.Gtk;
+GtkBuilder = imports.gtkbuilder;
+
+handlers = {
+ ok_button_clicked: function(button){
+ Seed.quit();
+ }
+};
+
+Gtk.init(Seed.argv);
+
+b = new Gtk.Builder();
+b.add_from_file("test.ui");
+b.connect_signals(handlers);
+
+d = b.get_object("dialog1");
+
+d.show_all();
+
+Gtk.main();
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/Sandbox-module.html b/doc/reference/html/Sandbox-module.html
new file mode 100644
index 0000000..7e6ad03
--- /dev/null
+++ b/doc/reference/html/Sandbox-module.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Sandbox</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="modules.html" title="Part IV. Seed Module Reference">
+<link rel="prev" href="GtkBuilder-module.html" title="GtkBuilder">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="GtkBuilder-module.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="modules.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="Sandbox-module"></a>Sandbox</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Robert</span> <span class="surname">Carr</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+   <code class="email">&lt;<a class="email" href="mailto:racarr@gnome.org">racarr@<em class="parameter"><code>gnome.org</code></em></a>&gt;</code><br>
+ </p></div></div>
+</div></div>
+</div></div>
+<div class="refsect1">
+<a name="idp6019136"></a><h2>API Reference</h2>
+<p>
+ The sandbox module allows the creation of isolated JSCore contexts with individual global objects. It is useful as a literal "sandbox" or in a variety of other contexts.
+ </p>
+<pre class="programlisting">
+ sandbox = imports.sandbox;
+ </pre>
+<p>
+ </p>
+<p>
+</p>
+<div class="refsect2">
+<a name="sandbox-context"></a><h3>new sandbox.Context()</h3>
+<p>Creates a new sandbox context object, which wraps a Seed JavaScript context with it's own global object. By default this global object contains only default JSCore globals (Array, Object, etc...) and has no ability to interact with the outside system. Note the context must be manually destroyed with the <em class="parameter"><code>destroy</code></em> method.</p>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sandbox-eval"></a><h3>context.eval(source)</h3>
+<p>Evaluates a string <em class="parameter"><code>source</code></em> with context, returns the result.</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>source</code></em></span></p></td>
+<td>undefined</td>
+</tr></tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sandbox-addglobals"></a><h3>context.add_globals()</h3>
+<p>Adds the default Seed globals to the context, including the 'Seed' global object, and the imports object.</p>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sandbox-destroy"></a><h3>context.destroy()</h3>
+<p>Destroys the internal context object, and any further usage of the wrapper is an exception</p>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sandbox-global"></a><h3>context.global</h3>
+<p>A project, representing the literal global object of the context, may be freely read from and assigned to</p>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="idp7232960"></a><h2>Examples</h2>
+<p>Below are several examples of using the Seed Sandbox module. For additional resources, consult the examples/ folder of the Seed source</p>
+<div class="example">
+<a name="sandbox-example"></a><p class="title"><b>Example 17. </b></p>
+<div class="example-contents"><pre class="programlisting">
+sandbox = imports.sandbox;
+
+ctx = new sandbox.Context();
+ctx.eval("b = 2+2");
+print(ctx.global.b); //4
+ctx.global.b = new Gtk.Window(); // Possible to expose objects to the context.
+ctx.eval("b.show()");
+ </pre></div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/api.html b/doc/reference/html/api.html
new file mode 100644
index 0000000..565fca9
--- /dev/null
+++ b/doc/reference/html/api.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part III. Seed API Reference</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="index.html" title="Seed Reference Manual">
+<link rel="prev" href="seed-importer.html" title="Importer">
+<link rel="next" href="seed-Initialization.html" title="Initialization">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-importer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Initialization.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="api"></a>Part III. Seed API Reference</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>
+<span class="refentrytitle"><a href="seed-Initialization.html">Initialization</a></span><span class="refpurpose"> — Overall setup of the Seed engine</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Contexts.html">Working with Contexts</a></span><span class="refpurpose"> — Self-contained JavaScript execution environments</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Evaluation.html">Evaluating JavaScript</a></span><span class="refpurpose"> — Creating and interpreting scripts</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Exceptions.html">Exception Handling</a></span><span class="refpurpose"> — Throwing and catching exceptions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Signals.html">GObject Signals</a></span><span class="refpurpose"> — Connecting JavaScript functions to signals</span>
+</dt>
+<dt><span class="chapter"><a href="types.html">Values and Type Conversion</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="seed-Native-Type-Conversion.html">Type Conversion</a></span><span class="refpurpose"> — Moving between JavaScript and C intrinsic types</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Operating-on-Native-Types.html">Operating on JavaScript types</a></span><span class="refpurpose"> — Determining the type of a SeedValue</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-JS-Objects.html">Working with JavaScript objects</a></span><span class="refpurpose"> — Using properties, constructing objects, etc.</span>
+</dt>
+</dl></dd>
+<dt>
+<span class="refentrytitle"><a href="seed-Native-Functions.html">Creating native functions</a></span><span class="refpurpose"> — C functions as first-class JavaScript objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-JavaScript-Classes.html">Creating JavaScript classes</a></span><span class="refpurpose"> — Dealing with Seed class definitions and constructors</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-SeedClosure.html">Using JavaScript closures</a></span><span class="refpurpose"> — Creating and invoking closures over JavaScript functions using GClosure</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Modules.html">Seed Modules</a></span><span class="refpurpose"> — Native C modules for Seed</span>
+</dt>
+</dl>
+</div>
+<p>This is the documentation for the C API of Seed, used for embedding, and creating native C modules.</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/home.png b/doc/reference/html/home.png
new file mode 100644
index 0000000..fb60b55
--- /dev/null
+++ b/doc/reference/html/home.png
Binary files differ
diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html
new file mode 100644
index 0000000..0ca1457
--- /dev/null
+++ b/doc/reference/html/index.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Seed Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="next" href="seed.html" title="Part I. Seed Overview">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div>
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Seed Reference Manual</p></th></tr></table></div>
+<div><p class="releaseinfo">
+ Documentation for Seed 3.2.0
+.
+ The latest version of this documentation can be found on-line at
+ <a class="ulink" href="http://library.gnome.org/devel/seed/unstable/" target="_top">http://library.gnome.org/devel/seed/unstable/</a>.
+ </p></div>
+</div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="part"><a href="seed.html">I. Seed Overview</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="seed-introduction.html">Introduction</a></span><span class="refpurpose"> —
+What Seed is all about
+</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-building.html">Compiling Seed</a></span><span class="refpurpose"> —
+How to compile Seed itself
+</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-contact.html">Contact Information</a></span><span class="refpurpose"> —
+Where to find help, ask questions, or bring patches
+</span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="js.html">II. Seed JavaScript Reference</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="seed-importer.html">Importer</a></span><span class="refpurpose"> —
+Importing gobject-introspection namespaces, native modules, and JavaScript modules
+</span>
+</dt></dl></dd>
+<dt><span class="part"><a href="api.html">III. Seed API Reference</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="seed-Initialization.html">Initialization</a></span><span class="refpurpose"> — Overall setup of the Seed engine</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Contexts.html">Working with Contexts</a></span><span class="refpurpose"> — Self-contained JavaScript execution environments</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Evaluation.html">Evaluating JavaScript</a></span><span class="refpurpose"> — Creating and interpreting scripts</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Exceptions.html">Exception Handling</a></span><span class="refpurpose"> — Throwing and catching exceptions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Signals.html">GObject Signals</a></span><span class="refpurpose"> — Connecting JavaScript functions to signals</span>
+</dt>
+<dt><span class="chapter"><a href="types.html">Values and Type Conversion</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="seed-Native-Type-Conversion.html">Type Conversion</a></span><span class="refpurpose"> — Moving between JavaScript and C intrinsic types</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Operating-on-Native-Types.html">Operating on JavaScript types</a></span><span class="refpurpose"> — Determining the type of a SeedValue</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-JS-Objects.html">Working with JavaScript objects</a></span><span class="refpurpose"> — Using properties, constructing objects, etc.</span>
+</dt>
+</dl></dd>
+<dt>
+<span class="refentrytitle"><a href="seed-Native-Functions.html">Creating native functions</a></span><span class="refpurpose"> — C functions as first-class JavaScript objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-JavaScript-Classes.html">Creating JavaScript classes</a></span><span class="refpurpose"> — Dealing with Seed class definitions and constructors</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-SeedClosure.html">Using JavaScript closures</a></span><span class="refpurpose"> — Creating and invoking closures over JavaScript functions using GClosure</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Modules.html">Seed Modules</a></span><span class="refpurpose"> — Native C modules for Seed</span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="modules.html">IV. Seed Module Reference</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="readline-module.html">readline</a></span></dt>
+<dt><span class="chapter"><a href="sqlite-module.html">SQLite</a></span></dt>
+<dt><span class="chapter"><a href="GtkBuilder-module.html">GtkBuilder</a></span></dt>
+<dt><span class="chapter"><a href="Sandbox-module.html">Sandbox</a></span></dt>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/index.sgml b/doc/reference/html/index.sgml
new file mode 100644
index 0000000..7278609
--- /dev/null
+++ b/doc/reference/html/index.sgml
@@ -0,0 +1,204 @@
+<ONLINE href="http://library.gnome.org/devel/seed/unstable/">
+<ANCHOR id="seed-introduction" href="seed/seed-introduction.html">
+<ANCHOR id="seed-building" href="seed/seed-building.html">
+<ANCHOR id="building" href="seed/seed-building.html#building">
+<ANCHOR id="dependencies" href="seed/seed-building.html#dependencies">
+<ANCHOR id="moddependencies" href="seed/seed-building.html#moddependencies">
+<ANCHOR id="optdependencies" href="seed/seed-building.html#optdependencies">
+<ANCHOR id="extra-configuration-options" href="seed/seed-building.html#extra-configuration-options">
+<ANCHOR id="seed-contact" href="seed/seed-contact.html">
+<ANCHOR id="build" href="seed/seed-contact.html#build">
+<ANCHOR id="git" href="seed/seed-contact.html#git">
+<ANCHOR id="bugs" href="seed/seed-contact.html#bugs">
+<ANCHOR id="seed-importer" href="seed/seed-importer.html">
+<ANCHOR id="git" href="seed/seed-importer.html#git">
+<ANCHOR id="seed-Initialization" href="seed/seed-Initialization.html">
+<ANCHOR id="seed-Initialization.synopsis" href="seed/seed-Initialization.html#seed-Initialization.synopsis">
+<ANCHOR id="seed-Initialization.description" href="seed/seed-Initialization.html#seed-Initialization.description">
+<ANCHOR id="seed-Initialization.details" href="seed/seed-Initialization.html#seed-Initialization.details">
+<ANCHOR id="SeedEngine" href="seed/seed-Initialization.html#SeedEngine">
+<ANCHOR id="seed-init" href="seed/seed-Initialization.html#seed-init">
+<ANCHOR id="seed-init-with-context-group" href="seed/seed-Initialization.html#seed-init-with-context-group">
+<ANCHOR id="seed-engine-set-search-path" href="seed/seed-Initialization.html#seed-engine-set-search-path">
+<ANCHOR id="seed-engine-get-search-path" href="seed/seed-Initialization.html#seed-engine-get-search-path">
+<ANCHOR id="seed-Contexts" href="seed/seed-Contexts.html">
+<ANCHOR id="seed-Contexts.synopsis" href="seed/seed-Contexts.html#seed-Contexts.synopsis">
+<ANCHOR id="seed-Contexts.description" href="seed/seed-Contexts.html#seed-Contexts.description">
+<ANCHOR id="seed-Contexts.details" href="seed/seed-Contexts.html#seed-Contexts.details">
+<ANCHOR id="SeedContext" href="seed/seed-Contexts.html#SeedContext">
+<ANCHOR id="SeedGlobalContext" href="seed/seed-Contexts.html#SeedGlobalContext">
+<ANCHOR id="SeedContextGroup" href="seed/seed-Contexts.html#SeedContextGroup">
+<ANCHOR id="seed-context-create" href="seed/seed-Contexts.html#seed-context-create">
+<ANCHOR id="seed-context-ref" href="seed/seed-Contexts.html#seed-context-ref">
+<ANCHOR id="seed-context-unref" href="seed/seed-Contexts.html#seed-context-unref">
+<ANCHOR id="seed-context-collect" href="seed/seed-Contexts.html#seed-context-collect">
+<ANCHOR id="seed-context-get-global-object" href="seed/seed-Contexts.html#seed-context-get-global-object">
+<ANCHOR id="seed-prepare-global-context" href="seed/seed-Contexts.html#seed-prepare-global-context">
+<ANCHOR id="seed-importer-add-global" href="seed/seed-Contexts.html#seed-importer-add-global">
+<ANCHOR id="seed-importer-set-search-path" href="seed/seed-Contexts.html#seed-importer-set-search-path">
+<ANCHOR id="seed-Evaluation" href="seed/seed-Evaluation.html">
+<ANCHOR id="seed-Evaluation.synopsis" href="seed/seed-Evaluation.html#seed-Evaluation.synopsis">
+<ANCHOR id="seed-Evaluation.description" href="seed/seed-Evaluation.html#seed-Evaluation.description">
+<ANCHOR id="seed-Evaluation.details" href="seed/seed-Evaluation.html#seed-Evaluation.details">
+<ANCHOR id="SeedScript" href="seed/seed-Evaluation.html#SeedScript">
+<ANCHOR id="seed-make-script" href="seed/seed-Evaluation.html#seed-make-script">
+<ANCHOR id="seed-evaluate" href="seed/seed-Evaluation.html#seed-evaluate">
+<ANCHOR id="seed-simple-evaluate" href="seed/seed-Evaluation.html#seed-simple-evaluate">
+<ANCHOR id="seed-script-new-from-file" href="seed/seed-Evaluation.html#seed-script-new-from-file">
+<ANCHOR id="seed-script-exception" href="seed/seed-Evaluation.html#seed-script-exception">
+<ANCHOR id="seed-script-destroy" href="seed/seed-Evaluation.html#seed-script-destroy">
+<ANCHOR id="seed-Exceptions" href="seed/seed-Exceptions.html">
+<ANCHOR id="seed-Exceptions.synopsis" href="seed/seed-Exceptions.html#seed-Exceptions.synopsis">
+<ANCHOR id="seed-Exceptions.description" href="seed/seed-Exceptions.html#seed-Exceptions.description">
+<ANCHOR id="seed-Exceptions.details" href="seed/seed-Exceptions.html#seed-Exceptions.details">
+<ANCHOR id="SeedException" href="seed/seed-Exceptions.html#SeedException">
+<ANCHOR id="seed-make-exception" href="seed/seed-Exceptions.html#seed-make-exception">
+<ANCHOR id="seed-exception-get-name" href="seed/seed-Exceptions.html#seed-exception-get-name">
+<ANCHOR id="seed-exception-get-message" href="seed/seed-Exceptions.html#seed-exception-get-message">
+<ANCHOR id="seed-exception-get-line" href="seed/seed-Exceptions.html#seed-exception-get-line">
+<ANCHOR id="seed-exception-get-file" href="seed/seed-Exceptions.html#seed-exception-get-file">
+<ANCHOR id="seed-exception-to-string" href="seed/seed-Exceptions.html#seed-exception-to-string">
+<ANCHOR id="seed-Signals" href="seed/seed-Signals.html">
+<ANCHOR id="seed-Signals.synopsis" href="seed/seed-Signals.html#seed-Signals.synopsis">
+<ANCHOR id="seed-Signals.description" href="seed/seed-Signals.html#seed-Signals.description">
+<ANCHOR id="seed-Signals.details" href="seed/seed-Signals.html#seed-Signals.details">
+<ANCHOR id="seed-signal-connect" href="seed/seed-Signals.html#seed-signal-connect">
+<ANCHOR id="seed-signal-connect-value" href="seed/seed-Signals.html#seed-signal-connect-value">
+<ANCHOR id="seed-Native-Type-Conversion" href="seed/seed-Native-Type-Conversion.html">
+<ANCHOR id="seed-Native-Type-Conversion.synopsis" href="seed/seed-Native-Type-Conversion.html#seed-Native-Type-Conversion.synopsis">
+<ANCHOR id="seed-Native-Type-Conversion.description" href="seed/seed-Native-Type-Conversion.html#seed-Native-Type-Conversion.description">
+<ANCHOR id="seed-Native-Type-Conversion.details" href="seed/seed-Native-Type-Conversion.html#seed-Native-Type-Conversion.details">
+<ANCHOR id="SeedValue" href="seed/seed-Native-Type-Conversion.html#SeedValue">
+<ANCHOR id="SeedType" href="seed/seed-Native-Type-Conversion.html#SeedType">
+<ANCHOR id="seed-make-undefined" href="seed/seed-Native-Type-Conversion.html#seed-make-undefined">
+<ANCHOR id="seed-make-null" href="seed/seed-Native-Type-Conversion.html#seed-make-null">
+<ANCHOR id="seed-value-to-boolean" href="seed/seed-Native-Type-Conversion.html#seed-value-to-boolean">
+<ANCHOR id="seed-value-from-boolean" href="seed/seed-Native-Type-Conversion.html#seed-value-from-boolean">
+<ANCHOR id="seed-value-to-uint" href="seed/seed-Native-Type-Conversion.html#seed-value-to-uint">
+<ANCHOR id="seed-value-from-uint" href="seed/seed-Native-Type-Conversion.html#seed-value-from-uint">
+<ANCHOR id="seed-value-to-int" href="seed/seed-Native-Type-Conversion.html#seed-value-to-int">
+<ANCHOR id="seed-value-from-int" href="seed/seed-Native-Type-Conversion.html#seed-value-from-int">
+<ANCHOR id="seed-value-to-char" href="seed/seed-Native-Type-Conversion.html#seed-value-to-char">
+<ANCHOR id="seed-value-from-char" href="seed/seed-Native-Type-Conversion.html#seed-value-from-char">
+<ANCHOR id="seed-value-to-uchar" href="seed/seed-Native-Type-Conversion.html#seed-value-to-uchar">
+<ANCHOR id="seed-value-from-uchar" href="seed/seed-Native-Type-Conversion.html#seed-value-from-uchar">
+<ANCHOR id="seed-value-to-long" href="seed/seed-Native-Type-Conversion.html#seed-value-to-long">
+<ANCHOR id="seed-value-from-long" href="seed/seed-Native-Type-Conversion.html#seed-value-from-long">
+<ANCHOR id="seed-value-to-ulong" href="seed/seed-Native-Type-Conversion.html#seed-value-to-ulong">
+<ANCHOR id="seed-value-from-ulong" href="seed/seed-Native-Type-Conversion.html#seed-value-from-ulong">
+<ANCHOR id="seed-value-to-int64" href="seed/seed-Native-Type-Conversion.html#seed-value-to-int64">
+<ANCHOR id="seed-value-from-int64" href="seed/seed-Native-Type-Conversion.html#seed-value-from-int64">
+<ANCHOR id="seed-value-to-uint64" href="seed/seed-Native-Type-Conversion.html#seed-value-to-uint64">
+<ANCHOR id="seed-value-from-uint64" href="seed/seed-Native-Type-Conversion.html#seed-value-from-uint64">
+<ANCHOR id="seed-value-to-float" href="seed/seed-Native-Type-Conversion.html#seed-value-to-float">
+<ANCHOR id="seed-value-from-float" href="seed/seed-Native-Type-Conversion.html#seed-value-from-float">
+<ANCHOR id="seed-value-to-double" href="seed/seed-Native-Type-Conversion.html#seed-value-to-double">
+<ANCHOR id="seed-value-from-double" href="seed/seed-Native-Type-Conversion.html#seed-value-from-double">
+<ANCHOR id="seed-value-to-string" href="seed/seed-Native-Type-Conversion.html#seed-value-to-string">
+<ANCHOR id="seed-value-from-string" href="seed/seed-Native-Type-Conversion.html#seed-value-from-string">
+<ANCHOR id="seed-value-from-binary-string" href="seed/seed-Native-Type-Conversion.html#seed-value-from-binary-string">
+<ANCHOR id="seed-value-to-object" href="seed/seed-Native-Type-Conversion.html#seed-value-to-object">
+<ANCHOR id="seed-value-from-object" href="seed/seed-Native-Type-Conversion.html#seed-value-from-object">
+<ANCHOR id="seed-value-to-filename" href="seed/seed-Native-Type-Conversion.html#seed-value-to-filename">
+<ANCHOR id="seed-value-from-filename" href="seed/seed-Native-Type-Conversion.html#seed-value-from-filename">
+<ANCHOR id="seed-value-to-format" href="seed/seed-Native-Type-Conversion.html#seed-value-to-format">
+<ANCHOR id="seed-pointer-get-pointer" href="seed/seed-Native-Type-Conversion.html#seed-pointer-get-pointer">
+<ANCHOR id="seed-make-pointer" href="seed/seed-Native-Type-Conversion.html#seed-make-pointer">
+<ANCHOR id="SeedString" href="seed/seed-Native-Type-Conversion.html#SeedString">
+<ANCHOR id="seed-string-ref" href="seed/seed-Native-Type-Conversion.html#seed-string-ref">
+<ANCHOR id="seed-string-unref" href="seed/seed-Native-Type-Conversion.html#seed-string-unref">
+<ANCHOR id="seed-string-get-maximum-size" href="seed/seed-Native-Type-Conversion.html#seed-string-get-maximum-size">
+<ANCHOR id="seed-string-to-utf8-buffer" href="seed/seed-Native-Type-Conversion.html#seed-string-to-utf8-buffer">
+<ANCHOR id="seed-string-is-equal" href="seed/seed-Native-Type-Conversion.html#seed-string-is-equal">
+<ANCHOR id="seed-string-is-equal-utf8" href="seed/seed-Native-Type-Conversion.html#seed-string-is-equal-utf8">
+<ANCHOR id="seed-Operating-on-Native-Types" href="seed/seed-Operating-on-Native-Types.html">
+<ANCHOR id="seed-Operating-on-Native-Types.synopsis" href="seed/seed-Operating-on-Native-Types.html#seed-Operating-on-Native-Types.synopsis">
+<ANCHOR id="seed-Operating-on-Native-Types.description" href="seed/seed-Operating-on-Native-Types.html#seed-Operating-on-Native-Types.description">
+<ANCHOR id="seed-Operating-on-Native-Types.details" href="seed/seed-Operating-on-Native-Types.html#seed-Operating-on-Native-Types.details">
+<ANCHOR id="seed-value-unprotect" href="seed/seed-Operating-on-Native-Types.html#seed-value-unprotect">
+<ANCHOR id="seed-value-protect" href="seed/seed-Operating-on-Native-Types.html#seed-value-protect">
+<ANCHOR id="seed-value-is-undefined" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-undefined">
+<ANCHOR id="seed-value-is-null" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-null">
+<ANCHOR id="seed-value-is-function" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-function">
+<ANCHOR id="seed-value-is-number" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-number">
+<ANCHOR id="seed-value-is-string" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-string">
+<ANCHOR id="seed-value-is-object-of-class" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-object-of-class">
+<ANCHOR id="seed-value-is-object" href="seed/seed-Operating-on-Native-Types.html#seed-value-is-object">
+<ANCHOR id="seed-value-get-type" href="seed/seed-Operating-on-Native-Types.html#seed-value-get-type">
+<ANCHOR id="seed-JS-Objects" href="seed/seed-JS-Objects.html">
+<ANCHOR id="seed-JS-Objects.synopsis" href="seed/seed-JS-Objects.html#seed-JS-Objects.synopsis">
+<ANCHOR id="seed-JS-Objects.description" href="seed/seed-JS-Objects.html#seed-JS-Objects.description">
+<ANCHOR id="seed-JS-Objects.details" href="seed/seed-JS-Objects.html#seed-JS-Objects.details">
+<ANCHOR id="SeedObject" href="seed/seed-JS-Objects.html#SeedObject">
+<ANCHOR id="seed-make-object" href="seed/seed-JS-Objects.html#seed-make-object">
+<ANCHOR id="seed-make-array" href="seed/seed-JS-Objects.html#seed-make-array">
+<ANCHOR id="seed-object-call" href="seed/seed-JS-Objects.html#seed-object-call">
+<ANCHOR id="seed-object-set-property-at-index" href="seed/seed-JS-Objects.html#seed-object-set-property-at-index">
+<ANCHOR id="seed-object-get-property-at-index" href="seed/seed-JS-Objects.html#seed-object-get-property-at-index">
+<ANCHOR id="seed-object-is-of-class" href="seed/seed-JS-Objects.html#seed-object-is-of-class">
+<ANCHOR id="seed-object-get-private" href="seed/seed-JS-Objects.html#seed-object-get-private">
+<ANCHOR id="seed-object-set-private" href="seed/seed-JS-Objects.html#seed-object-set-private">
+<ANCHOR id="seed-object-get-property" href="seed/seed-JS-Objects.html#seed-object-get-property">
+<ANCHOR id="seed-object-set-property" href="seed/seed-JS-Objects.html#seed-object-set-property">
+<ANCHOR id="seed-object-get-prototype" href="seed/seed-JS-Objects.html#seed-object-get-prototype">
+<ANCHOR id="seed-object-copy-property-names" href="seed/seed-JS-Objects.html#seed-object-copy-property-names">
+<ANCHOR id="SeedObjectInitializeCallback" href="seed/seed-JS-Objects.html#SeedObjectInitializeCallback">
+<ANCHOR id="SeedObjectFinalizeCallback" href="seed/seed-JS-Objects.html#SeedObjectFinalizeCallback">
+<ANCHOR id="SeedObjectHasPropertyCallback" href="seed/seed-JS-Objects.html#SeedObjectHasPropertyCallback">
+<ANCHOR id="SeedObjectGetPropertyCallback" href="seed/seed-JS-Objects.html#SeedObjectGetPropertyCallback">
+<ANCHOR id="SeedObjectSetPropertyCallback" href="seed/seed-JS-Objects.html#SeedObjectSetPropertyCallback">
+<ANCHOR id="SeedObjectDeletePropertyCallback" href="seed/seed-JS-Objects.html#SeedObjectDeletePropertyCallback">
+<ANCHOR id="SeedObjectGetPropertyNamesCallback" href="seed/seed-JS-Objects.html#SeedObjectGetPropertyNamesCallback">
+<ANCHOR id="SeedObjectCallAsFunctionCallback" href="seed/seed-JS-Objects.html#SeedObjectCallAsFunctionCallback">
+<ANCHOR id="SeedObjectHasInstanceCallback" href="seed/seed-JS-Objects.html#SeedObjectHasInstanceCallback">
+<ANCHOR id="SeedObjectConvertToTypeCallback" href="seed/seed-JS-Objects.html#SeedObjectConvertToTypeCallback">
+<ANCHOR id="SeedObjectCallAsConstructorCallback" href="seed/seed-JS-Objects.html#SeedObjectCallAsConstructorCallback">
+<ANCHOR id="seed-Native-Functions" href="seed/seed-Native-Functions.html">
+<ANCHOR id="seed-Native-Functions.synopsis" href="seed/seed-Native-Functions.html#seed-Native-Functions.synopsis">
+<ANCHOR id="seed-Native-Functions.description" href="seed/seed-Native-Functions.html#seed-Native-Functions.description">
+<ANCHOR id="seed-Native-Functions.details" href="seed/seed-Native-Functions.html#seed-Native-Functions.details">
+<ANCHOR id="SeedFunctionCallback" href="seed/seed-Native-Functions.html#SeedFunctionCallback">
+<ANCHOR id="seed-make-function" href="seed/seed-Native-Functions.html#seed-make-function">
+<ANCHOR id="seed-create-function" href="seed/seed-Native-Functions.html#seed-create-function">
+<ANCHOR id="seed-JavaScript-Classes" href="seed/seed-JavaScript-Classes.html">
+<ANCHOR id="seed-JavaScript-Classes.synopsis" href="seed/seed-JavaScript-Classes.html#seed-JavaScript-Classes.synopsis">
+<ANCHOR id="seed-JavaScript-Classes.description" href="seed/seed-JavaScript-Classes.html#seed-JavaScript-Classes.description">
+<ANCHOR id="seed-JavaScript-Classes.details" href="seed/seed-JavaScript-Classes.html#seed-JavaScript-Classes.details">
+<ANCHOR id="SeedPropertyAttributes" href="seed/seed-JavaScript-Classes.html#SeedPropertyAttributes">
+<ANCHOR id="SeedClassAttributes" href="seed/seed-JavaScript-Classes.html#SeedClassAttributes">
+<ANCHOR id="SeedClass" href="seed/seed-JavaScript-Classes.html#SeedClass">
+<ANCHOR id="seed-empty-class" href="seed/seed-JavaScript-Classes.html#seed-empty-class">
+<ANCHOR id="seed-create-class" href="seed/seed-JavaScript-Classes.html#seed-create-class">
+<ANCHOR id="seed-make-constructor" href="seed/seed-JavaScript-Classes.html#seed-make-constructor">
+<ANCHOR id="seed-SeedClosure" href="seed/seed-SeedClosure.html">
+<ANCHOR id="seed-SeedClosure.synopsis" href="seed/seed-SeedClosure.html#seed-SeedClosure.synopsis">
+<ANCHOR id="seed-SeedClosure.description" href="seed/seed-SeedClosure.html#seed-SeedClosure.description">
+<ANCHOR id="seed-SeedClosure.details" href="seed/seed-SeedClosure.html#seed-SeedClosure.details">
+<ANCHOR id="SeedClosure" href="seed/seed-SeedClosure.html#SeedClosure">
+<ANCHOR id="seed-closure-new" href="seed/seed-SeedClosure.html#seed-closure-new">
+<ANCHOR id="seed-closure-get-callable" href="seed/seed-SeedClosure.html#seed-closure-get-callable">
+<ANCHOR id="seed-closure-invoke" href="seed/seed-SeedClosure.html#seed-closure-invoke">
+<ANCHOR id="seed-closure-invoke-with-context" href="seed/seed-SeedClosure.html#seed-closure-invoke-with-context">
+<ANCHOR id="seed-closure-warn-exception" href="seed/seed-SeedClosure.html#seed-closure-warn-exception">
+<ANCHOR id="seed-Modules" href="seed/seed-Modules.html">
+<ANCHOR id="seed-Modules.synopsis" href="seed/seed-Modules.html#seed-Modules.synopsis">
+<ANCHOR id="seed-Modules.description" href="seed/seed-Modules.html#seed-Modules.description">
+<ANCHOR id="seed-Modules.details" href="seed/seed-Modules.html#seed-Modules.details">
+<ANCHOR id="CHECK-ARG-COUNT:CAPS" href="seed/seed-Modules.html#CHECK-ARG-COUNT:CAPS">
+<ANCHOR id="DEFINE-ENUM-MEMBER:CAPS" href="seed/seed-Modules.html#DEFINE-ENUM-MEMBER:CAPS">
+<ANCHOR id="DEFINE-ENUM-MEMBER-EXT:CAPS" href="seed/seed-Modules.html#DEFINE-ENUM-MEMBER-EXT:CAPS">
+<ANCHOR id="SeedModuleInitCallback" href="seed/seed-Modules.html#SeedModuleInitCallback">
+<ANCHOR id="readline-readline" href="seed/readline-module.html#readline-readline">
+<ANCHOR id="readline-bind" href="seed/readline-module.html#readline-bind">
+<ANCHOR id="readline-done" href="seed/readline-module.html#readline-done">
+<ANCHOR id="readline-buffer" href="seed/readline-module.html#readline-buffer">
+<ANCHOR id="readline-insert" href="seed/readline-module.html#readline-insert">
+<ANCHOR id="sqlite-database" href="seed/sqlite-module.html#sqlite-database">
+<ANCHOR id="sqlite-exec" href="seed/sqlite-module.html#sqlite-exec">
+<ANCHOR id="sqlite-close" href="seed/sqlite-module.html#sqlite-close">
+<ANCHOR id="gtkbuilder-connect-signals" href="seed/GtkBuilder-module.html#gtkbuilder-connect-signals">
+<ANCHOR id="sandbox-context" href="seed/Sandbox-module.html#sandbox-context">
+<ANCHOR id="sandbox-eval" href="seed/Sandbox-module.html#sandbox-eval">
+<ANCHOR id="sandbox-addglobals" href="seed/Sandbox-module.html#sandbox-addglobals">
+<ANCHOR id="sandbox-destroy" href="seed/Sandbox-module.html#sandbox-destroy">
+<ANCHOR id="sandbox-global" href="seed/Sandbox-module.html#sandbox-global">
diff --git a/doc/reference/html/ix01.html b/doc/reference/html/ix01.html
new file mode 100644
index 0000000..1b6cb1f
--- /dev/null
+++ b/doc/reference/html/ix01.html
@@ -0,0 +1,341 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="index.html" title="Seed Reference Manual">
+<link rel="prev" href="Sandbox-module.html" title="Sandbox">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="Sandbox-module.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td> </td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="idp43312"></a>Index</h2></div></div></div>
+<div class="index">
+<div class="indexdiv">
+<h3>C</h3>
+<dl>
+<dt>CHECK_ARG_COUNT, <a class="indexterm" href="seed-Modules.html#CHECK-ARG-COUNT:CAPS">CHECK_ARG_COUNT()</a>
+</dt>
+<dt>SeedClass, <a class="indexterm" href="seed-JavaScript-Classes.html#SeedClass">SeedClass</a>
+</dt>
+<dt>SeedClassAttributes, <a class="indexterm" href="seed-JavaScript-Classes.html#SeedClassAttributes">enum SeedClassAttributes</a>
+</dt>
+<dt>SeedClosure, <a class="indexterm" href="seed-SeedClosure.html#SeedClosure">struct SeedClosure</a>
+</dt>
+<dt>seed_closure_get_callable, <a class="indexterm" href="seed-SeedClosure.html#seed-closure-get-callable">seed_closure_get_callable ()</a>
+</dt>
+<dt>seed_closure_invoke, <a class="indexterm" href="seed-SeedClosure.html#seed-closure-invoke">seed_closure_invoke ()</a>
+</dt>
+<dt>seed_closure_invoke_with_context, <a class="indexterm" href="seed-SeedClosure.html#seed-closure-invoke-with-context">seed_closure_invoke_with_context ()</a>
+</dt>
+<dt>seed_closure_new, <a class="indexterm" href="seed-SeedClosure.html#seed-closure-new">seed_closure_new ()</a>
+</dt>
+<dt>seed_closure_warn_exception, <a class="indexterm" href="seed-SeedClosure.html#seed-closure-warn-exception">seed_closure_warn_exception ()</a>
+</dt>
+<dt>SeedContext, <a class="indexterm" href="seed-Contexts.html#SeedContext">SeedContext</a>
+</dt>
+<dt>SeedContextGroup, <a class="indexterm" href="seed-Contexts.html#SeedContextGroup">SeedContextGroup</a>
+</dt>
+<dt>seed_context_collect, <a class="indexterm" href="seed-Contexts.html#seed-context-collect">seed_context_collect ()</a>
+</dt>
+<dt>seed_context_create, <a class="indexterm" href="seed-Contexts.html#seed-context-create">seed_context_create ()</a>
+</dt>
+<dt>seed_context_get_global_object, <a class="indexterm" href="seed-Contexts.html#seed-context-get-global-object">seed_context_get_global_object ()</a>
+</dt>
+<dt>seed_context_ref, <a class="indexterm" href="seed-Contexts.html#seed-context-ref">seed_context_ref ()</a>
+</dt>
+<dt>seed_context_unref, <a class="indexterm" href="seed-Contexts.html#seed-context-unref">seed_context_unref ()</a>
+</dt>
+<dt>seed_create_class, <a class="indexterm" href="seed-JavaScript-Classes.html#seed-create-class">seed_create_class ()</a>
+</dt>
+<dt>seed_create_function, <a class="indexterm" href="seed-Native-Functions.html#seed-create-function">seed_create_function ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>D</h3>
+<dl>
+<dt>DEFINE_ENUM_MEMBER, <a class="indexterm" href="seed-Modules.html#DEFINE-ENUM-MEMBER:CAPS">DEFINE_ENUM_MEMBER()</a>
+</dt>
+<dt>DEFINE_ENUM_MEMBER_EXT, <a class="indexterm" href="seed-Modules.html#DEFINE-ENUM-MEMBER-EXT:CAPS">DEFINE_ENUM_MEMBER_EXT()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>E</h3>
+<dl>
+<dt>seed_empty_class, <a class="indexterm" href="seed-JavaScript-Classes.html#seed-empty-class">seed_empty_class</a>
+</dt>
+<dt>SeedEngine, <a class="indexterm" href="seed-Initialization.html#SeedEngine">struct SeedEngine</a>
+</dt>
+<dt>seed_engine_get_search_path, <a class="indexterm" href="seed-Initialization.html#seed-engine-get-search-path">seed_engine_get_search_path ()</a>
+</dt>
+<dt>seed_engine_set_search_path, <a class="indexterm" href="seed-Initialization.html#seed-engine-set-search-path">seed_engine_set_search_path ()</a>
+</dt>
+<dt>seed_evaluate, <a class="indexterm" href="seed-Evaluation.html#seed-evaluate">seed_evaluate ()</a>
+</dt>
+<dt>SeedException, <a class="indexterm" href="seed-Exceptions.html#SeedException">SeedException</a>
+</dt>
+<dt>seed_exception_get_file, <a class="indexterm" href="seed-Exceptions.html#seed-exception-get-file">seed_exception_get_file ()</a>
+</dt>
+<dt>seed_exception_get_line, <a class="indexterm" href="seed-Exceptions.html#seed-exception-get-line">seed_exception_get_line ()</a>
+</dt>
+<dt>seed_exception_get_message, <a class="indexterm" href="seed-Exceptions.html#seed-exception-get-message">seed_exception_get_message ()</a>
+</dt>
+<dt>seed_exception_get_name, <a class="indexterm" href="seed-Exceptions.html#seed-exception-get-name">seed_exception_get_name ()</a>
+</dt>
+<dt>seed_exception_to_string, <a class="indexterm" href="seed-Exceptions.html#seed-exception-to-string">seed_exception_to_string ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>F</h3>
+<dl><dt>SeedFunctionCallback, <a class="indexterm" href="seed-Native-Functions.html#SeedFunctionCallback">SeedFunctionCallback ()</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>G</h3>
+<dl><dt>SeedGlobalContext, <a class="indexterm" href="seed-Contexts.html#SeedGlobalContext">SeedGlobalContext</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>I</h3>
+<dl>
+<dt>seed_importer_add_global, <a class="indexterm" href="seed-Contexts.html#seed-importer-add-global">seed_importer_add_global ()</a>
+</dt>
+<dt>seed_importer_set_search_path, <a class="indexterm" href="seed-Contexts.html#seed-importer-set-search-path">seed_importer_set_search_path ()</a>
+</dt>
+<dt>seed_init, <a class="indexterm" href="seed-Initialization.html#seed-init">seed_init ()</a>
+</dt>
+<dt>seed_init_with_context_group, <a class="indexterm" href="seed-Initialization.html#seed-init-with-context-group">seed_init_with_context_group ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>M</h3>
+<dl>
+<dt>seed_make_array, <a class="indexterm" href="seed-JS-Objects.html#seed-make-array">seed_make_array ()</a>
+</dt>
+<dt>seed_make_constructor, <a class="indexterm" href="seed-JavaScript-Classes.html#seed-make-constructor">seed_make_constructor ()</a>
+</dt>
+<dt>seed_make_exception, <a class="indexterm" href="seed-Exceptions.html#seed-make-exception">seed_make_exception ()</a>
+</dt>
+<dt>seed_make_function, <a class="indexterm" href="seed-Native-Functions.html#seed-make-function">seed_make_function ()</a>
+</dt>
+<dt>seed_make_null, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-make-null">seed_make_null ()</a>
+</dt>
+<dt>seed_make_object, <a class="indexterm" href="seed-JS-Objects.html#seed-make-object">seed_make_object ()</a>
+</dt>
+<dt>seed_make_pointer, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-make-pointer">seed_make_pointer ()</a>
+</dt>
+<dt>seed_make_script, <a class="indexterm" href="seed-Evaluation.html#seed-make-script">seed_make_script ()</a>
+</dt>
+<dt>seed_make_undefined, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-make-undefined">seed_make_undefined ()</a>
+</dt>
+<dt>SeedModuleInitCallback, <a class="indexterm" href="seed-Modules.html#SeedModuleInitCallback">SeedModuleInitCallback ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>O</h3>
+<dl>
+<dt>SeedObject, <a class="indexterm" href="seed-JS-Objects.html#SeedObject">SeedObject</a>
+</dt>
+<dt>SeedObjectCallAsConstructorCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectCallAsConstructorCallback">SeedObjectCallAsConstructorCallback ()</a>
+</dt>
+<dt>SeedObjectCallAsFunctionCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectCallAsFunctionCallback">SeedObjectCallAsFunctionCallback ()</a>
+</dt>
+<dt>SeedObjectConvertToTypeCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectConvertToTypeCallback">SeedObjectConvertToTypeCallback ()</a>
+</dt>
+<dt>SeedObjectDeletePropertyCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectDeletePropertyCallback">SeedObjectDeletePropertyCallback ()</a>
+</dt>
+<dt>SeedObjectFinalizeCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectFinalizeCallback">SeedObjectFinalizeCallback ()</a>
+</dt>
+<dt>SeedObjectGetPropertyCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectGetPropertyCallback">SeedObjectGetPropertyCallback ()</a>
+</dt>
+<dt>SeedObjectGetPropertyNamesCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectGetPropertyNamesCallback">SeedObjectGetPropertyNamesCallback ()</a>
+</dt>
+<dt>SeedObjectHasInstanceCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectHasInstanceCallback">SeedObjectHasInstanceCallback ()</a>
+</dt>
+<dt>SeedObjectHasPropertyCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectHasPropertyCallback">SeedObjectHasPropertyCallback ()</a>
+</dt>
+<dt>SeedObjectInitializeCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectInitializeCallback">SeedObjectInitializeCallback ()</a>
+</dt>
+<dt>SeedObjectSetPropertyCallback, <a class="indexterm" href="seed-JS-Objects.html#SeedObjectSetPropertyCallback">SeedObjectSetPropertyCallback ()</a>
+</dt>
+<dt>seed_object_call, <a class="indexterm" href="seed-JS-Objects.html#seed-object-call">seed_object_call ()</a>
+</dt>
+<dt>seed_object_copy_property_names, <a class="indexterm" href="seed-JS-Objects.html#seed-object-copy-property-names">seed_object_copy_property_names ()</a>
+</dt>
+<dt>seed_object_get_private, <a class="indexterm" href="seed-JS-Objects.html#seed-object-get-private">seed_object_get_private ()</a>
+</dt>
+<dt>seed_object_get_property, <a class="indexterm" href="seed-JS-Objects.html#seed-object-get-property">seed_object_get_property ()</a>
+</dt>
+<dt>seed_object_get_property_at_index, <a class="indexterm" href="seed-JS-Objects.html#seed-object-get-property-at-index">seed_object_get_property_at_index ()</a>
+</dt>
+<dt>seed_object_get_prototype, <a class="indexterm" href="seed-JS-Objects.html#seed-object-get-prototype">seed_object_get_prototype ()</a>
+</dt>
+<dt>seed_object_is_of_class, <a class="indexterm" href="seed-JS-Objects.html#seed-object-is-of-class">seed_object_is_of_class ()</a>
+</dt>
+<dt>seed_object_set_private, <a class="indexterm" href="seed-JS-Objects.html#seed-object-set-private">seed_object_set_private ()</a>
+</dt>
+<dt>seed_object_set_property, <a class="indexterm" href="seed-JS-Objects.html#seed-object-set-property">seed_object_set_property ()</a>
+</dt>
+<dt>seed_object_set_property_at_index, <a class="indexterm" href="seed-JS-Objects.html#seed-object-set-property-at-index">seed_object_set_property_at_index ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>P</h3>
+<dl>
+<dt>seed_pointer_get_pointer, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-pointer-get-pointer">seed_pointer_get_pointer ()</a>
+</dt>
+<dt>seed_prepare_global_context, <a class="indexterm" href="seed-Contexts.html#seed-prepare-global-context">seed_prepare_global_context ()</a>
+</dt>
+<dt>SeedPropertyAttributes, <a class="indexterm" href="seed-JavaScript-Classes.html#SeedPropertyAttributes">enum SeedPropertyAttributes</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>S</h3>
+<dl>
+<dt>SeedScript, <a class="indexterm" href="seed-Evaluation.html#SeedScript">SeedScript</a>
+</dt>
+<dt>seed_script_destroy, <a class="indexterm" href="seed-Evaluation.html#seed-script-destroy">seed_script_destroy ()</a>
+</dt>
+<dt>seed_script_exception, <a class="indexterm" href="seed-Evaluation.html#seed-script-exception">seed_script_exception ()</a>
+</dt>
+<dt>seed_script_new_from_file, <a class="indexterm" href="seed-Evaluation.html#seed-script-new-from-file">seed_script_new_from_file ()</a>
+</dt>
+<dt>seed_signal_connect, <a class="indexterm" href="seed-Signals.html#seed-signal-connect">seed_signal_connect ()</a>
+</dt>
+<dt>seed_signal_connect_value, <a class="indexterm" href="seed-Signals.html#seed-signal-connect-value">seed_signal_connect_value ()</a>
+</dt>
+<dt>seed_simple_evaluate, <a class="indexterm" href="seed-Evaluation.html#seed-simple-evaluate">seed_simple_evaluate ()</a>
+</dt>
+<dt>SeedString, <a class="indexterm" href="seed-Native-Type-Conversion.html#SeedString">SeedString</a>
+</dt>
+<dt>seed_string_get_maximum_size, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-get-maximum-size">seed_string_get_maximum_size ()</a>
+</dt>
+<dt>seed_string_is_equal, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-is-equal">seed_string_is_equal ()</a>
+</dt>
+<dt>seed_string_is_equal_utf8, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-is-equal-utf8">seed_string_is_equal_utf8 ()</a>
+</dt>
+<dt>seed_string_ref, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-ref">seed_string_ref ()</a>
+</dt>
+<dt>seed_string_to_utf8_buffer, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-to-utf8-buffer">seed_string_to_utf8_buffer ()</a>
+</dt>
+<dt>seed_string_unref, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-string-unref">seed_string_unref ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>T</h3>
+<dl><dt>SeedType, <a class="indexterm" href="seed-Native-Type-Conversion.html#SeedType">enum SeedType</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>V</h3>
+<dl>
+<dt>SeedValue, <a class="indexterm" href="seed-Native-Type-Conversion.html#SeedValue">SeedValue</a>
+</dt>
+<dt>seed_value_from_binary_string, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-binary-string">seed_value_from_binary_string ()</a>
+</dt>
+<dt>seed_value_from_boolean, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-boolean">seed_value_from_boolean ()</a>
+</dt>
+<dt>seed_value_from_char, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-char">seed_value_from_char ()</a>
+</dt>
+<dt>seed_value_from_double, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-double">seed_value_from_double ()</a>
+</dt>
+<dt>seed_value_from_filename, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-filename">seed_value_from_filename ()</a>
+</dt>
+<dt>seed_value_from_float, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-float">seed_value_from_float ()</a>
+</dt>
+<dt>seed_value_from_int, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-int">seed_value_from_int ()</a>
+</dt>
+<dt>seed_value_from_int64, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-int64">seed_value_from_int64 ()</a>
+</dt>
+<dt>seed_value_from_long, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-long">seed_value_from_long ()</a>
+</dt>
+<dt>seed_value_from_object, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-object">seed_value_from_object ()</a>
+</dt>
+<dt>seed_value_from_string, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-string">seed_value_from_string ()</a>
+</dt>
+<dt>seed_value_from_uchar, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-uchar">seed_value_from_uchar ()</a>
+</dt>
+<dt>seed_value_from_uint, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-uint">seed_value_from_uint ()</a>
+</dt>
+<dt>seed_value_from_uint64, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-uint64">seed_value_from_uint64 ()</a>
+</dt>
+<dt>seed_value_from_ulong, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-from-ulong">seed_value_from_ulong ()</a>
+</dt>
+<dt>seed_value_get_type, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-get-type">seed_value_get_type ()</a>
+</dt>
+<dt>seed_value_is_function, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-function">seed_value_is_function ()</a>
+</dt>
+<dt>seed_value_is_null, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-null">seed_value_is_null ()</a>
+</dt>
+<dt>seed_value_is_number, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-number">seed_value_is_number ()</a>
+</dt>
+<dt>seed_value_is_object, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-object">seed_value_is_object ()</a>
+</dt>
+<dt>seed_value_is_object_of_class, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-object-of-class">seed_value_is_object_of_class ()</a>
+</dt>
+<dt>seed_value_is_string, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-string">seed_value_is_string ()</a>
+</dt>
+<dt>seed_value_is_undefined, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-is-undefined">seed_value_is_undefined ()</a>
+</dt>
+<dt>seed_value_protect, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-protect">seed_value_protect ()</a>
+</dt>
+<dt>seed_value_to_boolean, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-boolean">seed_value_to_boolean ()</a>
+</dt>
+<dt>seed_value_to_char, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-char">seed_value_to_char ()</a>
+</dt>
+<dt>seed_value_to_double, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-double">seed_value_to_double ()</a>
+</dt>
+<dt>seed_value_to_filename, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-filename">seed_value_to_filename ()</a>
+</dt>
+<dt>seed_value_to_float, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-float">seed_value_to_float ()</a>
+</dt>
+<dt>seed_value_to_format, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-format">seed_value_to_format ()</a>
+</dt>
+<dt>seed_value_to_int, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-int">seed_value_to_int ()</a>
+</dt>
+<dt>seed_value_to_int64, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-int64">seed_value_to_int64 ()</a>
+</dt>
+<dt>seed_value_to_long, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-long">seed_value_to_long ()</a>
+</dt>
+<dt>seed_value_to_object, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-object">seed_value_to_object ()</a>
+</dt>
+<dt>seed_value_to_string, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-string">seed_value_to_string ()</a>
+</dt>
+<dt>seed_value_to_uchar, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-uchar">seed_value_to_uchar ()</a>
+</dt>
+<dt>seed_value_to_uint, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-uint">seed_value_to_uint ()</a>
+</dt>
+<dt>seed_value_to_uint64, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-uint64">seed_value_to_uint64 ()</a>
+</dt>
+<dt>seed_value_to_ulong, <a class="indexterm" href="seed-Native-Type-Conversion.html#seed-value-to-ulong">seed_value_to_ulong ()</a>
+</dt>
+<dt>seed_value_unprotect, <a class="indexterm" href="seed-Operating-on-Native-Types.html#seed-value-unprotect">seed_value_unprotect ()</a>
+</dt>
+</dl>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/js.html b/doc/reference/html/js.html
new file mode 100644
index 0000000..1bc68fd
--- /dev/null
+++ b/doc/reference/html/js.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part II. Seed JavaScript Reference</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="index.html" title="Seed Reference Manual">
+<link rel="prev" href="seed-contact.html" title="Contact Information">
+<link rel="next" href="seed-importer.html" title="Importer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-contact.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-importer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="js"></a>Part II. Seed JavaScript Reference</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl><dt>
+<span class="refentrytitle"><a href="seed-importer.html">Importer</a></span><span class="refpurpose"> —
+Importing gobject-introspection namespaces, native modules, and JavaScript modules
+</span>
+</dt></dl>
+</div>
+<p>This is the documentation for the JavaScript runtime side of Seed.</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/left.png b/doc/reference/html/left.png
new file mode 100644
index 0000000..48cab27
--- /dev/null
+++ b/doc/reference/html/left.png
Binary files differ
diff --git a/doc/reference/html/modules.html b/doc/reference/html/modules.html
new file mode 100644
index 0000000..9cf1138
--- /dev/null
+++ b/doc/reference/html/modules.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part IV. Seed Module Reference</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="index.html" title="Seed Reference Manual">
+<link rel="prev" href="seed-Modules.html" title="Seed Modules">
+<link rel="next" href="readline-module.html" title="readline">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-Modules.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="readline-module.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="modules"></a>Part IV. Seed Module Reference</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="chapter"><a href="readline-module.html">readline</a></span></dt>
+<dt><span class="chapter"><a href="sqlite-module.html">SQLite</a></span></dt>
+<dt><span class="chapter"><a href="GtkBuilder-module.html">GtkBuilder</a></span></dt>
+<dt><span class="chapter"><a href="Sandbox-module.html">Sandbox</a></span></dt>
+</dl>
+</div>
+<p>This is the documentation for the various modules included with Seed.</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/readline-module.html b/doc/reference/html/readline-module.html
new file mode 100644
index 0000000..98d0432
--- /dev/null
+++ b/doc/reference/html/readline-module.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>readline</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="modules.html" title="Part IV. Seed Module Reference">
+<link rel="prev" href="modules.html" title="Part IV. Seed Module Reference">
+<link rel="next" href="sqlite-module.html" title="SQLite">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="modules.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="modules.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="sqlite-module.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="readline-module"></a>readline</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Robert</span> <span class="surname">Carr</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+   <code class="email">&lt;<a class="email" href="mailto:racarr@gnome.org">racarr@<em class="parameter"><code>gnome.org</code></em></a>&gt;</code><br>
+ </p></div></div>
+</div></div>
+</div></div>
+<div class="refsect1">
+<a name="idp5409504"></a><h2>API Reference</h2>
+<p>
+ The readline module allows for basic usage of the GNU readline library, in Seed. More advanced features may be added a a later time. In order to use the readline module it must be first imported.
+ </p>
+<pre class="programlisting">
+ readline = imports.readline;
+ </pre>
+<p>
+ </p>
+<p>
+</p>
+<div class="refsect2">
+<a name="readline-readline"></a><h3>readline.readline (prompt)</h3>
+<p>Prompts for one line of input on standard input using <em class="parameter"><code>prompt</code></em> as the prompt.</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prompt</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span></span></p></td>
+<td>A string entered on standard input.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="readline-bind"></a><h3>readline.bind (key, function)</h3>
+<p>Binds <em class="parameter"><code>key</code></em> to <em class="parameter"><code>function</code></em> causing the function to be invokved whenever <em class="parameter"><code>key</code></em> is pressed</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>key</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>function</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="readline-done"></a><h3>readline.done ()</h3>
+<p>Indicates that readline should finish the current line, and return from <em class="parameter"><code>readline.readline</code></em>. Can be used in callbacks to implement features like multiline editing</p>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="readline-buffer"></a><h3>readline.buffer()</h3>
+<p>Retrieve the current readline buffer</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span></span></p></td>
+<td>The current readline buffer</td>
+</tr></tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="readline-insert"></a><h3>readline.insert (string)</h3>
+<p>Inserts <em class="parameter"><code>string</code></em> in to the current readline buffer</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em></span></p></td>
+<td>undefined</td>
+</tr></tbody>
+</table></div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="idp9336384"></a><h2>Examples</h2>
+<p>Below are several examples of using the Seed readline module. For additional resources, consult the examples/ folder of the Seed source</p>
+<div class="example">
+<a name="readline-repl-example"></a><p class="title"><b>Example 14. </b></p>
+<div class="example-contents">
+<p>This demonstrates a simple REPL using the readline module</p>
+<pre class="programlisting">
+readline = imports.readline;
+while (1){
+ try{
+ eval(readline.readline("&gt; "));
+ }
+ catch(e) {
+ print(e.name + " " + e.message);
+ }
+}
+ </pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/right.png b/doc/reference/html/right.png
new file mode 100644
index 0000000..ed55207
--- /dev/null
+++ b/doc/reference/html/right.png
Binary files differ
diff --git a/doc/reference/html/seed-Contexts.html b/doc/reference/html/seed-Contexts.html
new file mode 100644
index 0000000..085159b
--- /dev/null
+++ b/doc/reference/html/seed-Contexts.html
@@ -0,0 +1,242 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Working with Contexts</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Initialization.html" title="Initialization">
+<link rel="next" href="seed-Evaluation.html" title="Evaluating JavaScript">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Initialization.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Evaluation.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Contexts.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Contexts.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Contexts"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Contexts.top_of_page"></a>Working with Contexts</span></h2>
+<p>Working with Contexts — Self-contained JavaScript execution environments</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Contexts.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+typedef <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext">SeedContext</a>;
+typedef <a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext">SeedGlobalContext</a>;
+typedef <a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup">SeedContextGroup</a>;
+<a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="returnvalue">SeedGlobalContext</span></a> <a class="link" href="seed-Contexts.html#seed-context-create" title="seed_context_create ()">seed_context_create</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> group</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> global_class</code></em>);
+<a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="returnvalue">SeedGlobalContext</span></a> <a class="link" href="seed-Contexts.html#seed-context-ref" title="seed_context_ref ()">seed_context_ref</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Contexts.html#seed-context-unref" title="seed_context_unref ()">seed_context_unref</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Contexts.html#seed-context-collect" title="seed_context_collect ()">seed_context_collect</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-Contexts.html#seed-context-get-global-object" title="seed_context_get_global_object ()">seed_context_get_global_object</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Contexts.html#seed-prepare-global-context" title="seed_prepare_global_context ()">seed_prepare_global_context</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Contexts.html#seed-importer-add-global" title="seed_importer_add_global ()">seed_importer_add_global</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *name</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Contexts.html#seed-importer-set-search-path" title="seed_importer_set_search_path ()">seed_importer_set_search_path</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> **search_path</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Contexts.description"></a><h2>Description</h2>
+<p>
+A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> provides a complete "universe" for the execution of JavaScript. You can use <a class="link" href="seed-Contexts.html#seed-context-create" title="seed_context_create ()"><code class="function">seed_context_create()</code></a> to create a sandboxed context that lacks the import system, so it can be used to execute somewhat untrusted JavaScript (as it has no way to access the rest of your system). You can also expose the default set of globals (including "print", "imports", and "Seed") to create more powerful but still self-contained environments within which to execute code.
+</p>
+<div class="example">
+<a name="idp9449264"></a><p class="title"><b>Example 6. Using a Seed context as a form of sandboxing</b></p>
+<div class="example-contents"><pre class="programlisting">
+...
+ctx = seed_context_create(NULL, NULL);
+script = seed_make_script(ctx, "print(imports)", NULL, 0);
+// nothing is printed, because imports is undefined, because we're in a sandbox
+...
+</pre></div>
+</div>
+<br class="example-break"><p>The sandbox module provides access to this system from the JavaScript side of Seed.
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-Contexts.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedContext"></a><h3>SeedContext</h3>
+<pre class="programlisting">typedef gpointer SeedContext;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedGlobalContext"></a><h3>SeedGlobalContext</h3>
+<pre class="programlisting">typedef gpointer SeedGlobalContext;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedContextGroup"></a><h3>SeedContextGroup</h3>
+<pre class="programlisting">typedef gpointer SeedContextGroup;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-context-create"></a><h3>seed_context_create ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="returnvalue">SeedGlobalContext</span></a> seed_context_create (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> group</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> global_class</code></em>);</pre>
+<p>
+Create a new <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>. By default, this creates a new context
+which has no global objects; you can add the default set using
+<a class="link" href="seed-Contexts.html#seed-prepare-global-context" title="seed_prepare_global_context ()"><code class="function">seed_prepare_global_context()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>group</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> in which to create the new context, or <code class="literal">NULL</code> to
+create it in the default context group.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>global_class</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> to use to create the global object, or <code class="literal">NULL</code> to
+create it with the default class.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-context-ref"></a><h3>seed_context_ref ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="returnvalue">SeedGlobalContext</span></a> seed_context_ref (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);</pre>
+<p>
+Increments the reference count of <em class="parameter"><code>ctx</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td><em class="parameter"><code>ctx</code></em></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-context-unref"></a><h3>seed_context_unref ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_context_unref (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);</pre>
+<p>
+Decrements the reference count of <em class="parameter"><code>ctx</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-context-collect"></a><h3>seed_context_collect ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_context_collect (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedGlobalContext" title="SeedGlobalContext"><span class="type">SeedGlobalContext</span></a> ctx</code></em>);</pre>
+<p>
+Instructs JavaScriptCore to make a garbage collection pass.
+The context parameter is currently unused, and a pass is made
+through all contexts.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-context-get-global-object"></a><h3>seed_context_get_global_object ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_context_get_global_object (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The global object for <em class="parameter"><code>ctx</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-prepare-global-context"></a><h3>seed_prepare_global_context ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_prepare_global_context (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);</pre>
+<p>
+Adds the default set of global objects (imports, GType, Seed, and print)
+to a fresh <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> on which to add the default set of global objects.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-importer-add-global"></a><h3>seed_importer_add_global ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_importer_add_global (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *name</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-importer-set-search-path"></a><h3>seed_importer_set_search_path ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_importer_set_search_path (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> **search_path</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Evaluation.html b/doc/reference/html/seed-Evaluation.html
new file mode 100644
index 0000000..c0fd463
--- /dev/null
+++ b/doc/reference/html/seed-Evaluation.html
@@ -0,0 +1,273 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Evaluating JavaScript</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Contexts.html" title="Working with Contexts">
+<link rel="next" href="seed-Exceptions.html" title="Exception Handling">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Contexts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Exceptions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Evaluation.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Evaluation.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Evaluation"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Evaluation.top_of_page"></a>Evaluating JavaScript</span></h2>
+<p>Evaluating JavaScript — Creating and interpreting scripts</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Evaluation.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+ <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript">SeedScript</a>;
+<a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="returnvalue">SeedScript</span></a> * <a class="link" href="seed-Evaluation.html#seed-make-script" title="seed_make_script ()">seed_make_script</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *js</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *source_url</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> line_number</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Evaluation.html#seed-evaluate" title="seed_evaluate ()">seed_evaluate</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Evaluation.html#seed-simple-evaluate" title="seed_simple_evaluate ()">seed_simple_evaluate</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *source</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="returnvalue">SeedScript</span></a> * <a class="link" href="seed-Evaluation.html#seed-script-new-from-file" title="seed_script_new_from_file ()">seed_script_new_from_file</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *file</code></em>);
+<a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="returnvalue">SeedException</span></a> <a class="link" href="seed-Evaluation.html#seed-script-exception" title="seed_script_exception ()">seed_script_exception</a> (<em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Evaluation.html#seed-script-destroy" title="seed_script_destroy ()">seed_script_destroy</a> (<em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Evaluation.description"></a><h2>Description</h2>
+<p>
+Seed relies on WebKit's JavaScriptCore interpreter to actually evaluate snippets of JavaScript; however, it provides a handful of useful wrapper functions to quickly create and evaluate scripts. <a class="link" href="seed-Evaluation.html#seed-make-script" title="seed_make_script ()"><code class="function">seed_make_script()</code></a> and <a class="link" href="seed-Evaluation.html#seed-evaluate" title="seed_evaluate ()"><code class="function">seed_evaluate()</code></a> are the workhorse functions; these allow you to control every detail of the created script and its evaluation environment (including customizing the "this" object during evaluation, and setting a starting line number and filename from which the script originates). <a class="link" href="seed-Evaluation.html#seed-simple-evaluate" title="seed_simple_evaluate ()"><code class="function">seed_simple_evaluate()</code></a> provides an interface to execute a string of JavaScript without previously creating a <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a>, and, while requiring less supporting code, is less flexible.
+</p>
+<div class="example">
+<a name="idp6441712"></a><p class="title"><b>Example 7. Create and evaluate a string of JavaScript with <a class="link" href="seed-Evaluation.html#seed-make-script" title="seed_make_script ()"><code class="function">seed_make_script()</code></a></b></p>
+<div class="example-contents"><pre class="programlisting">
+SeedEngine * eng;
+ 
+...
+ 
+SeedScript * script;
+/* Create a simple <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript">SeedScript</a> */
+script = seed_make_script(eng-&gt;context, "print('Hello, world!')", NULL, 0);
+ 
+/* Evaluate the <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript">SeedScript</a> in the default context */
+seed_evaluate(eng-&gt;context, script, 0);
+ 
+...
+</pre></div>
+</div>
+<br class="example-break"><div class="example">
+<a name="idp6445792"></a><p class="title"><b>Example 8. Create and evaluate a string of JavaScript with <a class="link" href="seed-Evaluation.html#seed-simple-evaluate" title="seed_simple_evaluate ()"><code class="function">seed_simple_evaluate()</code></a></b></p>
+<div class="example-contents"><pre class="programlisting">
+SeedEngine * eng;
+ 
+...
+ 
+/* Evaluate a simple JavaScript snippet in the default context */
+seed_simple_evaluate(eng-&gt;context, "print('Hello, world!')", NULL);
+ 
+...
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="seed-Evaluation.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedScript"></a><h3>SeedScript</h3>
+<pre class="programlisting">typedef struct {
+ JSStringRef script;
+ JSValueRef exception;
+
+ JSStringRef source_url;
+ gint line_number;
+} SeedScript;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-script"></a><h3>seed_make_script ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="returnvalue">SeedScript</span></a> * seed_make_script (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *js</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *source_url</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> line_number</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> instance with <em class="parameter"><code>js</code></em> as the contents, then
+checks for proper syntax.
+</p>
+<p>
+Note: <a class="link" href="seed-Evaluation.html#seed-make-script" title="seed_make_script ()"><code class="function">seed_make_script()</code></a> does not handle the shebang line, and will return a
+ parse error if one is included in <em class="parameter"><code>js</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>js</code></em> :</span></p></td>
+<td>A string representing the contents of the script.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>source_url</code></em> :</span></p></td>
+<td>The filename of the script, for reference in errors, or <code class="literal">NULL</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>line_number</code></em> :</span></p></td>
+<td>The line number of the beginning of the script, for reference
+in error messages, or <code class="literal">NULL</code>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The newly created <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-evaluate"></a><h3>seed_evaluate ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_evaluate (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>);</pre>
+<p>
+Evaluates a <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> with <em class="parameter"><code>this</code></em> as the global "this" object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> to evaluate.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> returned by evaluating the script.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-simple-evaluate"></a><h3>seed_simple_evaluate ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_simple_evaluate (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *source</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Evaluates a string of JavaScript in <em class="parameter"><code>ctx</code></em>; if an exception
+is raised in the context of the script, it will be placed in <em class="parameter"><code>exception</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>source</code></em> :</span></p></td>
+<td>A string representing the JavaScript to evaluate.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> pointer to store an exception in.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> returned by evaluating the script.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-script-new-from-file"></a><h3>seed_script_new_from_file ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="returnvalue">SeedScript</span></a> * seed_script_new_from_file (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *file</code></em>);</pre>
+<p>
+Uses <a class="link" href="seed-Evaluation.html#seed-make-script" title="seed_make_script ()"><code class="function">seed_make_script()</code></a> to create a <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> from the contents of <em class="parameter"><code>file</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>file</code></em> :</span></p></td>
+<td>The filename of the script to load.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The newly created <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-script-exception"></a><h3>seed_script_exception ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="returnvalue">SeedException</span></a> seed_script_exception (<em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>);</pre>
+<p>
+Retrieves the exception (if any) raised during the evaluation of <em class="parameter"><code>s</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> representing the exception of <em class="parameter"><code>s</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-script-destroy"></a><h3>seed_script_destroy ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_script_destroy (<em class="parameter"><code><a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript"><span class="type">SeedScript</span></a> *s</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Exceptions.html b/doc/reference/html/seed-Exceptions.html
new file mode 100644
index 0000000..b64bdda
--- /dev/null
+++ b/doc/reference/html/seed-Exceptions.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Exception Handling</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Evaluation.html" title="Evaluating JavaScript">
+<link rel="next" href="seed-Signals.html" title="GObject Signals">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Evaluation.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Signals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Exceptions.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Exceptions.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Exceptions"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Exceptions.top_of_page"></a>Exception Handling</span></h2>
+<p>Exception Handling — Throwing and catching exceptions</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Exceptions.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+typedef <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException">SeedException</a>;
+<span class="returnvalue">void</span> <a class="link" href="seed-Exceptions.html#seed-make-exception" title="seed_make_exception ()">seed_make_exception</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *message</code></em>,
+ <em class="parameter"><code>...</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Exceptions.html#seed-exception-get-name" title="seed_exception_get_name ()">seed_exception_get_name</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Exceptions.html#seed-exception-get-message" title="seed_exception_get_message ()">seed_exception_get_message</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+<span class="returnvalue">guint</span> <a class="link" href="seed-Exceptions.html#seed-exception-get-line" title="seed_exception_get_line ()">seed_exception_get_line</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Exceptions.html#seed-exception-get-file" title="seed_exception_get_file ()">seed_exception_get_file</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Exceptions.html#seed-exception-to-string" title="seed_exception_to_string ()">seed_exception_to_string</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Exceptions.description"></a><h2>Description</h2>
+<p>
+Seed uses exceptions as a method of handling runtime errors within scripts. An exception consists of a name (a list of commonly-used exception names is below), a message, detailing the error, and the line number and filename from which the exception was raised. If Seed cannot determine from where the exception was raised, the line number and filename will be undefined. <a class="link" href="seed-Exceptions.html#seed-exception-to-string" title="seed_exception_to_string ()"><code class="function">seed_exception_to_string()</code></a> provides a simple way to convert all of these into a consistent representation to display to users.
+</p>
+<p>
+All Seed callbacks take an exception argument; calling
+<a class="link" href="seed-Exceptions.html#seed-make-exception" title="seed_make_exception ()"><code class="function">seed_make_exception()</code></a> with this argument and the details you wish to
+fill it with will propogate that exception up the chain. Exceptions
+can be <span class="emphasis"><em>caught</em></span> either by a try/catch block in the
+calling JavaScript, or by observing the exception property, dealing
+with it, and then clearing the exception.
+It is important to note that calling <a class="link" href="seed-Exceptions.html#seed-make-exception" title="seed_make_exception ()"><code class="function">seed_make_exception()</code></a> does not
+in fact <span class="emphasis"><em>throw</em></span> the exception, but just creates an
+object which, when stored in the exception pointer passed to a callback,
+causes JSC to throw an exception once flow is returned.
+</p>
+<div class="example">
+<a name="idp5371936"></a><p class="title"><b>Example 9. Throw an exception, because <code class="function">random_callback</code> was called with the wrong number of arguments</b></p>
+<div class="example-contents"><pre class="programlisting">
+SeedValue random_callback(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ ...
+ 
+ if(argument_count != 1)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "wrong number of arguments; expected 1, got %Zd",
+ argument_count);
+ return seed_make_undefined(ctx);
+ }
+ 
+ ...
+}
+</pre></div>
+</div>
+<br class="example-break"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Predefined Exception Names</h3>
+<p>
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<span class="emphasis"><em>InvalidPropertyValue</em></span> - a property was set to a value out of range</li>
+<li class="listitem">
+<span class="emphasis"><em>PropertyError</em></span> - a warning occurred in GLib while trying to set a property</li>
+<li class="listitem">
+<span class="emphasis"><em>ArgumentError</em></span> - a function was called with the wrong number of arguments</li>
+<li class="listitem">
+<span class="emphasis"><em>ConversionError</em></span> - one of the type conversion functions threw an exception</li>
+<li class="listitem">
+<span class="emphasis"><em>TypeError</em></span> - a required argument was of the wrong type</li>
+<li class="listitem">
+<span class="emphasis"><em>SyntaxError</em></span> - a syntax error was thrown from JavaScriptCore</li>
+<li class="listitem">
+<span class="emphasis"><em>ParseError</em></span> - a parsing error was thrown from JavaScriptCore (make sure you close all of your brackets!)</li>
+<li class="listitem">
+<span class="emphasis"><em>ReferenceError</em></span> - a reference error was thrown from JavaScriptCore (most likely, you tried to access a variable which was undefined)</li>
+</ul></div>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="seed-Exceptions.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedException"></a><h3>SeedException</h3>
+<pre class="programlisting">typedef gpointer SeedException;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-exception"></a><h3>seed_make_exception ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_make_exception (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *message</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+<p>
+Creates a new JavaScript exception with the given attributes.
+</p>
+<p>
+The line number and file name of the exception created will be undefined.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> in which to store the exception.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The <span class="type">gchar</span>* representing the exception name.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
+<td>The <span class="type">gchar</span>*, as a printf format string, representing the
+details of the exception.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-exception-get-name"></a><h3>seed_exception_get_name ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_exception_get_name (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+Retrieves the name of the given exception; this could be one of the
+predefined exception names given above, or your own name, which should
+be a single CamelCase word, preferably ending in something like "Error".
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gchar</span>* representing the name of <em class="parameter"><code>exception</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-exception-get-message"></a><h3>seed_exception_get_message ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_exception_get_message (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+Retrieves the message of the given exception; this should be a
+human-readable string describing the exception enough that a developer
+could utilize the message in order to determine where to look to debug
+the problem.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gchar</span>* representing the detailed message of <em class="parameter"><code>exception</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-exception-get-line"></a><h3>seed_exception_get_line ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint</span> seed_exception_get_line (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+Retrieves the line number the given exception was thrown from; keep in mind
+that exceptions created from C have an undefined line number.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">guint</span> representing the line number from which <em class="parameter"><code>exception</code></em>
+was thrown.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-exception-get-file"></a><h3>seed_exception_get_file ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_exception_get_file (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+Retrieves the file name the given exception was thrown from; keep in mind
+that exceptions created from C have an undefined file name.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gchar</span>* representing the name of the file from which
+<em class="parameter"><code>exception</code></em> was thrown.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-exception-to-string"></a><h3>seed_exception_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_exception_to_string (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+Properly formats the name, detailed message, line number, and file name of
+the given extension. This provides a consistent format for printed
+exceptions, to reduce confusion. Please use it if you're exposing exception
+data to the outside world.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gchar</span>* representing the <em class="parameter"><code>exception</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Initialization.html b/doc/reference/html/seed-Initialization.html
new file mode 100644
index 0000000..20ed610
--- /dev/null
+++ b/doc/reference/html/seed-Initialization.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Initialization</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="api.html" title="Part III. Seed API Reference">
+<link rel="next" href="seed-Contexts.html" title="Working with Contexts">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="api.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Contexts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Initialization.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Initialization.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Initialization"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Initialization.top_of_page"></a>Initialization</span></h2>
+<p>Initialization — Overall setup of the Seed engine</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Initialization.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+struct <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine">SeedEngine</a>;
+<a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="returnvalue">SeedEngine</span></a> * <a class="link" href="seed-Initialization.html#seed-init" title="seed_init ()">seed_init</a> (<em class="parameter"><code><span class="type">gint</span> *argc</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> ***argv</code></em>);
+<a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="returnvalue">SeedEngine</span></a> * <a class="link" href="seed-Initialization.html#seed-init-with-context-group" title="seed_init_with_context_group ()">seed_init_with_context_group</a> (<em class="parameter"><code><span class="type">gint</span> *argc</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> ***argv</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> group</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Initialization.html#seed-engine-set-search-path" title="seed_engine_set_search_path ()">seed_engine_set_search_path</a> (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *path</code></em>);
+<span class="returnvalue">gchar</span> ** <a class="link" href="seed-Initialization.html#seed-engine-get-search-path" title="seed_engine_get_search_path ()">seed_engine_get_search_path</a> (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Initialization.description"></a><h2>Description</h2>
+<p>
+Before any other Seed functions can be used, you must initialize the engine, which creates an initial JavaScript context and sets up JavaScriptCore and GLib. To do this in most cases, you will use <a class="link" href="seed-Initialization.html#seed-init" title="seed_init ()"><code class="function">seed_init()</code></a>, which will provide you with a <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>. Only one <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> is permitted per application; use a <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> to sandbox code execution.
+</p>
+<div class="example">
+<a name="idp4766528"></a><p class="title"><b>Example 5. Very simple <code class="function">main</code> function for a Seed program</b></p>
+<div class="example-contents"><pre class="programlisting">
+int main (int argc, char **argv)
+{
+ SeedEngine * eng;
+ SeedScript * script;
+ 
+ /* Initialize the Seed engine */
+ eng = seed_init(&amp;argc, &amp;argv);
+ 
+ /* Create a simple <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript">SeedScript</a> */
+ script = seed_make_script(eng-&gt;context, "print('Hello, world!')", NULL, 0);
+ 
+ /* Evaluate the <a class="link" href="seed-Evaluation.html#SeedScript" title="SeedScript">SeedScript</a> in the default context */
+ seed_evaluate(eng-&gt;context, script, 0);
+ 
+ g_free(script);
+ return 0;
+}
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="seed-Initialization.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedEngine"></a><h3>struct SeedEngine</h3>
+<pre class="programlisting">struct SeedEngine {
+ JSGlobalContextRef context;
+ JSObjectRef global;
+ gchar **search_path;
+
+ JSContextGroupRef group;
+};
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-init"></a><h3>seed_init ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="returnvalue">SeedEngine</span></a> * seed_init (<em class="parameter"><code><span class="type">gint</span> *argc</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> ***argv</code></em>);</pre>
+<p>
+Initializes a new <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>. This involves initializing GLib, creating
+an initial context with all of the default globals, and initializing
+various internal parts of Seed.
+</p>
+<p>
+This function should only be called once within a single Seed application.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argc</code></em> :</span></p></td>
+<td>A reference to the number of arguments remaining to parse.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argv</code></em> :</span></p></td>
+<td>A reference to an array of string arguments remaining to parse.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The newly created and initialized <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-init-with-context-group"></a><h3>seed_init_with_context_group ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="returnvalue">SeedEngine</span></a> * seed_init_with_context_group (<em class="parameter"><code><span class="type">gint</span> *argc</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> ***argv</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> group</code></em>);</pre>
+<p>
+Initializes a new <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>. This involves initializing GLib, creating
+an initial context (in <span class="type">group</span>) with all of the default globals, and
+initializing various internal parts of Seed.
+</p>
+<p>
+This function should only be called once within a single Seed application.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argc</code></em> :</span></p></td>
+<td>A reference to the number of arguments remaining to parse.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argv</code></em> :</span></p></td>
+<td>A reference to an array of string arguments remaining to parse.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>group</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContextGroup" title="SeedContextGroup"><span class="type">SeedContextGroup</span></a> within which to create the initial context.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The newly created and initialized <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-engine-set-search-path"></a><h3>seed_engine_set_search_path ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_engine_set_search_path (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *path</code></em>);</pre>
+<p>
+Sets the search path for the imports system.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>eng</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>, on which to set the path.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>A <span class="type">const</span> gchar*, a colon separated string containing the path to set</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-engine-get-search-path"></a><h3>seed_engine_get_search_path ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> ** seed_engine_get_search_path (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>);</pre>
+<p>
+Retrieves the search path for the imports system. The returned value is
+owned by the <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>, and shouldn't be freed by the application writer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>eng</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>, to get the currently set search path.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A null-terminated array of strings containing the paths.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-JS-Objects.html b/doc/reference/html/seed-JS-Objects.html
new file mode 100644
index 0000000..b0b4e5e
--- /dev/null
+++ b/doc/reference/html/seed-JS-Objects.html
@@ -0,0 +1,576 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Working with JavaScript objects</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="types.html" title="Values and Type Conversion">
+<link rel="prev" href="seed-Operating-on-Native-Types.html" title="Operating on JavaScript types">
+<link rel="next" href="seed-Native-Functions.html" title="Creating native functions">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Operating-on-Native-Types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Native-Functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-JS-Objects.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-JS-Objects.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-JS-Objects"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-JS-Objects.top_of_page"></a>Working with JavaScript objects</span></h2>
+<p>Working with JavaScript objects — Using properties, constructing objects, etc.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-JS-Objects.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+typedef <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject">SeedObject</a>;
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-JS-Objects.html#seed-make-object" title="seed_make_object ()">seed_make_object</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> private_object</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-JS-Objects.html#seed-make-array" title="seed_make_array ()">seed_make_array</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> elements</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> num_elements</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-JS-Objects.html#seed-object-call" title="seed_object_call ()">seed_object_call</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-JS-Objects.html#seed-object-set-property-at-index" title="seed_object_set_property_at_index ()">seed_object_set_property_at_index</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> index</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-JS-Objects.html#seed-object-get-property-at-index" title="seed_object_get_property_at_index ()">seed_object_get_property_at_index</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> index</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-JS-Objects.html#seed-object-is-of-class" title="seed_object_is_of_class ()">seed_object_is_of_class</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>);
+<span class="returnvalue">gpointer</span> <a class="link" href="seed-JS-Objects.html#seed-object-get-private" title="seed_object_get_private ()">seed_object_get_private</a> (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-JS-Objects.html#seed-object-set-private" title="seed_object_set_private ()">seed_object_set_private</a> (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> value</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-JS-Objects.html#seed-object-get-property" title="seed_object_get_property ()">seed_object_get_property</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-JS-Objects.html#seed-object-set-property" title="seed_object_set_property ()">seed_object_set_property</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-JS-Objects.html#seed-object-get-prototype" title="seed_object_get_prototype ()">seed_object_get_prototype</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>);
+<span class="returnvalue">gchar</span> ** <a class="link" href="seed-JS-Objects.html#seed-object-copy-property-names" title="seed_object_copy_property_names ()">seed_object_copy_property_names</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectInitializeCallback" title="SeedObjectInitializeCallback ()">*SeedObjectInitializeCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectFinalizeCallback" title="SeedObjectFinalizeCallback ()">*SeedObjectFinalizeCallback</a>) (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);
+<span class="returnvalue">gboolean</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectHasPropertyCallback" title="SeedObjectHasPropertyCallback ()">*SeedObjectHasPropertyCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (<a class="link" href="seed-JS-Objects.html#SeedObjectGetPropertyCallback" title="SeedObjectGetPropertyCallback ()">*SeedObjectGetPropertyCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);
+<span class="returnvalue">gboolean</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectSetPropertyCallback" title="SeedObjectSetPropertyCallback ()">*SeedObjectSetPropertyCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);
+<span class="returnvalue">gboolean</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectDeletePropertyCallback" title="SeedObjectDeletePropertyCallback ()">*SeedObjectDeletePropertyCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectGetPropertyNamesCallback" title="SeedObjectGetPropertyNamesCallback ()">*SeedObjectGetPropertyNamesCallback</a>)
+ (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (<a class="link" href="seed-JS-Objects.html#SeedObjectCallAsFunctionCallback" title="SeedObjectCallAsFunctionCallback ()">*SeedObjectCallAsFunctionCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gboolean</span> (<a class="link" href="seed-JS-Objects.html#SeedObjectHasInstanceCallback" title="SeedObjectHasInstanceCallback ()">*SeedObjectHasInstanceCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> constructor</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> instance_p</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (<a class="link" href="seed-JS-Objects.html#SeedObjectConvertToTypeCallback" title="SeedObjectConvertToTypeCallback ()">*SeedObjectConvertToTypeCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedType" title="enum SeedType"><span class="type">SeedType</span></a> type</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (<a class="link" href="seed-JS-Objects.html#SeedObjectCallAsConstructorCallback" title="SeedObjectCallAsConstructorCallback ()">*SeedObjectCallAsConstructorCallback</a>)
+ (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> constructor</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-JS-Objects.description"></a><h2>Description</h2>
+<p>
+Long description
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-JS-Objects.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedObject"></a><h3>SeedObject</h3>
+<pre class="programlisting">typedef gpointer SeedObject;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-object"></a><h3>seed_make_object ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_make_object (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> private_object</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> in which to create the new object.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-array"></a><h3>seed_make_array ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_make_array (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> elements</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> num_elements</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Creates a JavaScript Array object from <em class="parameter"><code>elements</code></em>, a C-style array of
+SeedValues.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>elements</code></em> :</span></p></td>
+<td>An array of <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>'s with which to populate the array.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>num_elements</code></em> :</span></p></td>
+<td>The number of values, in <em class="parameter"><code>elements</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> in which to store an exception.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new array object, populated with <em class="parameter"><code>elements</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-call"></a><h3>seed_object_call ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_object_call (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Calls <em class="parameter"><code>object</code></em> as a function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> to call.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argument_count</code></em> :</span></p></td>
+<td>The number of arguments in the <em class="parameter"><code>arguments</code></em> array.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>arguments</code></em> :</span></p></td>
+<td>An array (<em class="parameter"><code>argument_count</code></em> long) of <a href="seed-Native-Type-Conversion.html#SeedValue"><span class="type">SeedValues</span></a> to pass in as the
+function's arguments.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <em class="parameter"><code>SeedValue</code></em> returned by the called function, or <code class="literal">NULL</code> if an
+exception occurs or the object is not a function.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-set-property-at-index"></a><h3>seed_object_set_property_at_index ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_object_set_property_at_index (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> index</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Sets the property <em class="parameter"><code>index</code></em> on <em class="parameter"><code>object</code></em> to <em class="parameter"><code>value</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> on which to set the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>index</code></em> :</span></p></td>
+<td>The index of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to use as the property's value.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-get-property-at-index"></a><h3>seed_object_get_property_at_index ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_object_get_property_at_index (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> index</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-is-of-class"></a><h3>seed_object_is_of_class ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_object_is_of_class (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-get-private"></a><h3>seed_object_get_private ()</h3>
+<pre class="programlisting"><span class="returnvalue">gpointer</span> seed_object_get_private (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);</pre>
+<p>
+Retrieves the private data of <em class="parameter"><code>object</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A pointer to the private data of <em class="parameter"><code>object</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-set-private"></a><h3>seed_object_set_private ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_object_set_private (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> value</code></em>);</pre>
+<p>
+Sets the private data of <em class="parameter"><code>object</code></em> to <em class="parameter"><code>value</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <span class="type">gpointer</span> to set the private data of <em class="parameter"><code>object</code></em> to.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-get-property"></a><h3>seed_object_get_property ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_object_get_property (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The property to get, should be a valid JavaScript identifier</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The value of the property or <code class="literal">NULL</code>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-set-property"></a><h3>seed_object_set_property ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_object_set_property (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The property to set, should be a valid JavaScript identifier</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value to set the property to.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<code class="literal">TRUE</code> on success, <code class="literal">FALSE</code> otherwise.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-get-prototype"></a><h3>seed_object_get_prototype ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_object_get_prototype (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The prototype of <em class="parameter"><code>obj</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-object-copy-property-names"></a><h3>seed_object_copy_property_names ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> ** seed_object_copy_property_names (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>An object from which to copy property names.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <code class="literal">NULL</code> terminated array containing the property names of <em class="parameter"><code>object</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectInitializeCallback"></a><h3>SeedObjectInitializeCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*SeedObjectInitializeCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectFinalizeCallback"></a><h3>SeedObjectFinalizeCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*SeedObjectFinalizeCallback) (<em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectHasPropertyCallback"></a><h3>SeedObjectHasPropertyCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> (*SeedObjectHasPropertyCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectGetPropertyCallback"></a><h3>SeedObjectGetPropertyCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (*SeedObjectGetPropertyCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectSetPropertyCallback"></a><h3>SeedObjectSetPropertyCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> (*SeedObjectSetPropertyCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectDeletePropertyCallback"></a><h3>SeedObjectDeletePropertyCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> (*SeedObjectDeletePropertyCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> property_name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *e</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectGetPropertyNamesCallback"></a><h3>SeedObjectGetPropertyNamesCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*SeedObjectGetPropertyNamesCallback)
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectCallAsFunctionCallback"></a><h3>SeedObjectCallAsFunctionCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (*SeedObjectCallAsFunctionCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectHasInstanceCallback"></a><h3>SeedObjectHasInstanceCallback ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> (*SeedObjectHasInstanceCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> constructor</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> instance_p</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectConvertToTypeCallback"></a><h3>SeedObjectConvertToTypeCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (*SeedObjectConvertToTypeCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> object</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedType" title="enum SeedType"><span class="type">SeedType</span></a> type</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedObjectCallAsConstructorCallback"></a><h3>SeedObjectCallAsConstructorCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (*SeedObjectCallAsConstructorCallback)
+ (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> constructor</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-JavaScript-Classes.html b/doc/reference/html/seed-JavaScript-Classes.html
new file mode 100644
index 0000000..6f27fd8
--- /dev/null
+++ b/doc/reference/html/seed-JavaScript-Classes.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating JavaScript classes</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Native-Functions.html" title="Creating native functions">
+<link rel="next" href="seed-SeedClosure.html" title="Using JavaScript closures">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Native-Functions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-SeedClosure.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-JavaScript-Classes.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-JavaScript-Classes.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-JavaScript-Classes"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-JavaScript-Classes.top_of_page"></a>Creating JavaScript classes</span></h2>
+<p>Creating JavaScript classes — Dealing with Seed class definitions and constructors</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-JavaScript-Classes.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+enum <a class="link" href="seed-JavaScript-Classes.html#SeedPropertyAttributes" title="enum SeedPropertyAttributes">SeedPropertyAttributes</a>;
+enum <a class="link" href="seed-JavaScript-Classes.html#SeedClassAttributes" title="enum SeedClassAttributes">SeedClassAttributes</a>;
+typedef <a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass">SeedClass</a>;
+#define <a class="link" href="seed-JavaScript-Classes.html#seed-empty-class" title="seed_empty_class">seed_empty_class</a>
+<a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="returnvalue">SeedClass</span></a> <a class="link" href="seed-JavaScript-Classes.html#seed-create-class" title="seed_create_class ()">seed_create_class</a> (<em class="parameter"><code><span class="type">seed_class_definition</span> *def</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-JavaScript-Classes.html#seed-make-constructor" title="seed_make_constructor ()">seed_make_constructor</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObjectCallAsConstructorCallback" title="SeedObjectCallAsConstructorCallback ()"><span class="type">SeedObjectCallAsConstructorCallback</span></a> constructor</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-JavaScript-Classes.description"></a><h2>Description</h2>
+<p>
+Defining new Seed classes allows for implementing more complex
+behavior than possible with the traditional JavaScript object system
+and default class.
+When writing Seed modules, it is often the best pattern to define many
+of your types through classes and static functions/value.
+Please note that inside the finalize callback of a class, it is not
+legal to call any method requiring a <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> (with the exception
+of protect/unprotect, though it is not guaranteed this will continue
+to work with future versions of JSCore).
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-JavaScript-Classes.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedPropertyAttributes"></a><h3>enum SeedPropertyAttributes</h3>
+<pre class="programlisting">typedef enum {
+ SEED_PROPERTY_ATTRIBUTE_NONE = 0,
+ SEED_PROPERTY_ATTRIBUTE_READ_ONLY = 1 &lt;&lt; 1,
+ SEED_PROPERTY_ATTRIBUTE_DONT_ENUM = 1 &lt;&lt; 2,
+ SEED_PROPERTY_ATTRIBUTE_DONT_DELETE = 1 &lt;&lt; 3
+} SeedPropertyAttributes;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedClassAttributes"></a><h3>enum SeedClassAttributes</h3>
+<pre class="programlisting">typedef enum {
+ SEED_CLASS_ATTRIBUTE_NONE = 0,
+ SEED_CLASS_ATTRIBUTE_NO_SHARED_PROTOTYPE = 1 &lt;&lt; 1
+} SeedClassAttributes;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedClass"></a><h3>SeedClass</h3>
+<pre class="programlisting">typedef gpointer SeedClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-empty-class"></a><h3>seed_empty_class</h3>
+<pre class="programlisting">#define seed_empty_class { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-create-class"></a><h3>seed_create_class ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="returnvalue">SeedClass</span></a> seed_create_class (<em class="parameter"><code><span class="type">seed_class_definition</span> *def</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>def</code></em> :</span></p></td>
+<td>A <span class="type">JSClassDefinition</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a>, described by <em class="parameter"><code>def</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-constructor"></a><h3>seed_make_constructor ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_make_constructor (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObjectCallAsConstructorCallback" title="SeedObjectCallAsConstructorCallback ()"><span class="type">SeedObjectCallAsConstructorCallback</span></a> constructor</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>constructor</code></em> :</span></p></td>
+<td>The <span class="type">JSObjectCallAsConstructorCallback</span> function to call when
+the constructor is invoked with 'new'.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a>, which is a constructor function.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Modules.html b/doc/reference/html/seed-Modules.html
new file mode 100644
index 0000000..8436d92
--- /dev/null
+++ b/doc/reference/html/seed-Modules.html
@@ -0,0 +1,245 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Seed Modules</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-SeedClosure.html" title="Using JavaScript closures">
+<link rel="next" href="modules.html" title="Part IV. Seed Module Reference">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-SeedClosure.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="modules.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Modules.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Modules.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Modules"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Modules.top_of_page"></a>Seed Modules</span></h2>
+<p>Seed Modules — Native C modules for Seed</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Modules.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+#define <a class="link" href="seed-Modules.html#CHECK-ARG-COUNT:CAPS" title="CHECK_ARG_COUNT()">CHECK_ARG_COUNT</a> (name,
+ argnum)
+#define <a class="link" href="seed-Modules.html#DEFINE-ENUM-MEMBER:CAPS" title="DEFINE_ENUM_MEMBER()">DEFINE_ENUM_MEMBER</a> (holder,
+ member)
+#define <a class="link" href="seed-Modules.html#DEFINE-ENUM-MEMBER-EXT:CAPS" title="DEFINE_ENUM_MEMBER_EXT()">DEFINE_ENUM_MEMBER_EXT</a> (holder,
+ name,
+ val)
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> (<a class="link" href="seed-Modules.html#SeedModuleInitCallback" title="SeedModuleInitCallback ()">*SeedModuleInitCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Modules.description"></a><h2>Description</h2>
+<p>
+Seed includes a simple system for creating C modules which can be loaded and manipulated from JavaScript. This is used for implementing performance-critical code closer to the silicon, as well as binding non-introspectable libraries in an attractive way.
+</p>
+<p>Numerous binding modules are included in the Seed repository; when writing a new native module, it would be wise to look over these before beginning, as they have many tidbits of useful knowledge for writing modules.</p>
+<div class="example">
+<a name="idp5111200"></a><p class="title"><b>Example 11. Very simple example C module</b></p>
+<div class="example-contents"><pre class="programlisting">
+#include &lt;glib.h&gt;
+#include &lt;seed-module.h&gt;
+SeedObject seed_module_init(SeedEngine * eng)
+{
+ /* Say hello! */
+ g_print("Hello, Seed Module World!\n");
+ 
+ /* Return an empty object as the module's namespace */
+ return seed_make_object (eng-&gt;context, NULL, NULL);
+}
+</pre></div>
+</div>
+<br class="example-break"><p>Above is a C module which does absolutely nothing useful. When a module is loaded, <code class="function">seed_module_init()</code> is called, which should have the signature of <a class="link" href="seed-Modules.html#SeedModuleInitCallback" title="SeedModuleInitCallback ()"><code class="function">SeedModuleInitCallback()</code></a>. You're passed the global <a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a>, and the value you return is the namespace for your module. Say, for example, you place a static function on that object:</p>
+<div class="example">
+<a name="idp8733520"></a><p class="title"><b>Example 12. C module with a function</b></p>
+<div class="example-contents"><pre class="programlisting">
+#include &lt;glib.h&gt;
+#include &lt;seed-module.h&gt;
+/* Our function, with the signature of SeedFunctionCallback(); say hello! */
+SeedValue say_hello_to(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ guchar * name;
+ 
+ /* Check that only one argument was passed into the function.
+ CHECK_ARG_COUNT() is from seed-module.h, which you might find useful. */
+ CHECK_ARG_COUNT("hello.say_hello_to", 1);
+ 
+ /* Convert the first argument, a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue">SeedValue</a>, to a C string */
+ name = seed_value_to_string(ctx, arguments[0], exception);
+ 
+ g_print("Hello, %s!\n", name);
+ 
+ g_free(name);
+ 
+ return seed_make_null(ctx);
+}
+ 
+/* Define an array of seed_static_function */
+seed_static_function gettext_funcs[] = {
+ {"say_hello_to", say_hello_to, 0}
+};
+ 
+SeedObject seed_module_init(SeedEngine * eng)
+{
+ SeedGlobalContext ctx = eng-&gt;context;
+ 
+ /* Create a new class definition with our array of static functions */
+ seed_class_definition ns_class_def = seed_empty_class;
+ ns_class_def.static_functions = example_funcs;
+ 
+ /* Create a class from the class definition we just created */
+ SeedClass ns_class = seed_create_class(&amp;ns_class_def);
+ 
+ /* Instantiate the class; this instance will be the namespace we return */
+ ns_ref = seed_make_object (ctx, ns_class, NULL);
+ seed_value_protect (ctx, ns_ref);
+ 
+ return ns_ref;
+}
+</pre></div>
+</div>
+<br class="example-break"><p>After building and installing this module (look in the Seed build system for examples of how to get this to work, as well as a copy of seed-module.h, which will be very useful), it will be loadable with the normal Seed import system. Assuming it's installed as libseed_hello.so:</p>
+<div class="example">
+<a name="idp10669232"></a><p class="title"><b>Example 13. Utilize our second example C module from JavaScript</b></p>
+<div class="example-contents"><pre class="programlisting">
+hello = imports.hello;
+hello.say_hello_to("Tim");
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="seed-Modules.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="CHECK-ARG-COUNT:CAPS"></a><h3>CHECK_ARG_COUNT()</h3>
+<pre class="programlisting">#define CHECK_ARG_COUNT(name, argnum)</pre>
+<p>
+Check that the required number of arguments were passed into a
+<a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a>. If this is not true, raise an exception and
+return <code class="literal">NULL</code>. This requires the callback to use "argument_count",
+"ctx", and "exception" as the names of the various function arguments.
+</p>
+<p>
+<em class="parameter"><code>name</code></em> should be of form "namespace.function_name"
+</p>
+<p>
+At the moment, there is no way to specify more than one acceptable
+argument count.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The name of the function being called from, pretty-printed</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argnum</code></em> :</span></p></td>
+<td>The number of arguments which should be passed into the function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DEFINE-ENUM-MEMBER:CAPS"></a><h3>DEFINE_ENUM_MEMBER()</h3>
+<pre class="programlisting">#define DEFINE_ENUM_MEMBER(holder, member)</pre>
+<p>
+Defines a property on <em class="parameter"><code>holder</code></em> which is named the same as <em class="parameter"><code>member</code></em>, and
+is assigned the value that <em class="parameter"><code>member</code></em> has in C.
+</p>
+<p>
+This macro works for defining properties from constants and
+#defines as well.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>holder</code></em> :</span></p></td>
+<td>The object on which to define the enum member</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>member</code></em> :</span></p></td>
+<td>The enum member, as it is named in C</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DEFINE-ENUM-MEMBER-EXT:CAPS"></a><h3>DEFINE_ENUM_MEMBER_EXT()</h3>
+<pre class="programlisting">#define DEFINE_ENUM_MEMBER_EXT(holder, name, val)</pre>
+<p>
+Defines a property on <em class="parameter"><code>holder</code></em> which is named <em class="parameter"><code>name</code></em>, and is assigned the
+value that <em class="parameter"><code>member</code></em> has in C. This allows for an override of the enum
+member's name, most often to remove a common prefix. For example, to declare
+a property named VERSION_MAJOR on the namespace from mfpr's version
+constant MPFR_VERSION_MAJOR:
+</p>
+<p>
+</p>
+<pre class="programlisting">
+DEFINE_ENUM_MEMBER_EXT(ns, "VERSION_MAJOR", MPFR_VERSION_MAJOR);
+</pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>holder</code></em> :</span></p></td>
+<td>The object on which to define the enum member</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The enum member, as it should be named in JavaScript</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The enum member, as it is named in C</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedModuleInitCallback"></a><h3>SeedModuleInitCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> (*SeedModuleInitCallback) (<em class="parameter"><code><a class="link" href="seed-Initialization.html#SeedEngine" title="struct SeedEngine"><span class="type">SeedEngine</span></a> *eng</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Native-Functions.html b/doc/reference/html/seed-Native-Functions.html
new file mode 100644
index 0000000..0329c4c
--- /dev/null
+++ b/doc/reference/html/seed-Native-Functions.html
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating native functions</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-JS-Objects.html" title="Working with JavaScript objects">
+<link rel="next" href="seed-JavaScript-Classes.html" title="Creating JavaScript classes">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-JS-Objects.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-JavaScript-Classes.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Native-Functions.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Native-Functions.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Native-Functions"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Native-Functions.top_of_page"></a>Creating native functions</span></h2>
+<p>Creating native functions — C functions as first-class JavaScript objects</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Native-Functions.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (<a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()">*SeedFunctionCallback</a>) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-Native-Functions.html#seed-make-function" title="seed_make_function ()">seed_make_function</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> func</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Native-Functions.html#seed-create-function" title="seed_create_function ()">seed_create_function</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> func</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Native-Functions.description"></a><h2>Description</h2>
+<p>
+Exposing native C functions to JavaScript is one of the fundamental use cases for libseed when used in an embedding environment; if your application cannot be introspected, or you only have a small number of functions to expose, this is the simplest way to do that.
+</p>
+<p>
+All native C callbacks should have the prototype of <a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><code class="function">SeedFunctionCallback()</code></a>.
+</p>
+<div class="example">
+<a name="idp6155408"></a><p class="title"><b>Example 10. Simple C program which embeds Seed with one exposed function</b></p>
+<div class="example-contents"><pre class="programlisting">
+#include &lt;glib.h&gt;
+#include &lt;seed.h&gt;
+ 
+/* Our function, with the signature of SeedFunctionCallback(); say hello! */
+SeedValue hello_world(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ g_print("Hello, World!\n");
+ return seed_make_null(ctx);
+}
+ 
+int main(gint argc, gchar ** argv)
+{
+ SeedEngine * eng;
+ 
+ /* Initialize the Seed engine */
+ eng = seed_init(&amp;argc, &amp;argv);
+ 
+ /* Expose a C function to JavaScript */
+ seed_create_function(eng-&gt;context, "hello_world",
+ (SeedFunctionCallback)hello_world,
+ eng-&gt;global);
+ 
+ /* Call the newly created JavaScript function */
+ seed_simple_evaluate(eng-&gt;context, "hello_world()", NULL);
+ 
+ return 0;
+}
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="seed-Native-Functions.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedFunctionCallback"></a><h3>SeedFunctionCallback ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> (*SeedFunctionCallback) (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> this_object</code></em>,
+ <em class="parameter"><code><span class="type">gsize</span> argument_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> arguments[]</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+All native C function callbacks should use the prototype of
+SeedFunctionCallback.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>function</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> representing the function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>this_object</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> representing the "this" object in the caller</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>argument_count</code></em> :</span></p></td>
+<td>The number of arguments passed into the callback</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>arguments</code></em> :</span></p></td>
+<td>An array of <a href="seed-Native-Type-Conversion.html#SeedValue"><span class="type">SeedValues</span></a>; the value of the arguments passed in</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a>; use <a class="link" href="seed-Exceptions.html#seed-make-exception" title="seed_make_exception ()"><code class="function">seed_make_exception()</code></a> in order
+to throw a JavaScript exception from the callback.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to return to the caller</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-function"></a><h3>seed_make_function ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_make_function (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> func</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);</pre>
+<p>
+Creates a JavaScript object representing a first-class function; when
+the function is called from JavaScript, <em class="parameter"><code>func</code></em> will be called.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> to implement the function.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The name of the function (used in exceptions).</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> representing the function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-create-function"></a><h3>seed_create_function ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_create_function (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> func</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> obj</code></em>);</pre>
+<p>
+Creates a JavaScript object representing a first-class function; when
+the function is called from JavaScript, <em class="parameter"><code>func</code></em> will be called. Places
+the created function as the property <em class="parameter"><code>name</code></em> on <em class="parameter"><code>obj</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The name of the function (used in exceptions).</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a> to implement the function.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> on which to put the function.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Native-Type-Conversion.html b/doc/reference/html/seed-Native-Type-Conversion.html
new file mode 100644
index 0000000..005ed76
--- /dev/null
+++ b/doc/reference/html/seed-Native-Type-Conversion.html
@@ -0,0 +1,1432 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Type Conversion</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="types.html" title="Values and Type Conversion">
+<link rel="prev" href="types.html" title="Values and Type Conversion">
+<link rel="next" href="seed-Operating-on-Native-Types.html" title="Operating on JavaScript types">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Operating-on-Native-Types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Native-Type-Conversion.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Native-Type-Conversion.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Native-Type-Conversion"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Native-Type-Conversion.top_of_page"></a>Type Conversion</span></h2>
+<p>Type Conversion — Moving between JavaScript and C intrinsic types</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Native-Type-Conversion.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+typedef <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue">SeedValue</a>;
+enum <a class="link" href="seed-Native-Type-Conversion.html#SeedType" title="enum SeedType">SeedType</a>;
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-make-undefined" title="seed_make_undefined ()">seed_make_undefined</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-make-null" title="seed_make_null ()">seed_make_null</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-boolean" title="seed_value_to_boolean ()">seed_value_to_boolean</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-boolean" title="seed_value_from_boolean ()">seed_value_from_boolean</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gboolean</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">guint</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-uint" title="seed_value_to_uint ()">seed_value_to_uint</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-uint" title="seed_value_from_uint ()">seed_value_from_uint</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gint</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-int" title="seed_value_to_int ()">seed_value_to_int</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-int" title="seed_value_from_int ()">seed_value_from_int</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gchar</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-char" title="seed_value_to_char ()">seed_value_to_char</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-char" title="seed_value_from_char ()">seed_value_from_char</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">guchar</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-uchar" title="seed_value_to_uchar ()">seed_value_to_uchar</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-uchar" title="seed_value_from_uchar ()">seed_value_from_uchar</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guchar</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">glong</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-long" title="seed_value_to_long ()">seed_value_to_long</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-long" title="seed_value_from_long ()">seed_value_from_long</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">glong</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gulong</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-ulong" title="seed_value_to_ulong ()">seed_value_to_ulong</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-ulong" title="seed_value_from_ulong ()">seed_value_from_ulong</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gulong</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gint64</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-int64" title="seed_value_to_int64 ()">seed_value_to_int64</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-int64" title="seed_value_from_int64 ()">seed_value_from_int64</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gint64</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">guint64</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-uint64" title="seed_value_to_uint64 ()">seed_value_to_uint64</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-uint64" title="seed_value_from_uint64 ()">seed_value_from_uint64</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guint64</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gfloat</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-float" title="seed_value_to_float ()">seed_value_to_float</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-float" title="seed_value_from_float ()">seed_value_from_float</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gfloat</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gdouble</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-double" title="seed_value_to_double ()">seed_value_to_double</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-double" title="seed_value_from_double ()">seed_value_from_double</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gdouble</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-string" title="seed_value_to_string ()">seed_value_to_string</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-string" title="seed_value_from_string ()">seed_value_from_string</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-binary-string" title="seed_value_from_binary_string ()">seed_value_from_binary_string</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *bytes</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> n_bytes</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">GObject</span> * <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-object" title="seed_value_to_object ()">seed_value_to_object</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-object" title="seed_value_from_object ()">seed_value_from_object</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">gchar</span> * <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-filename" title="seed_value_to_filename ()">seed_value_to_filename</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-from-filename" title="seed_value_from_filename ()">seed_value_from_filename</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-value-to-format" title="seed_value_to_format ()">seed_value_to_format</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *format</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *values</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>,
+ <em class="parameter"><code>...</code></em>);
+<span class="returnvalue">gpointer</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-pointer-get-pointer" title="seed_pointer_get_pointer ()">seed_pointer_get_pointer</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> pointer</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-make-pointer" title="seed_make_pointer ()">seed_make_pointer</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> pointer</code></em>);
+typedef <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString">SeedString</a>;
+<a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="returnvalue">SeedString</span></a> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-ref" title="seed_string_ref ()">seed_string_ref</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-unref" title="seed_string_unref ()">seed_string_unref</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);
+<span class="returnvalue">gsize</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-get-maximum-size" title="seed_string_get_maximum_size ()">seed_string_get_maximum_size</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);
+<span class="returnvalue">gsize</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-to-utf8-buffer" title="seed_string_to_utf8_buffer ()">seed_string_to_utf8_buffer</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> buffer_size</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-is-equal" title="seed_string_is_equal ()">seed_string_is_equal</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> a</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> b</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Native-Type-Conversion.html#seed-string-is-equal-utf8" title="seed_string_is_equal_utf8 ()">seed_string_is_equal_utf8</a> (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> a</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *b</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Native-Type-Conversion.description"></a><h2>Description</h2>
+<p>
+Long description
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-Native-Type-Conversion.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedValue"></a><h3>SeedValue</h3>
+<pre class="programlisting">typedef gpointer SeedValue;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedType"></a><h3>enum SeedType</h3>
+<pre class="programlisting">typedef enum {
+ SEED_TYPE_UNDEFINED,
+ SEED_TYPE_NULL,
+ SEED_TYPE_BOOLEAN,
+ SEED_TYPE_NUMBER,
+ SEED_TYPE_STRING,
+ SEED_TYPE_OBJECT
+} SeedType;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-undefined"></a><h3>seed_make_undefined ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_make_undefined (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);</pre>
+<p>
+Note that this function returns a valid SeedValue,
+representing the undefined JavaScript value, and not an
+undefined SeedValue.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> of the 'undefined' type.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-null"></a><h3>seed_make_null ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_make_null (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>);</pre>
+<p>
+Note that this function returns a valid SeedValue,
+representing the null JavaScript value, and not a
+null SeedValue.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> of the 'null' type.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-boolean"></a><h3>seed_value_to_boolean ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_to_boolean (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gboolean</span>. Keep in mind that this will
+not convert a JavaScript number type, only a boolean.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gboolean</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-boolean"></a><h3>seed_value_from_boolean ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_boolean (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gboolean</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gboolean</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gboolean</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-uint"></a><h3>seed_value_to_uint ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint</span> seed_value_to_uint (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">guint</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">guint</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-uint"></a><h3>seed_value_from_uint ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_uint (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">guint</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">guint</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-int"></a><h3>seed_value_to_int ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint</span> seed_value_to_int (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gint</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gint</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-int"></a><h3>seed_value_from_int ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_int (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gint</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gint</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-char"></a><h3>seed_value_to_char ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> seed_value_to_char (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gchar</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gchar</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-char"></a><h3>seed_value_from_char ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_char (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gchar</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gchar</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-uchar"></a><h3>seed_value_to_uchar ()</h3>
+<pre class="programlisting"><span class="returnvalue">guchar</span> seed_value_to_uchar (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">guchar</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">guchar</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-uchar"></a><h3>seed_value_from_uchar ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_uchar (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guchar</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">guchar</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">guchar</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-long"></a><h3>seed_value_to_long ()</h3>
+<pre class="programlisting"><span class="returnvalue">glong</span> seed_value_to_long (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">glong</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">glong</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-long"></a><h3>seed_value_from_long ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_long (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">glong</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">glong</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">glong</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-ulong"></a><h3>seed_value_to_ulong ()</h3>
+<pre class="programlisting"><span class="returnvalue">gulong</span> seed_value_to_ulong (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gulong</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gulong</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-ulong"></a><h3>seed_value_from_ulong ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_ulong (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gulong</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gulong</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gulong</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-int64"></a><h3>seed_value_to_int64 ()</h3>
+<pre class="programlisting"><span class="returnvalue">gint64</span> seed_value_to_int64 (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gint64</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gint64</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-int64"></a><h3>seed_value_from_int64 ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_int64 (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gint64</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gint64</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gint64</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-uint64"></a><h3>seed_value_to_uint64 ()</h3>
+<pre class="programlisting"><span class="returnvalue">guint64</span> seed_value_to_uint64 (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">guint64</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">guint64</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-uint64"></a><h3>seed_value_from_uint64 ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_uint64 (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">guint64</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">guint64</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">guint64</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-float"></a><h3>seed_value_to_float ()</h3>
+<pre class="programlisting"><span class="returnvalue">gfloat</span> seed_value_to_float (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gfloat</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gfloat</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-float"></a><h3>seed_value_from_float ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_float (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gfloat</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gfloat</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gfloat</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-double"></a><h3>seed_value_to_double ()</h3>
+<pre class="programlisting"><span class="returnvalue">gdouble</span> seed_value_to_double (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gdouble</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gdouble</span> represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-double"></a><h3>seed_value_from_double ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_double (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gdouble</span> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gdouble</span> into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gdouble</span> to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-string"></a><h3>seed_value_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_value_to_string (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gchar</span>* string. Keep in mind that it's
+up to the caller to free the string.
+</p>
+<p>
+If the <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> represents JavaScript's undefined value, this returns
+"[undefined]"; if it represents JavaScript's null value, this returns
+"[null]".
+</p>
+<p>
+If the <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> is a number or a boolean, it is printed as a double, with
+the printf format string "%.15g".
+</p>
+<p>
+If the <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> is an object, the string returned is that obtained by
+calling .toString() on said object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gchar</span>* represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-string"></a><h3>seed_value_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_string (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gchar</span>* string into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gchar</span>* to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-binary-string"></a><h3>seed_value_from_binary_string ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_binary_string (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *bytes</code></em>,
+ <em class="parameter"><code><span class="type">gint</span> n_bytes</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Converts a string representation of the given binary string
+into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>bytes</code></em> :</span></p></td>
+<td>A string of bytes to represent as a string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>n_bytes</code></em> :</span></p></td>
+<td>The number of bytes from <em class="parameter"><code>bytes</code></em> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>bytes</code></em> as a string, or <code class="literal">NULL</code>
+if an exception is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-object"></a><h3>seed_value_to_object ()</h3>
+<pre class="programlisting"><span class="returnvalue">GObject</span> * seed_value_to_object (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Given a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which is wrapping a <span class="type">GObject</span>, retrieve the wrapped
+<span class="type">GObject</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to unwrap.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">GObject</span> wrapped within <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-object"></a><h3>seed_value_from_object ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_object (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+Wraps <em class="parameter"><code>val</code></em> in a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">GObject</span> to wrap.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which wraps <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-filename"></a><h3>seed_value_to_filename ()</h3>
+<pre class="programlisting"><span class="returnvalue">gchar</span> * seed_value_to_filename (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> into a <span class="type">gchar</span>*, properly converting to the
+character set used for filenames on the local machine.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <span class="type">gchar</span>* represented by <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-from-filename"></a><h3>seed_value_from_filename ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_value_from_filename (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> val</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>);</pre>
+<p>
+Converts the given <span class="type">gchar</span>* filename into a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>, respecting the
+character set used for filenames on the local machine.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>The <span class="type">gchar</span>* filename to represent.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>A reference to a <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> in which to store any exceptions.
+Pass <code class="literal">NULL</code> to ignore exceptions.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> which represents <em class="parameter"><code>val</code></em>, or <code class="literal">NULL</code> if an exception
+is raised during the conversion.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-to-format"></a><h3>seed_value_to_format ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_to_format (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *format</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *values</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *exception</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+<p>
+A convenience API for converting multiple values at once, the format string
+is composed of single characters specifying types, for example:
+i: gint
+u: guint
+o: GObject *
+s: gchar *
+f: gdouble
+c: gchar
+</p>
+<p>
+and a valid format string could be "iuo".
+</p>
+<p>
+This function may be in particular useful in converting arguments
+in a <a class="link" href="seed-Native-Functions.html#SeedFunctionCallback" title="SeedFunctionCallback ()"><span class="type">SeedFunctionCallback</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
+<td>Format string to use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>values</code></em> :</span></p></td>
+<td>The values to convert.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>exception</code></em> :</span></p></td>
+<td>Location to store an exception.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether conversion was successful.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-pointer-get-pointer"></a><h3>seed_pointer_get_pointer ()</h3>
+<pre class="programlisting"><span class="returnvalue">gpointer</span> seed_pointer_get_pointer (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> pointer</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-make-pointer"></a><h3>seed_make_pointer ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_make_pointer (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">gpointer</span> pointer</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="SeedString"></a><h3>SeedString</h3>
+<pre class="programlisting">typedef gpointer SeedString;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-ref"></a><h3>seed_string_ref ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="returnvalue">SeedString</span></a> seed_string_ref (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);</pre>
+<p>
+Increments the reference count of <em class="parameter"><code>string</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td><em class="parameter"><code>string</code></em></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-unref"></a><h3>seed_string_unref ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_string_unref (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);</pre>
+<p>
+Decrements the reference count of <em class="parameter"><code>string</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a>.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-get-maximum-size"></a><h3>seed_string_get_maximum_size ()</h3>
+<pre class="programlisting"><span class="returnvalue">gsize</span> seed_string_get_maximum_size (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The maximum number of bytes <em class="parameter"><code>string</code></em> will take up if converted
+to a null-terminated UTF8 string.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-to-utf8-buffer"></a><h3>seed_string_to_utf8_buffer ()</h3>
+<pre class="programlisting"><span class="returnvalue">gsize</span> seed_string_to_utf8_buffer (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> string</code></em>,
+ <em class="parameter"><code><span class="type">gchar</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> buffer_size</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>An allocated string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer_size</code></em> :</span></p></td>
+<td>The length of <em class="parameter"><code>buffer</code></em>, in bytes.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A the number of bytes copied into <em class="parameter"><code>buffer</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-is-equal"></a><h3>seed_string_is_equal ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_string_is_equal (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> a</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> b</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>a</code></em> :</span></p></td>
+<td>The first <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> to compare.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>b</code></em> :</span></p></td>
+<td>The second <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> to compare.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<span class="type">true</span>, if a and b are equal, <span class="type">false</span> otherwise.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-string-is-equal-utf8"></a><h3>seed_string_is_equal_utf8 ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_string_is_equal_utf8 (<em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> a</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *b</code></em>);</pre>
+<p>
+Tests the equality of a SeedString and a UTF-8 C-style string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>a</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedString" title="SeedString"><span class="type">SeedString</span></a> to compare.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>b</code></em> :</span></p></td>
+<td>A <span class="type">gchar</span>* to compare to.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<span class="type">true</span>, if a and b are equal, <span class="type">false</span> otherwise.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Operating-on-Native-Types.html b/doc/reference/html/seed-Operating-on-Native-Types.html
new file mode 100644
index 0000000..08a8a98
--- /dev/null
+++ b/doc/reference/html/seed-Operating-on-Native-Types.html
@@ -0,0 +1,344 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Operating on JavaScript types</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="types.html" title="Values and Type Conversion">
+<link rel="prev" href="seed-Native-Type-Conversion.html" title="Type Conversion">
+<link rel="next" href="seed-JS-Objects.html" title="Working with JavaScript objects">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Native-Type-Conversion.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-JS-Objects.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Operating-on-Native-Types.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Operating-on-Native-Types.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Operating-on-Native-Types"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Operating-on-Native-Types.top_of_page"></a>Operating on JavaScript types</span></h2>
+<p>Operating on JavaScript types — Determining the type of a SeedValue</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Operating-on-Native-Types.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+<span class="returnvalue">void</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-unprotect" title="seed_value_unprotect ()">seed_value_unprotect</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-protect" title="seed_value_protect ()">seed_value_protect</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-undefined" title="seed_value_is_undefined ()">seed_value_is_undefined</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-null" title="seed_value_is_null ()">seed_value_is_null</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-function" title="seed_value_is_function ()">seed_value_is_function</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-number" title="seed_value_is_number ()">seed_value_is_number</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-string" title="seed_value_is_string ()">seed_value_is_string</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-object-of-class" title="seed_value_is_object_of_class ()">seed_value_is_object_of_class</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>);
+<span class="returnvalue">gboolean</span> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-is-object" title="seed_value_is_object ()">seed_value_is_object</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedType" title="enum SeedType"><span class="returnvalue">SeedType</span></a> <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-get-type" title="seed_value_get_type ()">seed_value_get_type</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Operating-on-Native-Types.description"></a><h2>Description</h2>
+<p>
+Long description
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-Operating-on-Native-Types.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="seed-value-unprotect"></a><h3>seed_value_unprotect ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_value_unprotect (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Decrements the "protection count" of <em class="parameter"><code>value</code></em>, as explained in
+<a class="link" href="seed-Operating-on-Native-Types.html#seed-value-protect" title="seed_value_protect ()"><code class="function">seed_value_protect()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to unprotect.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-protect"></a><h3>seed_value_protect ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_value_protect (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Increments the "protection count" of <em class="parameter"><code>value</code></em>, in case you want to store
+a reference somewhere where the garbage collector won't be able to find it,
+and don't want it to be collected!
+</p>
+<p>
+In order for <em class="parameter"><code>value</code></em> to be collected afterwards, it will need to be
+unprotected the same number of times with <a class="link" href="seed-Operating-on-Native-Types.html#seed-value-unprotect" title="seed_value_unprotect ()"><code class="function">seed_value_unprotect()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> to protect.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-undefined"></a><h3>seed_value_is_undefined ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_undefined (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> represents the JavaScript undefined value
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is 'undefined')</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-null"></a><h3>seed_value_is_null ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_null (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> represents the JavaScript null value
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is 'null')</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-function"></a><h3>seed_value_is_function ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_function (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> is a JavaScript function (and, therefore,
+an object)
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is a function)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-number"></a><h3>seed_value_is_number ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_number (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> is a JavaScript number
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is a number)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-string"></a><h3>seed_value_is_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_string (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> is a JavaScript string
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is a string)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-object-of-class"></a><h3>seed_value_is_object_of_class ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_object_of_class (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a> klass</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> is an object of the specified class
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>klass</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-JavaScript-Classes.html#SeedClass" title="SeedClass"><span class="type">SeedClass</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is of class <em class="parameter"><code>klass</code></em>)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-is-object"></a><h3>seed_value_is_object ()</h3>
+<pre class="programlisting"><span class="returnvalue">gboolean</span> seed_value_is_object (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<p>
+Determine whether or not <em class="parameter"><code>value</code></em> is a JavaScript object
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <span class="type">gboolean</span> (<code class="literal">true</code> if <em class="parameter"><code>value</code></em> is an object)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-value-get-type"></a><h3>seed_value_get_type ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedType" title="enum SeedType"><span class="returnvalue">SeedType</span></a> seed_value_get_type (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> value</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>A <a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The type of <em class="parameter"><code>value</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-SeedClosure.html b/doc/reference/html/seed-SeedClosure.html
new file mode 100644
index 0000000..9e6a3a2
--- /dev/null
+++ b/doc/reference/html/seed-SeedClosure.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Using JavaScript closures</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-JavaScript-Classes.html" title="Creating JavaScript classes">
+<link rel="next" href="seed-Modules.html" title="Seed Modules">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-JavaScript-Classes.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Modules.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-SeedClosure.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-SeedClosure.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-SeedClosure"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-SeedClosure.top_of_page"></a>Using JavaScript closures</span></h2>
+<p>Using JavaScript closures — Creating and invoking closures over JavaScript functions using GClosure</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-SeedClosure.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+struct <a class="link" href="seed-SeedClosure.html#SeedClosure" title="struct SeedClosure">SeedClosure</a>;
+<span class="returnvalue">GClosure</span> * <a class="link" href="seed-SeedClosure.html#seed-closure-new" title="seed_closure_new ()">seed_closure_new</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> user_data</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *description</code></em>);
+<a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> <a class="link" href="seed-SeedClosure.html#seed-closure-get-callable" title="seed_closure_get_callable ()">seed_closure_get_callable</a> (<em class="parameter"><code><span class="type">GClosure</span> *c</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-SeedClosure.html#seed-closure-invoke" title="seed_closure_invoke ()">seed_closure_invoke</a> (<em class="parameter"><code><span class="type">GClosure</span> *closure</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *args</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> argc</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> <a class="link" href="seed-SeedClosure.html#seed-closure-invoke-with-context" title="seed_closure_invoke_with_context ()">seed_closure_invoke_with_context</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GClosure</span> *closure</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *args</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> argc</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-SeedClosure.html#seed-closure-warn-exception" title="seed_closure_warn_exception ()">seed_closure_warn_exception</a> (<em class="parameter"><code><span class="type">GClosure</span> *c</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-SeedClosure.description"></a><h2>Description</h2>
+<p>
+Long description
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-SeedClosure.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="SeedClosure"></a><h3>struct SeedClosure</h3>
+<pre class="programlisting">struct SeedClosure {
+ GClosure closure;
+
+ JSObjectRef function;
+ JSValueRef user_data;
+
+ GType return_type;
+ gchar *description;
+};
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-closure-new"></a><h3>seed_closure_new ()</h3>
+<pre class="programlisting"><span class="returnvalue">GClosure</span> * seed_closure_new (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="type">SeedObject</span></a> user_data</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *description</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-closure-get-callable"></a><h3>seed_closure_get_callable ()</h3>
+<pre class="programlisting"><a class="link" href="seed-JS-Objects.html#SeedObject" title="SeedObject"><span class="returnvalue">SeedObject</span></a> seed_closure_get_callable (<em class="parameter"><code><span class="type">GClosure</span> *c</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-closure-invoke"></a><h3>seed_closure_invoke ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_closure_invoke (<em class="parameter"><code><span class="type">GClosure</span> *closure</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *args</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> argc</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-closure-invoke-with-context"></a><h3>seed_closure_invoke_with_context ()</h3>
+<pre class="programlisting"><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="returnvalue">SeedValue</span></a> seed_closure_invoke_with_context (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GClosure</span> *closure</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> *args</code></em>,
+ <em class="parameter"><code><span class="type">guint</span> argc</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> *exception</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-closure-warn-exception"></a><h3>seed_closure_warn_exception ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_closure_warn_exception (<em class="parameter"><code><span class="type">GClosure</span> *c</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Exceptions.html#SeedException" title="SeedException"><span class="type">SeedException</span></a> exception</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-Signals.html b/doc/reference/html/seed-Signals.html
new file mode 100644
index 0000000..c04953a
--- /dev/null
+++ b/doc/reference/html/seed-Signals.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GObject Signals</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Exceptions.html" title="Exception Handling">
+<link rel="next" href="types.html" title="Values and Type Conversion">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="seed-Exceptions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#seed-Signals.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#seed-Signals.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="seed-Signals"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="seed-Signals.top_of_page"></a>GObject Signals</span></h2>
+<p>GObject Signals — Connecting JavaScript functions to signals</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="seed-Signals.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;seed/seed.h&gt;
+
+<span class="returnvalue">void</span> <a class="link" href="seed-Signals.html#seed-signal-connect" title="seed_signal_connect ()">seed_signal_connect</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *signal</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *script</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="seed-Signals.html#seed-signal-connect-value" title="seed_signal_connect_value ()">seed_signal_connect_value</a> (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *signal</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> user_data</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="seed-Signals.description"></a><h2>Description</h2>
+<p>
+Long description
+</p>
+</div>
+<div class="refsect1">
+<a name="seed-Signals.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="seed-signal-connect"></a><h3>seed_signal_connect ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_signal_connect (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *signal</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *script</code></em>);</pre>
+<p>
+Evaluates <em class="parameter"><code>script</code></em>, which should return a function, then connects the returned
+function to the signal specified by <em class="parameter"><code>signal</code></em> on <em class="parameter"><code>object</code></em>. <em class="parameter"><code>user_data</code></em>
+is passed as the user_data argument to the callback function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td>
+<td>A valid <a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <span class="type">GObject</span>, to connect the signal on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>signal</code></em> :</span></p></td>
+<td>A signal specification.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>script</code></em> :</span></p></td>
+<td>The script to connect to the signal. Should return a function.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="seed-signal-connect-value"></a><h3>seed_signal_connect_value ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> seed_signal_connect_value (<em class="parameter"><code><a class="link" href="seed-Contexts.html#SeedContext" title="SeedContext"><span class="type">SeedContext</span></a> ctx</code></em>,
+ <em class="parameter"><code><span class="type">GObject</span> *object</code></em>,
+ <em class="parameter"><code>const <span class="type">gchar</span> *signal</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> function</code></em>,
+ <em class="parameter"><code><a class="link" href="seed-Native-Type-Conversion.html#SeedValue" title="SeedValue"><span class="type">SeedValue</span></a> user_data</code></em>);</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-building.html b/doc/reference/html/seed-building.html
new file mode 100644
index 0000000..0f8ce92
--- /dev/null
+++ b/doc/reference/html/seed-building.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Compiling Seed</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="seed.html" title="Part I. Seed Overview">
+<link rel="prev" href="seed-introduction.html" title="Introduction">
+<link rel="next" href="seed-contact.html" title="Contact Information">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-introduction.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="seed.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-contact.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="seed-building"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Compiling Seed</span></h2>
+<p>Compiling Seed —
+How to compile Seed itself
+</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="building"></a><h2>Building the Library on UNIX</h2>
+<p>
+ On UNIX, Seed uses the standard GNU build system,
+ using <span class="application">autoconf</span> for package
+ configuration and resolving portability issues,
+ <span class="application">automake</span> for building makefiles
+ that comply with the GNU Coding Standards, and
+ <span class="application">libtool</span> for building shared
+ libraries on multiple platforms. The normal sequence for
+ compiling and installing Seed is thus:
+
+ </p>
+<div class="literallayout"><p><br>
+          <strong class="userinput"><code>./configure</code></strong><br>
+          <strong class="userinput"><code>make</code></strong><br>
+          <strong class="userinput"><code>make install</code></strong><br>
+        </p></div>
+<p>
+ </p>
+<p>
+ The standard options provided by <span class="application">GNU
+ autoconf</span> may be passed to the
+ <span class="command"><strong>configure</strong></span> script. Please see the
+ <span class="application">autoconf</span> documentation or run
+ <span class="command"><strong>./configure --help</strong></span> for information about
+ the standard options.
+ </p>
+</div>
+<div class="refsect1">
+<a name="dependencies"></a><h2>Dependencies</h2>
+<p>
+ Before you can compile Seed, you need to have
+ various external libraries installed on your system.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>
+ The <a class="ulink" href="http://live.gnome.org/GObjectIntrospection" target="_top">gobject-introspection library</a> is necessary to build Seed. It provides the bridge between Seed and many GObject-based libraries.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://webkit.org" target="_top">WebKit</a> provides the JavaScriptCore interpreter, which is fundamental to Seed's ability to execute JavaScript. Seed requires a WebKit SVN revision newer than 35442. Keep in mind that some builds between this and HEAD still won't work with Seed, and performance has only improved, so try to keep an up-to-date version of WebKit if you're planning on working with Seed.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://tiswww.case.edu/php/chet/readline/rltop.html" target="_top">readline</a> is used by the Seed REPL in order to communicate with the user.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://sourceware.org/libffi/" target="_top">libffi</a> provides Seed with an interface to call into C libraries at runtime.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://ftp.gnome.org/pub/GNOME/sources/gnome-js-common/" target="_top">gnome-js-common</a> includes a battery of tests against both Seed and GJS, and also provides numerous libraries of JavaScript functions, including JSON manipulation and various language extensions.
+ </p></li>
+</ul></div>
+</div>
+<div class="refsect1">
+<a name="moddependencies"></a><h2>Module Dependencies</h2>
+<p>
+ Seed ships with a number of native modules which provide access to libraries which help with development but are not able to be introspected. Some of these modules depend on external libraries, and Seed's configuration will fail if they are not installed; if you wish to build Seed without a module for which you do not have the underlying library installed, check the Extra Configuration Options section of this document.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>
+ <a class="ulink" href="http://cairographics.org/" target="_top">Cairo</a> provides access to fast 2D graphics and numerous different types of output, including drawing to the screen, to an image, to a PDF, etc.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://www.freedesktop.org/wiki/Software/dbus" target="_top">DBus</a> enables Seed to manipulate the various message busses, and provides communication between applications.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://www.gnu.org/software/gettext/" target="_top">gettext</a> is a common library used for internationalization support.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://xmlsoft.org/" target="_top">libxml2</a> provides a powerful XML parsing interface.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://www.mpfr.org/" target="_top">mpfr</a> provides multiple-precision arithmetic.
+ </p></li>
+<li class="listitem"><p>
+ <a class="ulink" href="http://www.sqlite.org/" target="_top">sqlite3</a> provides straightforward read-write access to on-disk SQL databases.
+ </p></li>
+</ul></div>
+</div>
+<div class="refsect1">
+<a name="optdependencies"></a><h2>Optional Dependencies</h2>
+<p>
+ Seed's library of examples utilizes many other GObject projects which Seed does not strictly depend on, and will not be enumerated here. Introspection data for these projects may either be found within the projects themselves, or in the <a class="ulink" href="http://live.gnome.org/GObjectIntrospection" target="_top">gir-repository</a>.
+ </p>
+</div>
+<div class="refsect1">
+<a name="extra-configuration-options"></a><h2>Extra Configuration Options</h2>
+<p>
+ In addition to the normal options, the
+ <span class="command"><strong>configure</strong></span> script in the Seed
+ library supports these additional arguments:
+ </p>
+<p><b><code class="systemitem">--disable-canvas-module</code> and
+ <code class="systemitem">--enable-canvas-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-canvas-module</code>
+ as well, Seed attempts to build the Canvas native module.
+ </p>
+<p><b><code class="systemitem">--disable-readline-module</code> and
+ <code class="systemitem">--enable-readline-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-readline-module</code>
+ as well, Seed attempts to build the readline native module.
+ </p>
+<p><b><code class="systemitem">--disable-multiprocessing-module</code> and
+ <code class="systemitem">--enable-multiprocessing-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-multiprocessing-module</code>
+ as well, Seed attempts to build the multiprocessing native module.
+ </p>
+<p><b><code class="systemitem">--disable-sqlite-module</code> and
+ <code class="systemitem">--enable-sqlite-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-sqlite-module</code>
+ as well, Seed attempts to build the SQLite native module.
+ </p>
+<p><b><code class="systemitem">--disable-example-module</code> and
+ <code class="systemitem">--enable-example-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-example-module</code>
+ as well, Seed attempts to build the example native module.
+ </p>
+<p><b><code class="systemitem">--disable-dbus-module</code> and
+ <code class="systemitem">--enable-dbus-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-dbus-module</code>
+ as well, Seed attempts to build the DBus native module.
+ </p>
+<p><b><code class="systemitem">--disable-os-module</code> and
+ <code class="systemitem">--enable-os-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-os-module</code>
+ as well, Seed attempts to build the os native module.
+ </p>
+<p><b><code class="systemitem">--disable-libxml-module</code> and
+ <code class="systemitem">--enable-libxml-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-libxml-module</code>
+ as well, Seed attempts to build the libxml2 native module.
+ </p>
+<p><b><code class="systemitem">--disable-gtkbuilder-module</code> and
+ <code class="systemitem">--enable-gtkbuilder-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-gtkbuilder-module</code>
+ as well, Seed attempts to build the GtkBuilder native module.
+ </p>
+<p><b><code class="systemitem">--disable-cairo-module</code> and
+ <code class="systemitem">--enable-cairo-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-cairo-module</code>
+ as well, Seed attempts to build the Cairo native module.
+ </p>
+<p><b><code class="systemitem">--disable-gettext-module</code> and
+ <code class="systemitem">--enable-gettext-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-gettext-module</code>
+ as well, Seed attempts to build the gettext native module.
+ </p>
+<p><b><code class="systemitem">--disable-mpfr-module</code> and
+ <code class="systemitem">--enable-mpfr-module</code>. </b>
+ By default, and with <code class="systemitem">--enable-mpfr-module</code>
+ as well, Seed attempts to build the mpfr native module.
+ </p>
+<p><b><code class="systemitem">--disable-turtle-example</code> and
+ <code class="systemitem">--enable-turtle-example</code>. </b>
+ By default, and with <code class="systemitem">--enable-turtle-example</code>
+ as well, Seed attempts to build the Turtle example.
+ </p>
+<p><b><code class="systemitem">--disable-examples</code> and
+ <code class="systemitem">--enable-examples</code>. </b>
+ By default, and with <code class="systemitem">--enable-examples</code>
+ as well, a library of JavaScript examples are installed alongside Seed.
+ </p>
+<p><b><code class="systemitem">--disable-profile</code> and
+ <code class="systemitem">--enable-profile</code>. </b>
+ With <code class="systemitem">--enable-profile</code>, Seed is built with profiling and coverage instructions. One can use <span class="command"><strong>make profile</strong></span> or <span class="command"><strong>make profile-gui</strong></span> to profile the library.
+ </p>
+<p><b><code class="systemitem">--disable-profile-modules</code> and
+ <code class="systemitem">--enable-profile-modules</code>. </b>
+ With <code class="systemitem">--enable-profile-modules</code>, all Seed modules are built with profiling and coverage instructions. One can use <span class="command"><strong>make profile</strong></span> or <span class="command"><strong>make profile-gui</strong></span> to profile the modules.
+ </p>
+<p><b><code class="systemitem">--disable-debug</code> and
+ <code class="systemitem">--enable-debug</code>. </b>
+ With <code class="systemitem">--enable-debug</code>, Seed is built without optimizations and with extra debugging information included, and extra debug arguments to the <span class="command"><strong>seed</strong></span> interpreter are enabled; you can learn about these by calling <span class="command"><strong>seed --help</strong></span>.
+ </p>
+<p><b><code class="systemitem">--disable-shave</code> and
+ <code class="systemitem">--enable-shave</code>. </b>
+ By default, and with <code class="systemitem">--enable-shave</code> as well, Seed is built with pretty-printed build output. Disable this to see the actual compiler and linker commands being executed.
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-contact.html b/doc/reference/html/seed-contact.html
new file mode 100644
index 0000000..13bf249
--- /dev/null
+++ b/doc/reference/html/seed-contact.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Contact Information</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="seed.html" title="Part I. Seed Overview">
+<link rel="prev" href="seed-building.html" title="Compiling Seed">
+<link rel="next" href="js.html" title="Part II. Seed JavaScript Reference">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-building.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="seed.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="js.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="seed-contact"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Contact Information</span></h2>
+<p>Contact Information —
+Where to find help, ask questions, or bring patches
+</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="build"></a><h2>Authors</h2>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">Robert Carr &lt;<a class="ulink" href="mailto:racarr@svn.gnome.org" target="_top">racarr@svn.gnome.org</a>&gt;</li>
+<li class="listitem">Tim Horton &lt;<a class="ulink" href="mailto:hortont@svn.gnome.org" target="_top">hortont@svn.gnome.org</a>&gt;</li>
+</ul></div>
+</div>
+<div class="refsect1">
+<a name="git"></a><h2>Source Repository</h2>
+<p>The Seed source code is kept in the GNOME-wide version control at <a class="ulink" href="http://git.gnome.org/cgit/seed" target="_top">git.gnome.org</a>. You can check out the code on your own machine if you have <span class="command"><strong>git</strong></span> installed:</p>
+<p><span class="command"><strong>git clone git://git.gnome.org/seed</strong></span></p>
+</div>
+<div class="refsect1">
+<a name="bugs"></a><h2>Bugs</h2>
+<p>Bugs and feature requests can be reported on the <a class="ulink" href="http://bugzilla.gnome.org/enter_bug.cgi?product=seed" target="_top">seed</a> product in GNOME Bugzilla.</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-importer.html b/doc/reference/html/seed-importer.html
new file mode 100644
index 0000000..d2a43cd
--- /dev/null
+++ b/doc/reference/html/seed-importer.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Importer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="js.html" title="Part II. Seed JavaScript Reference">
+<link rel="prev" href="js.html" title="Part II. Seed JavaScript Reference">
+<link rel="next" href="api.html" title="Part III. Seed API Reference">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="js.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="js.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="api.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="seed-importer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Importer</span></h2>
+<p>Importer —
+Importing gobject-introspection namespaces, native modules, and JavaScript modules
+</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="git"></a><h2>Overview</h2>
+<p>The Seed importer provides a way for applications written in JavaScript to reference functions outside of the current file. This is the heart of Seed's ability to work with other parts of the GNOME stack, as well as a way to write reasonably structured and sensible complex applications from JavaScript. The importer allows access to four types of external objects:</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">GObject-Introspection namespaces, which provide access to functiosn and data which were scanned using gobject-introspection from other C libraries; this is how one accesses most of the libraries of the GNOME stack from JavaScript</li>
+<li class="listitem">Native modules, which provide a way to load arbitrary shared libraries tailored explicitly to the Seed API, which often offer much higher performance for critical code, or provide an easy way to bind code (by hand) which the introspection scanner cannot parse.</li>
+<li class="listitem">JavaScript modules, which provide a way to access (in a namespaced manner) the global object of another script, offering a simple way to modularize code written against Seed.</li>
+<li class="listitem">Directories, which simply contain, as properties on the object the importer returns, the contents of the directory. (expand, fix. this is confusing and misplaced)</li>
+</ul></div>
+<p>The global 'imports' object represents the runtime-side portion of the importer; all of your interactions with the importer will take place through this object.</p>
+</div>
+<div class="refsect1">
+<a name="idm14464"></a><h2>The Imports Search Path</h2>
+<p>The path which the importer searches for native modules and JavaScript modules is defined by the searchPath property on the 'imports' global. This should be a JavaScript array of strings representing the order and locations to search for these modules; the default set of paths includes various Seed system directories, the directory in which the currently running script is located, and the current directory, in that order. You can change the path at any time; if an invalid value is assigned, the importer will throw an exception the next time something is imported, <span class="emphasis"><em>not</em></span> when the property is set.</p>
+<div class="example">
+<a name="idm12304"></a><p class="title"><b>Example 1. Adding a directory to the search path</b></p>
+<div class="example-contents"><pre class="programlisting">
+imports.searchPath.unshift("/usr/local/share/random-seed-program-scripts/");
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="idm10816"></a><h2>Importing GObject-Introspection namespaces</h2>
+<p>GObject-Introspection provides the metadata required in order to call functions, connect to signals, and interact with properties within any library which has been scanned. The hows and whys of introspection are outside of the scope of this article, but how to utilize this data is central to the very tenents of Seed (the minimal platform possible to interact with GObject-based libraries from a pleasant language).</p>
+<p>Namespaces are loaded as requested, and are loaded only once throughout the lifetime of a Seed program (subsequent requests for the same namespace will return the same object provided previously). The special property 'gi' on the imports global represents the interface for loading these namespaces. A request to import Gtk might look like the following:</p>
+<div class="example">
+<a name="idp4756672"></a><p class="title"><b>Example 2. Using 'imports.gi' to import the Gtk namespace</b></p>
+<div class="example-contents"><pre class="programlisting">
+Gtk = imports.gi.Gtk;
+</pre></div>
+</div>
+<br class="example-break"><p>This will import the Gtk namespace from GObject-Introspection, and assign it to the global "Gtk" object. Afterwards, Gtk-related functions can be accessed as properties of said object. Imports will <span class="emphasis"><em>never</em></span> add values to the global object or affect anything outside of their namespace.</p>
+<p>By default, 'imports.gi.NameSpace' will return the most recent installed version of the imported namespace; in order to request a different version, or to mark your program as requiring a particular version, the "imports.gi.versions.NameSpace" property can be set. Keep in mind that versioning for GObject-Introspection namespaces is slightly different from the actual library version numbers; for example, the version for Gtk is still "2.0", even though we're many versions past that. The import will raise an exception if the requested version could not be loaded:</p>
+<div class="example">
+<a name="idp4760016"></a><p class="title"><b>Example 3. Using 'imports.gi.versions' to require Clutter 0.8</b></p>
+<div class="example-contents"><pre class="programlisting">
+imports.gi.versions.Clutter = "0.8";
+
+try
+{
+ Clutter = imports.gi.Clutter;
+}
+catch(e)
+{
+ print("Clutter 0.8 is not installed!");
+}
+</pre></div>
+</div>
+<br class="example-break">
+</div>
+<div class="refsect1">
+<a name="idp4761616"></a><h2>Importing Native Modules</h2>
+<p>Seed ships with a number of (link!) native modules, which provide access to various parts of the system which GObject-Introspection cannot provide proper metadata for. An application developer could also decide to write performance-critical parts of their code as a native Seed module, as well, as one of the numerous ways to interface C with Seed.</p>
+<p>Native modules are loaded just like GObject-Introspection namespaces, except as toplevel objects on "imports", instead of "imports.gi". For example, to load the readline module that ships with Seed, one could:</p>
+<div class="example">
+<a name="idp4763744"></a><p class="title"><b>Example 4. Loading the native module "readline"</b></p>
+<div class="example-contents"><pre class="programlisting">
+readline = imports.readline;
+</pre></div>
+</div>
+<br class="example-break"><p>Seed searches the imports search path for native modules; if it finds a file with the given name, the prefix "seed_" and the same suffix as is used for shared libraries on your system (.so on Linux, .dylib on Mac OS X, etc.), it will assume this is a native module and load and initialize it as such. For example, the readline module loaded above is named <code class="filename">seed_readline.so</code> on a recent Linux machine.</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed-introduction.html b/doc/reference/html/seed-introduction.html
new file mode 100644
index 0000000..bb72a69
--- /dev/null
+++ b/doc/reference/html/seed-introduction.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Introduction</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="seed.html" title="Part I. Seed Overview">
+<link rel="prev" href="seed.html" title="Part I. Seed Overview">
+<link rel="next" href="seed-building.html" title="Compiling Seed">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="seed.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-building.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="seed-introduction"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Introduction</span></h2>
+<p>Introduction —
+What Seed is all about
+</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<p>
+Seed is a library and interpreter, dynamically bridging (through gobject-introspection) the WebKit JavaScriptCore engine with the GObject type system. In a more concrete sense, Seed enables you to immediately write applications around a significant portion of the GNOME platform, and easily embed JavaScript as a scripting language in your GObject library. Seed is built around the idea of "minimal-platform", in that it seems a theoretically ideal GNOME development language provides no platform of its own, but instead seamlessly integrates with the already quite large GNOME platform.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/seed.devhelp2 b/doc/reference/html/seed.devhelp2
new file mode 100644
index 0000000..29c0532
--- /dev/null
+++ b/doc/reference/html/seed.devhelp2
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="Seed Reference Manual" link="index.html" author="" name="seed" version="2" language="c">
+ <chapters>
+ <sub name="Seed Overview" link="seed.html">
+ <sub name="Introduction" link="seed-introduction.html"/>
+ <sub name="Compiling Seed" link="seed-building.html"/>
+ <sub name="Contact Information" link="seed-contact.html"/>
+ </sub>
+ <sub name="Seed JavaScript Reference" link="js.html">
+ <sub name="Importer" link="seed-importer.html"/>
+ </sub>
+ <sub name="Seed API Reference" link="api.html">
+ <sub name="Initialization" link="seed-Initialization.html"/>
+ <sub name="Working with Contexts" link="seed-Contexts.html"/>
+ <sub name="Evaluating JavaScript" link="seed-Evaluation.html"/>
+ <sub name="Exception Handling" link="seed-Exceptions.html"/>
+ <sub name="GObject Signals" link="seed-Signals.html"/>
+ <sub name="Values and Type Conversion" link="types.html">
+ <sub name="Type Conversion" link="seed-Native-Type-Conversion.html"/>
+ <sub name="Operating on JavaScript types" link="seed-Operating-on-Native-Types.html"/>
+ <sub name="Working with JavaScript objects" link="seed-JS-Objects.html"/>
+ </sub>
+ <sub name="Creating native functions" link="seed-Native-Functions.html"/>
+ <sub name="Creating JavaScript classes" link="seed-JavaScript-Classes.html"/>
+ <sub name="Using JavaScript closures" link="seed-SeedClosure.html"/>
+ <sub name="Seed Modules" link="seed-Modules.html"/>
+ </sub>
+ <sub name="Seed Module Reference" link="modules.html">
+ <sub name="readline" link="readline-module.html"/>
+ <sub name="SQLite" link="sqlite-module.html"/>
+ <sub name="GtkBuilder" link="GtkBuilder-module.html"/>
+ <sub name="Sandbox" link="Sandbox-module.html"/>
+ </sub>
+ <sub name="Index" link="ix01.html"/>
+ </chapters>
+ <functions>
+ <keyword type="struct" name="struct SeedEngine" link="seed-Initialization.html#SeedEngine"/>
+ <keyword type="function" name="seed_init ()" link="seed-Initialization.html#seed-init"/>
+ <keyword type="function" name="seed_init_with_context_group ()" link="seed-Initialization.html#seed-init-with-context-group"/>
+ <keyword type="function" name="seed_engine_set_search_path ()" link="seed-Initialization.html#seed-engine-set-search-path"/>
+ <keyword type="function" name="seed_engine_get_search_path ()" link="seed-Initialization.html#seed-engine-get-search-path"/>
+ <keyword type="typedef" name="SeedContext" link="seed-Contexts.html#SeedContext"/>
+ <keyword type="typedef" name="SeedGlobalContext" link="seed-Contexts.html#SeedGlobalContext"/>
+ <keyword type="typedef" name="SeedContextGroup" link="seed-Contexts.html#SeedContextGroup"/>
+ <keyword type="function" name="seed_context_create ()" link="seed-Contexts.html#seed-context-create"/>
+ <keyword type="function" name="seed_context_ref ()" link="seed-Contexts.html#seed-context-ref"/>
+ <keyword type="function" name="seed_context_unref ()" link="seed-Contexts.html#seed-context-unref"/>
+ <keyword type="function" name="seed_context_collect ()" link="seed-Contexts.html#seed-context-collect"/>
+ <keyword type="function" name="seed_context_get_global_object ()" link="seed-Contexts.html#seed-context-get-global-object"/>
+ <keyword type="function" name="seed_prepare_global_context ()" link="seed-Contexts.html#seed-prepare-global-context"/>
+ <keyword type="function" name="seed_importer_add_global ()" link="seed-Contexts.html#seed-importer-add-global"/>
+ <keyword type="function" name="seed_importer_set_search_path ()" link="seed-Contexts.html#seed-importer-set-search-path"/>
+ <keyword type="struct" name="SeedScript" link="seed-Evaluation.html#SeedScript"/>
+ <keyword type="function" name="seed_make_script ()" link="seed-Evaluation.html#seed-make-script"/>
+ <keyword type="function" name="seed_evaluate ()" link="seed-Evaluation.html#seed-evaluate"/>
+ <keyword type="function" name="seed_simple_evaluate ()" link="seed-Evaluation.html#seed-simple-evaluate"/>
+ <keyword type="function" name="seed_script_new_from_file ()" link="seed-Evaluation.html#seed-script-new-from-file"/>
+ <keyword type="function" name="seed_script_exception ()" link="seed-Evaluation.html#seed-script-exception"/>
+ <keyword type="function" name="seed_script_destroy ()" link="seed-Evaluation.html#seed-script-destroy"/>
+ <keyword type="typedef" name="SeedException" link="seed-Exceptions.html#SeedException"/>
+ <keyword type="function" name="seed_make_exception ()" link="seed-Exceptions.html#seed-make-exception"/>
+ <keyword type="function" name="seed_exception_get_name ()" link="seed-Exceptions.html#seed-exception-get-name"/>
+ <keyword type="function" name="seed_exception_get_message ()" link="seed-Exceptions.html#seed-exception-get-message"/>
+ <keyword type="function" name="seed_exception_get_line ()" link="seed-Exceptions.html#seed-exception-get-line"/>
+ <keyword type="function" name="seed_exception_get_file ()" link="seed-Exceptions.html#seed-exception-get-file"/>
+ <keyword type="function" name="seed_exception_to_string ()" link="seed-Exceptions.html#seed-exception-to-string"/>
+ <keyword type="function" name="seed_signal_connect ()" link="seed-Signals.html#seed-signal-connect"/>
+ <keyword type="function" name="seed_signal_connect_value ()" link="seed-Signals.html#seed-signal-connect-value"/>
+ <keyword type="typedef" name="SeedValue" link="seed-Native-Type-Conversion.html#SeedValue"/>
+ <keyword type="enum" name="enum SeedType" link="seed-Native-Type-Conversion.html#SeedType"/>
+ <keyword type="function" name="seed_make_undefined ()" link="seed-Native-Type-Conversion.html#seed-make-undefined"/>
+ <keyword type="function" name="seed_make_null ()" link="seed-Native-Type-Conversion.html#seed-make-null"/>
+ <keyword type="function" name="seed_value_to_boolean ()" link="seed-Native-Type-Conversion.html#seed-value-to-boolean"/>
+ <keyword type="function" name="seed_value_from_boolean ()" link="seed-Native-Type-Conversion.html#seed-value-from-boolean"/>
+ <keyword type="function" name="seed_value_to_uint ()" link="seed-Native-Type-Conversion.html#seed-value-to-uint"/>
+ <keyword type="function" name="seed_value_from_uint ()" link="seed-Native-Type-Conversion.html#seed-value-from-uint"/>
+ <keyword type="function" name="seed_value_to_int ()" link="seed-Native-Type-Conversion.html#seed-value-to-int"/>
+ <keyword type="function" name="seed_value_from_int ()" link="seed-Native-Type-Conversion.html#seed-value-from-int"/>
+ <keyword type="function" name="seed_value_to_char ()" link="seed-Native-Type-Conversion.html#seed-value-to-char"/>
+ <keyword type="function" name="seed_value_from_char ()" link="seed-Native-Type-Conversion.html#seed-value-from-char"/>
+ <keyword type="function" name="seed_value_to_uchar ()" link="seed-Native-Type-Conversion.html#seed-value-to-uchar"/>
+ <keyword type="function" name="seed_value_from_uchar ()" link="seed-Native-Type-Conversion.html#seed-value-from-uchar"/>
+ <keyword type="function" name="seed_value_to_long ()" link="seed-Native-Type-Conversion.html#seed-value-to-long"/>
+ <keyword type="function" name="seed_value_from_long ()" link="seed-Native-Type-Conversion.html#seed-value-from-long"/>
+ <keyword type="function" name="seed_value_to_ulong ()" link="seed-Native-Type-Conversion.html#seed-value-to-ulong"/>
+ <keyword type="function" name="seed_value_from_ulong ()" link="seed-Native-Type-Conversion.html#seed-value-from-ulong"/>
+ <keyword type="function" name="seed_value_to_int64 ()" link="seed-Native-Type-Conversion.html#seed-value-to-int64"/>
+ <keyword type="function" name="seed_value_from_int64 ()" link="seed-Native-Type-Conversion.html#seed-value-from-int64"/>
+ <keyword type="function" name="seed_value_to_uint64 ()" link="seed-Native-Type-Conversion.html#seed-value-to-uint64"/>
+ <keyword type="function" name="seed_value_from_uint64 ()" link="seed-Native-Type-Conversion.html#seed-value-from-uint64"/>
+ <keyword type="function" name="seed_value_to_float ()" link="seed-Native-Type-Conversion.html#seed-value-to-float"/>
+ <keyword type="function" name="seed_value_from_float ()" link="seed-Native-Type-Conversion.html#seed-value-from-float"/>
+ <keyword type="function" name="seed_value_to_double ()" link="seed-Native-Type-Conversion.html#seed-value-to-double"/>
+ <keyword type="function" name="seed_value_from_double ()" link="seed-Native-Type-Conversion.html#seed-value-from-double"/>
+ <keyword type="function" name="seed_value_to_string ()" link="seed-Native-Type-Conversion.html#seed-value-to-string"/>
+ <keyword type="function" name="seed_value_from_string ()" link="seed-Native-Type-Conversion.html#seed-value-from-string"/>
+ <keyword type="function" name="seed_value_from_binary_string ()" link="seed-Native-Type-Conversion.html#seed-value-from-binary-string"/>
+ <keyword type="function" name="seed_value_to_object ()" link="seed-Native-Type-Conversion.html#seed-value-to-object"/>
+ <keyword type="function" name="seed_value_from_object ()" link="seed-Native-Type-Conversion.html#seed-value-from-object"/>
+ <keyword type="function" name="seed_value_to_filename ()" link="seed-Native-Type-Conversion.html#seed-value-to-filename"/>
+ <keyword type="function" name="seed_value_from_filename ()" link="seed-Native-Type-Conversion.html#seed-value-from-filename"/>
+ <keyword type="function" name="seed_value_to_format ()" link="seed-Native-Type-Conversion.html#seed-value-to-format"/>
+ <keyword type="function" name="seed_pointer_get_pointer ()" link="seed-Native-Type-Conversion.html#seed-pointer-get-pointer"/>
+ <keyword type="function" name="seed_make_pointer ()" link="seed-Native-Type-Conversion.html#seed-make-pointer"/>
+ <keyword type="typedef" name="SeedString" link="seed-Native-Type-Conversion.html#SeedString"/>
+ <keyword type="function" name="seed_string_ref ()" link="seed-Native-Type-Conversion.html#seed-string-ref"/>
+ <keyword type="function" name="seed_string_unref ()" link="seed-Native-Type-Conversion.html#seed-string-unref"/>
+ <keyword type="function" name="seed_string_get_maximum_size ()" link="seed-Native-Type-Conversion.html#seed-string-get-maximum-size"/>
+ <keyword type="function" name="seed_string_to_utf8_buffer ()" link="seed-Native-Type-Conversion.html#seed-string-to-utf8-buffer"/>
+ <keyword type="function" name="seed_string_is_equal ()" link="seed-Native-Type-Conversion.html#seed-string-is-equal"/>
+ <keyword type="function" name="seed_string_is_equal_utf8 ()" link="seed-Native-Type-Conversion.html#seed-string-is-equal-utf8"/>
+ <keyword type="function" name="seed_value_unprotect ()" link="seed-Operating-on-Native-Types.html#seed-value-unprotect"/>
+ <keyword type="function" name="seed_value_protect ()" link="seed-Operating-on-Native-Types.html#seed-value-protect"/>
+ <keyword type="function" name="seed_value_is_undefined ()" link="seed-Operating-on-Native-Types.html#seed-value-is-undefined"/>
+ <keyword type="function" name="seed_value_is_null ()" link="seed-Operating-on-Native-Types.html#seed-value-is-null"/>
+ <keyword type="function" name="seed_value_is_function ()" link="seed-Operating-on-Native-Types.html#seed-value-is-function"/>
+ <keyword type="function" name="seed_value_is_number ()" link="seed-Operating-on-Native-Types.html#seed-value-is-number"/>
+ <keyword type="function" name="seed_value_is_string ()" link="seed-Operating-on-Native-Types.html#seed-value-is-string"/>
+ <keyword type="function" name="seed_value_is_object_of_class ()" link="seed-Operating-on-Native-Types.html#seed-value-is-object-of-class"/>
+ <keyword type="function" name="seed_value_is_object ()" link="seed-Operating-on-Native-Types.html#seed-value-is-object"/>
+ <keyword type="function" name="seed_value_get_type ()" link="seed-Operating-on-Native-Types.html#seed-value-get-type"/>
+ <keyword type="typedef" name="SeedObject" link="seed-JS-Objects.html#SeedObject"/>
+ <keyword type="function" name="seed_make_object ()" link="seed-JS-Objects.html#seed-make-object"/>
+ <keyword type="function" name="seed_make_array ()" link="seed-JS-Objects.html#seed-make-array"/>
+ <keyword type="function" name="seed_object_call ()" link="seed-JS-Objects.html#seed-object-call"/>
+ <keyword type="function" name="seed_object_set_property_at_index ()" link="seed-JS-Objects.html#seed-object-set-property-at-index"/>
+ <keyword type="function" name="seed_object_get_property_at_index ()" link="seed-JS-Objects.html#seed-object-get-property-at-index"/>
+ <keyword type="function" name="seed_object_is_of_class ()" link="seed-JS-Objects.html#seed-object-is-of-class"/>
+ <keyword type="function" name="seed_object_get_private ()" link="seed-JS-Objects.html#seed-object-get-private"/>
+ <keyword type="function" name="seed_object_set_private ()" link="seed-JS-Objects.html#seed-object-set-private"/>
+ <keyword type="function" name="seed_object_get_property ()" link="seed-JS-Objects.html#seed-object-get-property"/>
+ <keyword type="function" name="seed_object_set_property ()" link="seed-JS-Objects.html#seed-object-set-property"/>
+ <keyword type="function" name="seed_object_get_prototype ()" link="seed-JS-Objects.html#seed-object-get-prototype"/>
+ <keyword type="function" name="seed_object_copy_property_names ()" link="seed-JS-Objects.html#seed-object-copy-property-names"/>
+ <keyword type="function" name="SeedObjectInitializeCallback ()" link="seed-JS-Objects.html#SeedObjectInitializeCallback"/>
+ <keyword type="function" name="SeedObjectFinalizeCallback ()" link="seed-JS-Objects.html#SeedObjectFinalizeCallback"/>
+ <keyword type="function" name="SeedObjectHasPropertyCallback ()" link="seed-JS-Objects.html#SeedObjectHasPropertyCallback"/>
+ <keyword type="function" name="SeedObjectGetPropertyCallback ()" link="seed-JS-Objects.html#SeedObjectGetPropertyCallback"/>
+ <keyword type="function" name="SeedObjectSetPropertyCallback ()" link="seed-JS-Objects.html#SeedObjectSetPropertyCallback"/>
+ <keyword type="function" name="SeedObjectDeletePropertyCallback ()" link="seed-JS-Objects.html#SeedObjectDeletePropertyCallback"/>
+ <keyword type="function" name="SeedObjectGetPropertyNamesCallback ()" link="seed-JS-Objects.html#SeedObjectGetPropertyNamesCallback"/>
+ <keyword type="function" name="SeedObjectCallAsFunctionCallback ()" link="seed-JS-Objects.html#SeedObjectCallAsFunctionCallback"/>
+ <keyword type="function" name="SeedObjectHasInstanceCallback ()" link="seed-JS-Objects.html#SeedObjectHasInstanceCallback"/>
+ <keyword type="function" name="SeedObjectConvertToTypeCallback ()" link="seed-JS-Objects.html#SeedObjectConvertToTypeCallback"/>
+ <keyword type="function" name="SeedObjectCallAsConstructorCallback ()" link="seed-JS-Objects.html#SeedObjectCallAsConstructorCallback"/>
+ <keyword type="function" name="SeedFunctionCallback ()" link="seed-Native-Functions.html#SeedFunctionCallback"/>
+ <keyword type="function" name="seed_make_function ()" link="seed-Native-Functions.html#seed-make-function"/>
+ <keyword type="function" name="seed_create_function ()" link="seed-Native-Functions.html#seed-create-function"/>
+ <keyword type="enum" name="enum SeedPropertyAttributes" link="seed-JavaScript-Classes.html#SeedPropertyAttributes"/>
+ <keyword type="enum" name="enum SeedClassAttributes" link="seed-JavaScript-Classes.html#SeedClassAttributes"/>
+ <keyword type="typedef" name="SeedClass" link="seed-JavaScript-Classes.html#SeedClass"/>
+ <keyword type="macro" name="seed_empty_class" link="seed-JavaScript-Classes.html#seed-empty-class"/>
+ <keyword type="function" name="seed_create_class ()" link="seed-JavaScript-Classes.html#seed-create-class"/>
+ <keyword type="function" name="seed_make_constructor ()" link="seed-JavaScript-Classes.html#seed-make-constructor"/>
+ <keyword type="struct" name="struct SeedClosure" link="seed-SeedClosure.html#SeedClosure"/>
+ <keyword type="function" name="seed_closure_new ()" link="seed-SeedClosure.html#seed-closure-new"/>
+ <keyword type="function" name="seed_closure_get_callable ()" link="seed-SeedClosure.html#seed-closure-get-callable"/>
+ <keyword type="function" name="seed_closure_invoke ()" link="seed-SeedClosure.html#seed-closure-invoke"/>
+ <keyword type="function" name="seed_closure_invoke_with_context ()" link="seed-SeedClosure.html#seed-closure-invoke-with-context"/>
+ <keyword type="function" name="seed_closure_warn_exception ()" link="seed-SeedClosure.html#seed-closure-warn-exception"/>
+ <keyword type="macro" name="CHECK_ARG_COUNT()" link="seed-Modules.html#CHECK-ARG-COUNT:CAPS"/>
+ <keyword type="macro" name="DEFINE_ENUM_MEMBER()" link="seed-Modules.html#DEFINE-ENUM-MEMBER:CAPS"/>
+ <keyword type="macro" name="DEFINE_ENUM_MEMBER_EXT()" link="seed-Modules.html#DEFINE-ENUM-MEMBER-EXT:CAPS"/>
+ <keyword type="function" name="SeedModuleInitCallback ()" link="seed-Modules.html#SeedModuleInitCallback"/>
+ <keyword type="function" name="readline.readline (prompt)" link="readline-module.html#readline-readline"/>
+ <keyword type="function" name="readline.bind (key, function)" link="readline-module.html#readline-bind"/>
+ <keyword type="function" name="readline.done ()" link="readline-module.html#readline-done"/>
+ <keyword type="function" name="readline.buffer()" link="readline-module.html#readline-buffer"/>
+ <keyword type="function" name="readline.insert (string)" link="readline-module.html#readline-insert"/>
+ <keyword type="function" name="new sqlite.Database(filename)" link="sqlite-module.html#sqlite-database"/>
+ <keyword type="function" name="database.exec(command, callback)" link="sqlite-module.html#sqlite-exec"/>
+ <keyword type="function" name="database.close()" link="sqlite-module.html#sqlite-close"/>
+ <keyword type="function" name="builder.connect_signals (object, user_data)" link="GtkBuilder-module.html#gtkbuilder-connect-signals"/>
+ <keyword type="function" name="new sandbox.Context()" link="Sandbox-module.html#sandbox-context"/>
+ <keyword type="function" name="context.eval(source)" link="Sandbox-module.html#sandbox-eval"/>
+ <keyword type="function" name="context.add_globals()" link="Sandbox-module.html#sandbox-addglobals"/>
+ <keyword type="function" name="context.destroy()" link="Sandbox-module.html#sandbox-destroy"/>
+ <keyword type="function" name="context.global" link="Sandbox-module.html#sandbox-global"/>
+ </functions>
+</book>
diff --git a/doc/reference/html/seed.html b/doc/reference/html/seed.html
new file mode 100644
index 0000000..32e764d
--- /dev/null
+++ b/doc/reference/html/seed.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part I. Seed Overview</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="index.html" title="Seed Reference Manual">
+<link rel="prev" href="index.html" title="Seed Reference Manual">
+<link rel="next" href="seed-introduction.html" title="Introduction">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-introduction.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="seed"></a>Part I. Seed Overview</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>
+<span class="refentrytitle"><a href="seed-introduction.html">Introduction</a></span><span class="refpurpose"> —
+What Seed is all about
+</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-building.html">Compiling Seed</a></span><span class="refpurpose"> —
+How to compile Seed itself
+</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-contact.html">Contact Information</a></span><span class="refpurpose"> —
+Where to find help, ask questions, or bring patches
+</span>
+</dt>
+</dl>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/sqlite-module.html b/doc/reference/html/sqlite-module.html
new file mode 100644
index 0000000..7ba0bd1
--- /dev/null
+++ b/doc/reference/html/sqlite-module.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>SQLite</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="modules.html" title="Part IV. Seed Module Reference">
+<link rel="prev" href="readline-module.html" title="readline">
+<link rel="next" href="GtkBuilder-module.html" title="GtkBuilder">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="readline-module.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="modules.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="GtkBuilder-module.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="sqlite-module"></a>SQLite</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Robert</span> <span class="surname">Carr</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+   <code class="email">&lt;<a class="email" href="mailto:racarr@gnome.org">racarr@<em class="parameter"><code>gnome.org</code></em></a>&gt;</code><br>
+ </p></div></div>
+</div></div>
+</div></div>
+<div class="refsect1">
+<a name="idp5543680"></a><h2>API Reference</h2>
+<p>
+ The sqlite module allows for manipulation and querying of sqlite databases.
+ </p>
+<pre class="programlisting">
+sqlite = imports.sqlite;
+ </pre>
+<p>
+ </p>
+
+ The SQLite module provides a selection of status enums, to be used as the return values of functions. For meanings, consult the SQLite C documentation.
+ <pre class="programlisting">
+sqlite.[OK, ERROR, INTERNAL, PERM ABORT, BUSY,
+ LOCKED, NOMEM, READONLY, INTERRUPT, CORRUPT,
+ NOTFOUND, FULL, CANTOPEN, PROTOCOL, EMPTY,
+ SCHEMA, TOOBIG, CONSTRAINT, MISMATCH, MISUSE,
+ NOLFS, AUTH, FORMAT, RANGE, NOTADB, ROW, DONE]
+ </pre>
+<p>
+</p>
+<div class="refsect2">
+<a name="sqlite-database"></a><h3>new sqlite.Database(filename)</h3>
+<p>Constructs a new sqlite.Database</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span></span></p></td>
+<td>A new sqlite.Database object, the <em class="parameter"><code>status</code></em> property will be one of the SQLite status enums</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sqlite-exec"></a><h3>database.exec(command, callback)</h3>
+<p>Executes the SQLite <em class="parameter"><code>command</code></em> on the given database. If <em class="parameter"><code>callback</code></em> is defined, it is called with each table entry from the given command, with a single argument. The argument has properties for each value in the returned table entry.</p>
+<p>Keep in mind that, just like in C, it is necessary to sanitize user input in your SQL before passing it to the database.</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>command</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>callback</code></em></span></p></td>
+<td>undefined</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span></span></p></td>
+<td>An SQLite status enum representing the result of the operation</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>
+</p>
+<hr>
+<div class="refsect2">
+<a name="sqlite-close"></a><h3>database.close()</h3>
+<p>Closes an SQLite database and syncs</p>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="idp8815184"></a><h2>Examples</h2>
+<p>Below are several examples of using the Seed sqlite module. For additional resources, consult the examples/ folder of the Seed source</p>
+<div class="example">
+<a name="readline-repl-example"></a><p class="title"><b>Example 15. </b></p>
+<div class="example-contents">
+<p>This demonstrates creating a new table, populating it, and querying it for results</p>
+<pre class="programlisting">
+sqlite = imports.sqlite;
+var db = new sqlite.Database("people.db");
+db.exec("create table people (key INTEGER PRIMARY KEY, name TEXT," +
+ "age INTEGER, phone TEXT);");
+db.exec("insert into people(name, age, phone) " +
+ "values('John Smith', 24, '555-123-4567');");
+
+function cb_print_phone(results) {
+ print(results.phone);
+}
+
+db.exec("select * from people where name='John Smith';", cb_print_phone);
+db.close();
+ </pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/style.css b/doc/reference/html/style.css
new file mode 100644
index 0000000..d6f6c26
--- /dev/null
+++ b/doc/reference/html/style.css
@@ -0,0 +1,266 @@
+.synopsis, .classsynopsis
+{
+ /* tango:aluminium 1/2 */
+ background: #eeeeec;
+ border: solid 1px #d3d7cf;
+ padding: 0.5em;
+}
+.programlisting
+{
+ /* tango:sky blue 0/1 */
+ background: #e6f3ff;
+ border: solid 1px #729fcf;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+
+@media screen {
+ sup a.footnote
+ {
+ position: relative;
+ top: 0em ! important;
+
+ }
+ /* this is needed so that the local anchors are displayed below the naviagtion */
+ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+ {
+ display: inline-block;
+ position: relative;
+ top:-5em;
+ }
+ /* this seems to be a bug in the xsl style sheets when generating indexes */
+ div.index div.index
+ {
+ top: 0em;
+ }
+ /* make space for the fixed navigation bar and add space at the bottom so that
+ * link targets appear somewhat close to top
+ */
+ body
+ {
+ padding-top: 3.2em;
+ padding-bottom: 20em;
+ }
+ /* style and size the navigation bar */
+ table.navigation#top
+ {
+ position: fixed;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ z-index: 10;
+ }
+ .navigation a, .navigation a:visited
+ {
+ /* tango:scarlet red 3 */
+ color: #a40000;
+ }
+ .navigation a:hover
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ }
+ td.shortcuts
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ font-size: 80%;
+ white-space: nowrap;
+ }
+}
+@media print {
+ table.navigation {
+ visibility: collapse;
+ display: none;
+ }
+ div.titlepage table.navigation {
+ visibility: visible;
+ display: table;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ }
+}
+
+.navigation .title
+{
+ font-size: 200%;
+}
+
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+
+a, a:visited
+{
+ text-decoration: none;
+ /* tango:sky blue 2 */
+ color: #3465a4;
+}
+a:hover
+{
+ text-decoration: underline;
+ /* tango:sky blue 1 */
+ color: #729fcf;
+}
+
+div.table table
+{
+ border-collapse: collapse;
+ border-spacing: 0px;
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+ padding: 3px;
+ vertical-align: top;
+}
+
+div.table table th
+{
+ /* tango:aluminium 2 */
+ background-color: #d3d7cf;
+}
+
+hr
+{
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ background: #babdb6;
+ border: none 0px;
+ height: 1px;
+ clear: both;
+}
+
+.footer
+{
+ padding-top: 3.5em;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ text-align: center;
+ font-size: 80%;
+}
+
+.warning
+{
+ /* tango:orange 0/1 */
+ background: #ffeed9;
+ border-color: #ffb04f;
+}
+.note
+{
+ /* tango:chameleon 0/0.5 */
+ background: #d8ffb2;
+ border-color: #abf562;
+}
+.note, .warning
+{
+ padding: 0.5em;
+ border-width: 1px;
+ border-style: solid;
+}
+.note h3, .warning h3
+{
+ margin-top: 0.0em
+}
+.note p, .warning p
+{
+ margin-bottom: 0.0em
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+ float: right;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+.annotation
+{
+ /* tango:aluminium 5 */
+ color: #555753;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+/* code listings */
+
+.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
+.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
+.listing_code .programlisting .function { color: #000000; font-weight: bold; }
+.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
+.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
+.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .normal { color: #000000; }
+.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
+.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
+.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
+.listing_code .programlisting .type { color: #000000; }
+.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
+.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
+
+.listing_frame {
+ /* tango:sky blue 1 */
+ border: solid 1px #729fcf;
+ padding: 0px;
+}
+
+.listing_lines, .listing_code {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0.5em;
+}
+.listing_lines {
+ /* tango:sky blue 0.5 */
+ background: #a6c5e3;
+ /* tango:aluminium 6 */
+ color: #2e3436;
+}
+.listing_code {
+ /* tango:sky blue 0 */
+ background: #e6f3ff;
+}
+.listing_code .programlisting {
+ /* override from previous */
+ border: none 0px;
+ padding: 0px;
+}
+.listing_lines pre, .listing_code pre {
+ margin: 0px;
+}
+
diff --git a/doc/reference/html/types.html b/doc/reference/html/types.html
new file mode 100644
index 0000000..8735b11
--- /dev/null
+++ b/doc/reference/html/types.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Values and Type Conversion</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Seed Reference Manual">
+<link rel="up" href="api.html" title="Part III. Seed API Reference">
+<link rel="prev" href="seed-Signals.html" title="GObject Signals">
+<link rel="next" href="seed-Native-Type-Conversion.html" title="Type Conversion">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="seed-Signals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Seed Reference Manual</th>
+<td><a accesskey="n" href="seed-Native-Type-Conversion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="types"></a>Values and Type Conversion</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="seed-Native-Type-Conversion.html">Type Conversion</a></span><span class="refpurpose"> — Moving between JavaScript and C intrinsic types</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-Operating-on-Native-Types.html">Operating on JavaScript types</a></span><span class="refpurpose"> — Determining the type of a SeedValue</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="seed-JS-Objects.html">Working with JavaScript objects</a></span><span class="refpurpose"> — Using properties, constructing objects, etc.</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/reference/html/up.png b/doc/reference/html/up.png
new file mode 100644
index 0000000..8eb591f
--- /dev/null
+++ b/doc/reference/html/up.png
Binary files differ
diff --git a/doc/reference/imports.sgml b/doc/reference/imports.sgml
new file mode 100644
index 0000000..3669a26
--- /dev/null
+++ b/doc/reference/imports.sgml
@@ -0,0 +1,87 @@
+<refentry id="seed-importer" revision="05 Jul 2009">
+<refmeta>
+<refentrytitle>Importer</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>SEED Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Importer</refname>
+<refpurpose>
+Importing gobject-introspection namespaces, native modules, and JavaScript modules
+</refpurpose>
+</refnamediv>
+
+ <refsect1 id="git">
+ <title>Overview</title>
+ <para>The Seed importer provides a way for applications written in JavaScript to reference functions outside of the current file. This is the heart of Seed's ability to work with other parts of the GNOME stack, as well as a way to write reasonably structured and sensible complex applications from JavaScript. The importer allows access to four types of external objects:</para>
+
+ <itemizedlist>
+ <listitem>GObject-Introspection namespaces, which provide access to functiosn and data which were scanned using gobject-introspection from other C libraries; this is how one accesses most of the libraries of the GNOME stack from JavaScript</listitem>
+ <listitem>Native modules, which provide a way to load arbitrary shared libraries tailored explicitly to the Seed API, which often offer much higher performance for critical code, or provide an easy way to bind code (by hand) which the introspection scanner cannot parse.</listitem>
+ <listitem>JavaScript modules, which provide a way to access (in a namespaced manner) the global object of another script, offering a simple way to modularize code written against Seed.</listitem>
+ <listitem>Directories, which simply contain, as properties on the object the importer returns, the contents of the directory. (expand, fix. this is confusing and misplaced)</listitem>
+ </itemizedlist>
+ <para>The global 'imports' object represents the runtime-side portion of the importer; all of your interactions with the importer will take place through this object.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>The Imports Search Path</title>
+ <para>The path which the importer searches for native modules and JavaScript modules is defined by the searchPath property on the 'imports' global. This should be a JavaScript array of strings representing the order and locations to search for these modules; the default set of paths includes various Seed system directories, the directory in which the currently running script is located, and the current directory, in that order. You can change the path at any time; if an invalid value is assigned, the importer will throw an exception the next time something is imported, <emphasis>not</emphasis> when the property is set.</para>
+ <example>
+ <title>Adding a directory to the search path</title>
+<programlisting>
+imports.searchPath.unshift("/usr/local/share/random-seed-program-scripts/");
+</programlisting>
+ </example>
+ </refsect1>
+
+ <refsect1>
+ <title>Importing GObject-Introspection namespaces</title>
+ <para>GObject-Introspection provides the metadata required in order to call functions, connect to signals, and interact with properties within any library which has been scanned. The hows and whys of introspection are outside of the scope of this article, but how to utilize this data is central to the very tenents of Seed (the minimal platform possible to interact with GObject-based libraries from a pleasant language).</para>
+ <para>Namespaces are loaded as requested, and are loaded only once throughout the lifetime of a Seed program (subsequent requests for the same namespace will return the same object provided previously). The special property 'gi' on the imports global represents the interface for loading these namespaces. A request to import Gtk might look like the following:</para>
+
+ <example>
+ <title>Using 'imports.gi' to import the Gtk namespace</title>
+<programlisting>
+Gtk = imports.gi.Gtk;
+</programlisting>
+ </example>
+
+ <para>This will import the Gtk namespace from GObject-Introspection, and assign it to the global "Gtk" object. Afterwards, Gtk-related functions can be accessed as properties of said object. Imports will <emphasis>never</emphasis> add values to the global object or affect anything outside of their namespace.</para>
+ <para>By default, 'imports.gi.NameSpace' will return the most recent installed version of the imported namespace; in order to request a different version, or to mark your program as requiring a particular version, the "imports.gi.versions.NameSpace" property can be set. Keep in mind that versioning for GObject-Introspection namespaces is slightly different from the actual library version numbers; for example, the version for Gtk is still "2.0", even though we're many versions past that. The import will raise an exception if the requested version could not be loaded:</para>
+
+ <example>
+ <title>Using 'imports.gi.versions' to require Clutter 0.8</title>
+<programlisting>
+imports.gi.versions.Clutter = "0.8";
+
+try
+{
+ Clutter = imports.gi.Clutter;
+}
+catch(e)
+{
+ print("Clutter 0.8 is not installed!");
+}
+</programlisting>
+ </example>
+ </refsect1>
+
+ <refsect1>
+ <title>Importing Native Modules</title>
+ <para>Seed ships with a number of (link!) native modules, which provide access to various parts of the system which GObject-Introspection cannot provide proper metadata for. An application developer could also decide to write performance-critical parts of their code as a native Seed module, as well, as one of the numerous ways to interface C with Seed.</para>
+ <para>Native modules are loaded just like GObject-Introspection namespaces, except as toplevel objects on "imports", instead of "imports.gi". For example, to load the readline module that ships with Seed, one could:</para>
+
+ <example>
+ <title>Loading the native module "readline"</title>
+<programlisting>
+readline = imports.readline;
+</programlisting>
+ </example>
+
+ <para>Seed searches the imports search path for native modules; if it finds a file with the given name, the prefix "seed_" and the same suffix as is used for shared libraries on your system (.so on Linux, .dylib on Mac OS X, etc.), it will assume this is a native module and load and initialize it as such. For example, the readline module loaded above is named <filename>seed_readline.so</filename> on a recent Linux machine.</para>
+
+ </refsect1>
+
+</refentry>
diff --git a/doc/reference/introduction.sgml b/doc/reference/introduction.sgml
new file mode 100644
index 0000000..8102888
--- /dev/null
+++ b/doc/reference/introduction.sgml
@@ -0,0 +1,19 @@
+<refentry id="seed-introduction" revision="04 Jul 2009">
+<refmeta>
+<refentrytitle>Introduction</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>SEED Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Introduction</refname>
+<refpurpose>
+What Seed is all about
+</refpurpose>
+ </refnamediv>
+
+<para>
+Seed is a library and interpreter, dynamically bridging (through gobject-introspection) the WebKit JavaScriptCore engine with the GObject type system. In a more concrete sense, Seed enables you to immediately write applications around a significant portion of the GNOME platform, and easily embed JavaScript as a scripting language in your GObject library. Seed is built around the idea of "minimal-platform", in that it seems a theoretically ideal GNOME development language provides no platform of its own, but instead seamlessly integrates with the already quite large GNOME platform.
+</para>
+
+</refentry>
diff --git a/doc/reference/seed-docs.sgml b/doc/reference/seed-docs.sgml
new file mode 100644
index 0000000..741f0fa
--- /dev/null
+++ b/doc/reference/seed-docs.sgml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>Seed Reference Manual</title>
+ <releaseinfo>
+ Documentation for Seed &version;.
+ The latest version of this documentation can be found on-line at
+ <ulink role="online-location" url="http://library.gnome.org/devel/seed/unstable/">http://library.gnome.org/devel/seed/unstable/</ulink>.
+ </releaseinfo>
+ </bookinfo>
+
+ <part id="seed">
+ <title>Seed Overview</title>
+ <xi:include href="introduction.sgml"/>
+ <xi:include href="building.sgml"/>
+ <xi:include href="contact.sgml"/>
+ </part>
+
+ <part id="js">
+ <title>Seed JavaScript Reference</title>
+ <para>This is the documentation for the JavaScript runtime side of Seed.</para>
+ <xi:include href="imports.sgml" />
+ </part>
+
+ <part id="api">
+ <title>Seed API Reference</title>
+ <para>This is the documentation for the C API of Seed, used for embedding, and creating native C modules.</para>
+ <xi:include href="xml/seed-main.xml"/>
+ <xi:include href="xml/seed-context.xml"/>
+ <xi:include href="xml/seed-eval.xml"/>
+ <xi:include href="xml/seed-exception.xml"/>
+ <xi:include href="xml/seed-signals.xml"/>
+ <chapter id="types">
+ <title>Values and Type Conversion</title>
+ <xi:include href="xml/seed-typeconversion.xml"/>
+ <xi:include href="xml/seed-nativetypes.xml"/>
+ <xi:include href="xml/seed-object.xml"/>
+ </chapter>
+ <xi:include href="xml/seed-nativefuncs.xml"/>
+ <xi:include href="xml/seed-jsclass.xml"/>
+ <xi:include href="xml/seed-closure.xml"/>
+ <xi:include href="xml/seed-modules.xml"/>
+ </part>
+
+ <part id="modules">
+ <title>Seed Module Reference</title>
+ <para>This is the documentation for the various modules included with Seed.</para>
+ <xi:include href="../modules/readline/readline.xml"/>
+ <xi:include href="../modules/sqlite/sqlite.xml"/>
+ <xi:include href="../modules/gtkbuilder/gtkbuilder.xml"/>
+ <xi:include href="../modules/sandbox/sandbox.xml"/>
+ </part>
+
+ <index>
+ <title>Index</title>
+ </index>
+</book>
diff --git a/doc/reference/seed-overrides.txt b/doc/reference/seed-overrides.txt
new file mode 100644
index 0000000..54311e0
--- /dev/null
+++ b/doc/reference/seed-overrides.txt
@@ -0,0 +1,41 @@
+# These are manually-edited to override or add declarations to those scanned
+# from the Seed header files.
+
+
+<STRUCT>
+<NAME>SeedEngine</NAME>
+struct SeedEngine
+{
+ JSGlobalContextRef context;
+ JSObjectRef global;
+ gchar **search_path;
+
+ JSContextGroupRef group;
+};
+</STRUCT>
+
+<STRUCT>
+<NAME>SeedScript</NAME>
+struct SeedScript
+{
+ JSStringRef script;
+ JSValueRef exception;
+
+ JSStringRef source_url;
+ gint line_number;
+};
+</STRUCT>
+
+<STRUCT>
+<NAME>SeedClosure</NAME>
+struct SeedClosure
+{
+ GClosure closure;
+
+ JSObjectRef function;
+ JSValueRef user_data;
+
+ GType return_type;
+ gchar *description;
+};
+</STRUCT>
diff --git a/doc/reference/seed-sections.txt b/doc/reference/seed-sections.txt
new file mode 100644
index 0000000..b5817cb
--- /dev/null
+++ b/doc/reference/seed-sections.txt
@@ -0,0 +1,189 @@
+<INCLUDE>seed/seed.h</INCLUDE>
+
+<SECTION>
+<TITLE>Initialization</TITLE>
+<FILE>seed-main</FILE>
+SeedEngine
+seed_init
+seed_init_with_context_group
+seed_engine_set_search_path
+seed_engine_get_search_path
+</SECTION>
+
+<SECTION>
+<TITLE>Contexts</TITLE>
+<FILE>seed-context</FILE>
+SeedContext
+SeedGlobalContext
+SeedContextGroup
+seed_context_create
+seed_context_ref
+seed_context_unref
+seed_context_collect
+seed_context_get_global_object
+seed_prepare_global_context
+seed_importer_add_global
+seed_importer_set_search_path
+</SECTION>
+
+<SECTION>
+<TITLE>Evaluation</TITLE>
+<FILE>seed-eval</FILE>
+SeedScript
+seed_make_script
+seed_evaluate
+seed_simple_evaluate
+seed_script_new_from_file
+seed_script_exception
+seed_script_destroy
+</SECTION>
+
+<SECTION>
+<TITLE>Exceptions</TITLE>
+<FILE>seed-exception</FILE>
+SeedException
+seed_make_exception
+seed_exception_get_name
+seed_exception_get_message
+seed_exception_get_line
+seed_exception_get_file
+seed_exception_to_string
+</SECTION>
+
+<SECTION>
+<TITLE>Signals</TITLE>
+<FILE>seed-signals</FILE>
+seed_signal_connect
+seed_signal_connect_value
+</SECTION>
+
+<SECTION>
+<TITLE>Native Type Conversion</TITLE>
+<FILE>seed-typeconversion</FILE>
+SeedValue
+SeedType
+seed_make_undefined
+seed_make_null
+seed_value_to_boolean
+seed_value_from_boolean
+seed_value_to_uint
+seed_value_from_uint
+seed_value_to_int
+seed_value_from_int
+seed_value_to_char
+seed_value_from_char
+seed_value_to_uchar
+seed_value_from_uchar
+seed_value_to_long
+seed_value_from_long
+seed_value_to_ulong
+seed_value_from_ulong
+seed_value_to_int64
+seed_value_from_int64
+seed_value_to_uint64
+seed_value_from_uint64
+seed_value_to_float
+seed_value_from_float
+seed_value_to_double
+seed_value_from_double
+seed_value_to_string
+seed_value_from_string
+seed_value_from_binary_string
+seed_value_to_object
+seed_value_from_object
+seed_value_to_filename
+seed_value_from_filename
+seed_value_to_format
+seed_pointer_get_pointer
+seed_make_pointer
+SeedString
+seed_string_ref
+seed_string_unref
+seed_string_get_maximum_size
+seed_string_to_utf8_buffer
+seed_string_is_equal
+seed_string_is_equal_utf8
+</SECTION>
+
+<SECTION>
+<TITLE>Operating on Native Types</TITLE>
+<FILE>seed-nativetypes</FILE>
+seed_value_unprotect
+seed_value_protect
+seed_value_is_undefined
+seed_value_is_null
+seed_value_is_function
+seed_value_is_number
+seed_value_is_string
+seed_value_is_object_of_class
+seed_value_is_object
+seed_value_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>JS Objects</TITLE>
+<FILE>seed-object</FILE>
+SeedObject
+seed_make_object
+seed_make_array
+seed_object_call
+seed_object_set_property_at_index
+seed_object_get_property_at_index
+seed_object_is_of_class
+seed_object_get_private
+seed_object_set_private
+seed_object_get_property
+seed_object_set_property
+seed_object_get_prototype
+seed_object_copy_property_names
+SeedObjectInitializeCallback
+SeedObjectFinalizeCallback
+SeedObjectHasPropertyCallback
+SeedObjectGetPropertyCallback
+SeedObjectSetPropertyCallback
+SeedObjectDeletePropertyCallback
+SeedObjectGetPropertyNamesCallback
+SeedObjectCallAsFunctionCallback
+SeedObjectHasInstanceCallback
+SeedObjectConvertToTypeCallback
+SeedObjectCallAsConstructorCallback
+</SECTION>
+
+<SECTION>
+<TITLE>Native Functions</TITLE>
+<FILE>seed-nativefuncs</FILE>
+SeedFunctionCallback
+seed_make_function
+seed_create_function
+</SECTION>
+
+<SECTION>
+<TITLE>JavaScript Classes</TITLE>
+<FILE>seed-jsclass</FILE>
+SeedPropertyAttributes
+SeedClassAttributes
+SeedClass
+seed_empty_class
+seed_create_class
+seed_make_constructor
+</SECTION>
+
+<SECTION>
+<TITLE>SeedClosure</TITLE>
+<FILE>seed-closure</FILE>
+SeedClosure
+seed_closure_new
+seed_closure_get_callable
+seed_closure_invoke
+seed_closure_invoke_with_context
+seed_closure_warn_exception
+</SECTION>
+
+<SECTION>
+<TITLE>Modules</TITLE>
+<FILE>seed-modules</FILE>
+CHECK_ARG_COUNT
+DEFINE_ENUM_MEMBER
+DEFINE_ENUM_MEMBER_EXT
+SeedModuleInitCallback
+</SECTION>
diff --git a/doc/reference/seed.types b/doc/reference/seed.types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/reference/seed.types
diff --git a/doc/reference/tmpl/seed-closure.sgml b/doc/reference/tmpl/seed-closure.sgml
new file mode 100644
index 0000000..fad2dbd
--- /dev/null
+++ b/doc/reference/tmpl/seed-closure.sgml
@@ -0,0 +1,89 @@
+<!-- ##### SECTION Title ##### -->
+Using JavaScript closures
+
+<!-- ##### SECTION Short_Description ##### -->
+Creating and invoking closures over JavaScript functions using GClosure
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT SeedClosure ##### -->
+<para>
+
+</para>
+
+@closure:
+@function:
+@user_data:
+@return_type:
+@description:
+
+<!-- ##### FUNCTION seed_closure_new ##### -->
+<para>
+
+</para>
+
+@ctx:
+@function:
+@user_data:
+@description:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_closure_get_callable ##### -->
+<para>
+
+</para>
+
+@c:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_closure_invoke ##### -->
+<para>
+
+</para>
+
+@closure:
+@args:
+@argc:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_closure_invoke_with_context ##### -->
+<para>
+
+</para>
+
+@ctx:
+@closure:
+@args:
+@argc:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_closure_warn_exception ##### -->
+<para>
+
+</para>
+
+@c:
+@ctx:
+@exception:
+
+
diff --git a/doc/reference/tmpl/seed-context.sgml b/doc/reference/tmpl/seed-context.sgml
new file mode 100644
index 0000000..edf9908
--- /dev/null
+++ b/doc/reference/tmpl/seed-context.sgml
@@ -0,0 +1,124 @@
+<!-- ##### SECTION Title ##### -->
+Working with Contexts
+
+<!-- ##### SECTION Short_Description ##### -->
+Self-contained JavaScript execution environments
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A #SeedContext provides a complete "universe" for the execution of JavaScript. You can use seed_context_create() to create a sandboxed context that lacks the import system, so it can be used to execute somewhat untrusted JavaScript (as it has no way to access the rest of your system). You can also expose the default set of globals (including "print", "imports", and "Seed") to create more powerful but still self-contained environments within which to execute code.
+</para>
+
+<example>
+<title>Using a Seed context as a form of sandboxing</title>
+<programlisting>
+...
+ctx = seed_context_create(NULL, NULL);
+script = seed_make_script(ctx, "print(imports)", NULL, 0);
+// nothing is printed, because imports is undefined, because we're in a sandbox
+...
+</programlisting>
+</example>
+
+<para>The <link linkend="Sandbox-module">sandbox</link> module provides access to this system from the JavaScript side of Seed.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF SeedContext ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF SeedGlobalContext ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF SeedContextGroup ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_context_create ##### -->
+<para>
+
+</para>
+
+@group:
+@global_class:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_context_ref ##### -->
+<para>
+
+</para>
+
+@ctx:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_context_unref ##### -->
+<para>
+
+</para>
+
+@ctx:
+
+
+<!-- ##### FUNCTION seed_context_collect ##### -->
+<para>
+
+</para>
+
+@ctx:
+
+
+<!-- ##### FUNCTION seed_context_get_global_object ##### -->
+<para>
+
+</para>
+
+@ctx:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_prepare_global_context ##### -->
+<para>
+
+</para>
+
+@ctx:
+
+
+<!-- ##### FUNCTION seed_importer_add_global ##### -->
+<para>
+
+</para>
+
+@ctx:
+@name:
+
+
+<!-- ##### FUNCTION seed_importer_set_search_path ##### -->
+<para>
+
+</para>
+
+@ctx:
+@search_path:
+
+
diff --git a/doc/reference/tmpl/seed-eval.sgml b/doc/reference/tmpl/seed-eval.sgml
new file mode 100644
index 0000000..f3fbecd
--- /dev/null
+++ b/doc/reference/tmpl/seed-eval.sgml
@@ -0,0 +1,125 @@
+<!-- ##### SECTION Title ##### -->
+Evaluating JavaScript
+
+<!-- ##### SECTION Short_Description ##### -->
+Creating and interpreting scripts
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Seed relies on WebKit's JavaScriptCore interpreter to actually evaluate snippets of JavaScript; however, it provides a handful of useful wrapper functions to quickly create and evaluate scripts. seed_make_script() and seed_evaluate() are the workhorse functions; these allow you to control every detail of the created script and its evaluation environment (including customizing the "this" object during evaluation, and setting a starting line number and filename from which the script originates). seed_simple_evaluate() provides an interface to execute a string of JavaScript without previously creating a #SeedScript, and, while requiring less supporting code, is less flexible.
+</para>
+
+<example>
+<title>Create and evaluate a string of JavaScript with seed_make_script()</title>
+<programlisting>
+SeedEngine * eng;
+&nbsp;
+...
+&nbsp;
+SeedScript * script;
+/* Create a simple #SeedScript */
+script = seed_make_script(eng->context, "print('Hello, world!')", NULL, 0);
+&nbsp;
+/* Evaluate the #SeedScript in the default context */
+seed_evaluate(eng->context, script, 0);
+&nbsp;
+...
+</programlisting>
+</example>
+
+<example>
+<title>Create and evaluate a string of JavaScript with seed_simple_evaluate()</title>
+<programlisting>
+SeedEngine * eng;
+&nbsp;
+...
+&nbsp;
+/* Evaluate a simple JavaScript snippet in the default context */
+seed_simple_evaluate(eng->context, "print('Hello, world!')", NULL);
+&nbsp;
+...
+</programlisting>
+</example>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT SeedScript ##### -->
+<para>
+
+</para>
+
+@script:
+@exception:
+@source_url:
+@line_number:
+
+<!-- ##### FUNCTION seed_make_script ##### -->
+<para>
+
+</para>
+
+@ctx:
+@js:
+@source_url:
+@line_number:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@s:
+@this_object:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_simple_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@source:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_new_from_file ##### -->
+<para>
+
+</para>
+
+@ctx:
+@file:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_exception ##### -->
+<para>
+
+</para>
+
+@s:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_destroy ##### -->
+<para>
+
+</para>
+
+@s:
+
+
diff --git a/doc/reference/tmpl/seed-exception.sgml b/doc/reference/tmpl/seed-exception.sgml
new file mode 100644
index 0000000..55c6c38
--- /dev/null
+++ b/doc/reference/tmpl/seed-exception.sgml
@@ -0,0 +1,145 @@
+<!-- ##### SECTION Title ##### -->
+Exception Handling
+
+<!-- ##### SECTION Short_Description ##### -->
+Throwing and catching exceptions
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Seed uses exceptions as a method of handling runtime errors within scripts. An exception consists of a name (a list of commonly-used exception names is below), a message, detailing the error, and the line number and filename from which the exception was raised. If Seed cannot determine from where the exception was raised, the line number and filename will be undefined. seed_exception_to_string() provides a simple way to convert all of these into a consistent representation to display to users.
+</para>
+
+<para>
+All Seed callbacks take an exception argument; calling
+seed_make_exception() with this argument and the details you wish to
+fill it with will propogate that exception up the chain. Exceptions
+can be <emphasis>caught</emphasis> either by a try/catch block in the
+calling JavaScript, or by observing the exception property, dealing
+with it, and then clearing the exception.
+
+It is important to note that calling seed_make_exception() does not
+in fact <emphasis>throw</emphasis> the exception, but just creates an
+object which, when stored in the exception pointer passed to a callback,
+causes JSC to throw an exception once flow is returned.
+</para>
+
+<example>
+<title>Throw an exception, because <function>random_callback</function> was called with the wrong number of arguments</title>
+<programlisting>
+SeedValue random_callback(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ ...
+&nbsp;
+ if(argument_count != 1)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "wrong number of arguments; expected 1, got %Zd",
+ argument_count);
+ return seed_make_undefined(ctx);
+ }
+&nbsp;
+ ...
+}
+</programlisting>
+</example>
+
+<note>
+<title>Predefined Exception Names</title>
+<para>
+<itemizedlist>
+ <listitem><emphasis>InvalidPropertyValue</emphasis> - a property was set to a value out of range</listitem>
+ <listitem><emphasis>PropertyError</emphasis> - a warning occurred in GLib while trying to set a property</listitem>
+ <listitem><emphasis>ArgumentError</emphasis> - a function was called with the wrong number of arguments</listitem>
+ <listitem><emphasis>ConversionError</emphasis> - one of the type conversion functions threw an exception</listitem>
+ <listitem><emphasis>TypeError</emphasis> - a required argument was of the wrong type</listitem>
+ <listitem><emphasis>SyntaxError</emphasis> - a syntax error was thrown from JavaScriptCore</listitem>
+ <listitem><emphasis>ParseError</emphasis> - a parsing error was thrown from JavaScriptCore (make sure you close all of your brackets!)</listitem>
+ <listitem><emphasis>ReferenceError</emphasis> - a reference error was thrown from JavaScriptCore (most likely, you tried to access a variable which was undefined)</listitem>
+</itemizedlist>
+</para>
+</note>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF SeedException ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_make_exception ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@name:
+@message:
+@...:
+
+
+<!-- ##### FUNCTION seed_exception_get_name ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_exception_get_message ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_exception_get_line ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_exception_get_file ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_exception_to_string ##### -->
+<para>
+
+</para>
+
+@ctx:
+@exception:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-jsclass.sgml b/doc/reference/tmpl/seed-jsclass.sgml
new file mode 100644
index 0000000..c0ea39b
--- /dev/null
+++ b/doc/reference/tmpl/seed-jsclass.sgml
@@ -0,0 +1,83 @@
+<!-- ##### SECTION Title ##### -->
+Creating JavaScript classes
+
+<!-- ##### SECTION Short_Description ##### -->
+Dealing with Seed class definitions and constructors
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Defining new Seed classes allows for implementing more complex
+behavior than possible with the traditional JavaScript object system
+and default class.
+
+When writing Seed modules, it is often the best pattern to define many
+of your types through classes and static functions/value.
+
+Please note that inside the finalize callback of a class, it is not
+legal to call any method requiring a #SeedContext (with the exception
+of protect/unprotect, though it is not guaranteed this will continue
+to work with future versions of JSCore).
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### ENUM SeedPropertyAttributes ##### -->
+<para>
+
+</para>
+
+@SEED_PROPERTY_ATTRIBUTE_NONE:
+@SEED_PROPERTY_ATTRIBUTE_READ_ONLY:
+@SEED_PROPERTY_ATTRIBUTE_DONT_ENUM:
+@SEED_PROPERTY_ATTRIBUTE_DONT_DELETE:
+
+<!-- ##### ENUM SeedClassAttributes ##### -->
+<para>
+
+</para>
+
+@SEED_CLASS_ATTRIBUTE_NONE:
+@SEED_CLASS_ATTRIBUTE_NO_SHARED_PROTOTYPE:
+
+<!-- ##### TYPEDEF SeedClass ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO seed_empty_class ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION seed_create_class ##### -->
+<para>
+
+</para>
+
+@def:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_constructor ##### -->
+<para>
+
+</para>
+
+@ctx:
+@klass:
+@constructor:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-main.sgml b/doc/reference/tmpl/seed-main.sgml
new file mode 100644
index 0000000..26fd9c7
--- /dev/null
+++ b/doc/reference/tmpl/seed-main.sgml
@@ -0,0 +1,94 @@
+<!-- ##### SECTION Title ##### -->
+Initialization
+
+<!-- ##### SECTION Short_Description ##### -->
+Overall setup of the Seed engine
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Before any other Seed functions can be used, you must initialize the engine, which creates an initial JavaScript context and sets up JavaScriptCore and GLib. To do this in most cases, you will use seed_init(), which will provide you with a #SeedEngine. Only one #SeedEngine is permitted per application; use a #SeedContext to sandbox code execution.
+</para>
+
+<example>
+<title>Very simple <function>main</function> function for a Seed program</title>
+<programlisting>
+int main (int argc, char **argv)
+{
+ SeedEngine * eng;
+ SeedScript * script;
+&nbsp;
+ /* Initialize the Seed engine */
+ eng = seed_init(&amp;argc, &amp;argv);
+&nbsp;
+ /* Create a simple #SeedScript */
+ script = seed_make_script(eng->context, "print('Hello, world!')", NULL, 0);
+&nbsp;
+ /* Evaluate the #SeedScript in the default context */
+ seed_evaluate(eng->context, script, 0);
+&nbsp;
+ g_free(script);
+ return 0;
+}
+</programlisting>
+</example>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT SeedEngine ##### -->
+<para>
+
+</para>
+
+@context:
+@global:
+@search_path:
+@group:
+
+<!-- ##### FUNCTION seed_init ##### -->
+<para>
+
+</para>
+
+@argc:
+@argv:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_init_with_context_group ##### -->
+<para>
+
+</para>
+
+@argc:
+@argv:
+@group:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_engine_set_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@path:
+
+
+<!-- ##### FUNCTION seed_engine_get_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-main.sgml.sgml b/doc/reference/tmpl/seed-main.sgml.sgml
new file mode 100644
index 0000000..463c7a4
--- /dev/null
+++ b/doc/reference/tmpl/seed-main.sgml.sgml
@@ -0,0 +1,226 @@
+<!-- ##### SECTION Title ##### -->
+seed-main.sgml
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION seed_init ##### -->
+<para>
+
+</para>
+
+@argc:
+@argv:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_init_with_context_group ##### -->
+<para>
+
+</para>
+
+@argc:
+@argv:
+@group:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_importer_add_global ##### -->
+<para>
+
+</para>
+
+@ctx:
+@name:
+
+
+<!-- ##### FUNCTION seed_importer_set_search_path ##### -->
+<para>
+
+</para>
+
+@ctx:
+@search_path:
+
+
+<!-- ##### FUNCTION seed_engine_set_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@path:
+
+
+<!-- ##### FUNCTION seed_engine_get_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
+<!-- ##### STRUCT SeedScript ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_make_script ##### -->
+<para>
+
+</para>
+
+@ctx:
+@js:
+@source_url:
+@line_number:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@s:
+@this:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_simple_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@source:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_new_from_file ##### -->
+<para>
+
+</para>
+
+@ctx:
+@file:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_exception ##### -->
+<para>
+
+</para>
+
+@s:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@callback:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_create_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@name:
+@callback:
+@object:
+
+
+<!-- ##### FUNCTION seed_make_constructor ##### -->
+<para>
+
+</para>
+
+@ctx:
+@class:
+@Param3:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_pointer_get_pointer ##### -->
+<para>
+
+</para>
+
+@ctx:
+@pointer:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedFunctionCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@function:
+@this_object:
+@argument_count:
+@arguments:
+@excecption:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedModuleInitCallback ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_signal_connect ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@signal:
+@script:
+
+
+<!-- ##### FUNCTION seed_signal_connect_value ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@signal:
+@function:
+@user_data:
+
+
diff --git a/doc/reference/tmpl/seed-modules.sgml b/doc/reference/tmpl/seed-modules.sgml
new file mode 100644
index 0000000..6528873
--- /dev/null
+++ b/doc/reference/tmpl/seed-modules.sgml
@@ -0,0 +1,146 @@
+<!-- ##### SECTION Title ##### -->
+Seed Modules
+
+<!-- ##### SECTION Short_Description ##### -->
+Native C modules for Seed
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Seed includes a simple system for creating C modules which can be loaded and manipulated from JavaScript. This is used for implementing performance-critical code closer to the silicon, as well as binding non-introspectable libraries in an attractive way.
+</para>
+
+<para>Numerous binding modules are included in the Seed repository; when writing a new native module, it would be wise to look over these before beginning, as they have many tidbits of useful knowledge for writing modules.</para>
+
+<example>
+<title>Very simple example C module</title>
+<programlisting>
+#include &lt;glib.h&gt;
+#include &lt;seed-module.h&gt;
+
+SeedObject seed_module_init(SeedEngine * eng)
+{
+ /* Say hello! */
+ g_print("Hello, Seed Module World!\n");
+&nbsp;
+ /* Return an empty object as the module's namespace */
+ return seed_make_object (eng->context, NULL, NULL);
+}
+</programlisting>
+</example>
+
+<para>Above is a C module which does absolutely nothing useful. When a module is loaded, seed_module_init() is called, which should have the signature of SeedModuleInitCallback(). You're passed the global #SeedEngine, and the value you return is the namespace for your module. Say, for example, you place a static function on that object:</para>
+
+<example>
+<title>C module with a function</title>
+<programlisting>
+#include &lt;glib.h&gt;
+#include &lt;seed-module.h&gt;
+
+/* Our function, with the signature of SeedFunctionCallback(); say hello! */
+SeedValue say_hello_to(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ guchar * name;
+&nbsp;
+ /* Check that only one argument was passed into the function.
+ CHECK_ARG_COUNT() is from seed-module.h, which you might find useful. */
+ CHECK_ARG_COUNT("hello.say_hello_to", 1);
+&nbsp;
+ /* Convert the first argument, a #SeedValue, to a C string */
+ name = seed_value_to_string(ctx, arguments[0], exception);
+&nbsp;
+ g_print("Hello, %s!\n", name);
+&nbsp;
+ g_free(name);
+&nbsp;
+ return seed_make_null(ctx);
+}
+&nbsp;
+/* Define an array of #seed_static_function */
+seed_static_function gettext_funcs[] = {
+ {"say_hello_to", say_hello_to, 0}
+};
+&nbsp;
+SeedObject seed_module_init(SeedEngine * eng)
+{
+ SeedGlobalContext ctx = eng->context;
+&nbsp;
+ /* Create a new class definition with our array of static functions */
+ seed_class_definition ns_class_def = seed_empty_class;
+ ns_class_def.static_functions = example_funcs;
+&nbsp;
+ /* Create a class from the class definition we just created */
+ SeedClass ns_class = seed_create_class(&amp;ns_class_def);
+&nbsp;
+ /* Instantiate the class; this instance will be the namespace we return */
+ ns_ref = seed_make_object (ctx, ns_class, NULL);
+ seed_value_protect (ctx, ns_ref);
+&nbsp;
+ return ns_ref;
+}
+</programlisting>
+</example>
+
+<para>After building and installing this module (look in the Seed build system for examples of how to get this to work, as well as a copy of seed-module.h, which will be very useful), it will be loadable with the normal Seed import system. Assuming it's installed as libseed_hello.so:</para>
+
+<example>
+<title>Utilize our second example C module from JavaScript</title>
+<programlisting>
+hello = imports.hello;
+
+hello.say_hello_to("Tim");
+</programlisting>
+</example>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO CHECK_ARG_COUNT ##### -->
+<para>
+
+</para>
+
+@name:
+@argnum:
+
+
+<!-- ##### MACRO DEFINE_ENUM_MEMBER ##### -->
+<para>
+
+</para>
+
+@holder:
+@member:
+
+
+<!-- ##### MACRO DEFINE_ENUM_MEMBER_EXT ##### -->
+<para>
+
+</para>
+
+@holder:
+@name:
+@val:
+
+
+<!-- ##### USER_FUNCTION SeedModuleInitCallback ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-nativefuncs.sgml b/doc/reference/tmpl/seed-nativefuncs.sgml
new file mode 100644
index 0000000..e09b611
--- /dev/null
+++ b/doc/reference/tmpl/seed-nativefuncs.sgml
@@ -0,0 +1,100 @@
+<!-- ##### SECTION Title ##### -->
+Creating native functions
+
+<!-- ##### SECTION Short_Description ##### -->
+C functions as first-class JavaScript objects
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Exposing native C functions to JavaScript is one of the fundamental use cases for libseed when used in an embedding environment; if your application cannot be introspected, or you only have a small number of functions to expose, this is the simplest way to do that.
+</para>
+
+<para>
+All native C callbacks should have the prototype of SeedFunctionCallback().
+</para>
+
+<example>
+<title>Simple C program which embeds Seed with one exposed function</title>
+<programlisting>
+#include &lt;glib.h&gt;
+#include &lt;seed.h&gt;
+&nbsp;
+/* Our function, with the signature of SeedFunctionCallback(); say hello! */
+SeedValue hello_world(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ g_print("Hello, World!\n");
+ return seed_make_null(ctx);
+}
+&nbsp;
+int main(gint argc, gchar ** argv)
+{
+ SeedEngine * eng;
+&nbsp;
+ /* Initialize the Seed engine */
+ eng = seed_init(&amp;argc, &amp;argv);
+&nbsp;
+ /* Expose a C function to JavaScript */
+ seed_create_function(eng-&gt;context, "hello_world",
+ (SeedFunctionCallback)hello_world,
+ eng-&gt;global);
+&nbsp;
+ /* Call the newly created JavaScript function */
+ seed_simple_evaluate(eng-&gt;context, "hello_world()", NULL);
+&nbsp;
+ return 0;
+}
+</programlisting>
+</example>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### USER_FUNCTION SeedFunctionCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@function:
+@this_object:
+@argument_count:
+@arguments:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@func:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_create_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@name:
+@func:
+@obj:
+
+
diff --git a/doc/reference/tmpl/seed-nativetypes.sgml b/doc/reference/tmpl/seed-nativetypes.sgml
new file mode 100644
index 0000000..e28fc1a
--- /dev/null
+++ b/doc/reference/tmpl/seed-nativetypes.sgml
@@ -0,0 +1,121 @@
+<!-- ##### SECTION Title ##### -->
+Operating on JavaScript types
+
+<!-- ##### SECTION Short_Description ##### -->
+Determining the type of a SeedValue
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### FUNCTION seed_value_unprotect ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+
+
+<!-- ##### FUNCTION seed_value_protect ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+
+
+<!-- ##### FUNCTION seed_value_is_undefined ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_null ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_number ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_string ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_object_of_class ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@klass:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_is_object ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_get_type ##### -->
+<para>
+
+</para>
+
+@ctx:
+@value:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-object.sgml b/doc/reference/tmpl/seed-object.sgml
new file mode 100644
index 0000000..ba8635a
--- /dev/null
+++ b/doc/reference/tmpl/seed-object.sgml
@@ -0,0 +1,285 @@
+<!-- ##### SECTION Title ##### -->
+Working with JavaScript objects
+
+<!-- ##### SECTION Short_Description ##### -->
+Using properties, constructing objects, etc.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF SeedObject ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_make_object ##### -->
+<para>
+
+</para>
+
+@ctx:
+@klass:
+@private_object:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_array ##### -->
+<para>
+
+</para>
+
+@ctx:
+@elements:
+@num_elements:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_call ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@this_object:
+@argument_count:
+@arguments:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_set_property_at_index ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@index:
+@value:
+@exception:
+
+
+<!-- ##### FUNCTION seed_object_get_property_at_index ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@index:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_is_of_class ##### -->
+<para>
+
+</para>
+
+@ctx:
+@obj:
+@klass:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_get_private ##### -->
+<para>
+
+</para>
+
+@object:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_set_private ##### -->
+<para>
+
+</para>
+
+@object:
+@value:
+
+
+<!-- ##### FUNCTION seed_object_get_property ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_set_property ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@name:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_get_prototype ##### -->
+<para>
+
+</para>
+
+@ctx:
+@obj:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_object_copy_property_names ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectInitializeCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+
+
+<!-- ##### USER_FUNCTION SeedObjectFinalizeCallback ##### -->
+<para>
+
+</para>
+
+@object:
+
+
+<!-- ##### USER_FUNCTION SeedObjectHasPropertyCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@string:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectGetPropertyCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@property_name:
+@e:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectSetPropertyCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@property_name:
+@value:
+@e:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectDeletePropertyCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@property_name:
+@e:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectGetPropertyNamesCallback ##### -->
+<para>
+
+</para>
+
+@void:
+
+
+<!-- ##### USER_FUNCTION SeedObjectCallAsFunctionCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@function:
+@this_object:
+@argument_count:
+@arguments:
+@exception:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectHasInstanceCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@constructor:
+@instance_p:
+@exception:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectConvertToTypeCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@type:
+@exception:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedObjectCallAsConstructorCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@constructor:
+@argument_count:
+@arguments:
+@exception:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-signals.sgml b/doc/reference/tmpl/seed-signals.sgml
new file mode 100644
index 0000000..17eba9f
--- /dev/null
+++ b/doc/reference/tmpl/seed-signals.sgml
@@ -0,0 +1,45 @@
+<!-- ##### SECTION Title ##### -->
+GObject Signals
+
+<!-- ##### SECTION Short_Description ##### -->
+Connecting JavaScript functions to signals
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### FUNCTION seed_signal_connect ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@signal:
+@script:
+
+
+<!-- ##### FUNCTION seed_signal_connect_value ##### -->
+<para>
+
+</para>
+
+@ctx:
+@object:
+@signal:
+@function:
+@user_data:
+
+
diff --git a/doc/reference/tmpl/seed-string.sgml b/doc/reference/tmpl/seed-string.sgml
new file mode 100644
index 0000000..c3e4d06
--- /dev/null
+++ b/doc/reference/tmpl/seed-string.sgml
@@ -0,0 +1,10 @@
+<!-- ##### SECTION Title ##### -->
+SeedString
+
+<!-- ##### SECTION Short_Description ##### -->
+This one should go away eventually
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
diff --git a/doc/reference/tmpl/seed-typeconversion.sgml b/doc/reference/tmpl/seed-typeconversion.sgml
new file mode 100644
index 0000000..084a8d3
--- /dev/null
+++ b/doc/reference/tmpl/seed-typeconversion.sgml
@@ -0,0 +1,474 @@
+<!-- ##### SECTION Title ##### -->
+Type Conversion
+
+<!-- ##### SECTION Short_Description ##### -->
+Moving between JavaScript and C intrinsic types
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Long description
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF SeedValue ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM SeedType ##### -->
+<para>
+
+</para>
+
+@SEED_TYPE_UNDEFINED:
+@SEED_TYPE_NULL:
+@SEED_TYPE_BOOLEAN:
+@SEED_TYPE_NUMBER:
+@SEED_TYPE_STRING:
+@SEED_TYPE_OBJECT:
+
+<!-- ##### FUNCTION seed_make_undefined ##### -->
+<para>
+
+</para>
+
+@ctx:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_null ##### -->
+<para>
+
+</para>
+
+@ctx:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_boolean ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_boolean ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_uint ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_uint ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_int ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_int ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_char ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_char ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_uchar ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_uchar ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_long ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_long ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_ulong ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_ulong ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_int64 ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_int64 ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_uint64 ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_uint64 ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_float ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_float ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_double ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_double ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_string ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_string ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_binary_string ##### -->
+<para>
+
+</para>
+
+@ctx:
+@bytes:
+@n_bytes:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_object ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_object ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_filename ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_from_filename ##### -->
+<para>
+
+</para>
+
+@ctx:
+@val:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_value_to_format ##### -->
+<para>
+
+</para>
+
+@ctx:
+@format:
+@values:
+@exception:
+@...:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_pointer_get_pointer ##### -->
+<para>
+
+</para>
+
+@ctx:
+@pointer:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_make_pointer ##### -->
+<para>
+
+</para>
+
+@ctx:
+@pointer:
+@Returns:
+
+
+<!-- ##### TYPEDEF SeedString ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_string_ref ##### -->
+<para>
+
+</para>
+
+@string:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_string_unref ##### -->
+<para>
+
+</para>
+
+@string:
+
+
+<!-- ##### FUNCTION seed_string_get_maximum_size ##### -->
+<para>
+
+</para>
+
+@string:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_string_to_utf8_buffer ##### -->
+<para>
+
+</para>
+
+@string:
+@buffer:
+@buffer_size:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_string_is_equal ##### -->
+<para>
+
+</para>
+
+@a:
+@b:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_string_is_equal_utf8 ##### -->
+<para>
+
+</para>
+
+@a:
+@b:
+@Returns:
+
+
diff --git a/doc/reference/tmpl/seed-unused.sgml b/doc/reference/tmpl/seed-unused.sgml
new file mode 100644
index 0000000..0516322
--- /dev/null
+++ b/doc/reference/tmpl/seed-unused.sgml
@@ -0,0 +1,62 @@
+<!-- ##### SECTION ./tmpl/seed-main.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/seed-main.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/seed-main.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/seed-main.sgml.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/seed-main.sgml.sgml:Title ##### -->
+seed-main.sgml
+
+
+<!-- ##### SECTION ./tmpl/seed-string.sgml:Long_Description ##### -->
+<para>
+Long description
+</para>
+
+
+<!-- ##### SECTION ./tmpl/seed-string.sgml:Short_Description ##### -->
+This one should go away eventually
+
+
+<!-- ##### SECTION ./tmpl/seed-string.sgml:Title ##### -->
+SeedString
+
+
+<!-- ##### SECTION ./tmpl/seed.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/seed.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/seed.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/seed.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/seed.sgml:Title ##### -->
+seed
+
+
diff --git a/doc/reference/tmpl/seed.sgml b/doc/reference/tmpl/seed.sgml
new file mode 100644
index 0000000..28a745c
--- /dev/null
+++ b/doc/reference/tmpl/seed.sgml
@@ -0,0 +1,160 @@
+<!-- ##### SECTION Title ##### -->
+seed
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION seed_init ##### -->
+<para>
+
+</para>
+
+@argc:
+@argv:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_engine_set_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@path:
+
+
+<!-- ##### FUNCTION seed_engine_get_search_path ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
+<!-- ##### STRUCT SeedScript ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION seed_make_script ##### -->
+<para>
+
+</para>
+
+@ctx:
+@js:
+@source_url:
+@line_number:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@s:
+@this:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_simple_evaluate ##### -->
+<para>
+
+</para>
+
+@ctx:
+@source:
+@exception:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_new_from_file ##### -->
+<para>
+
+</para>
+
+@ctx:
+@file:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_script_exception ##### -->
+<para>
+
+</para>
+
+@s:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_create_function ##### -->
+<para>
+
+</para>
+
+@ctx:
+@name:
+@callback:
+@object:
+
+
+<!-- ##### FUNCTION seed_make_constructor ##### -->
+<para>
+
+</para>
+
+@ctx:
+@class:
+@Param3:
+@Returns:
+
+
+<!-- ##### FUNCTION seed_pointer_get_pointer ##### -->
+<para>
+
+</para>
+
+@ctx:
+@pointer:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION SeedFunctionCallback ##### -->
+<para>
+
+</para>
+
+@ctx:
+@function:
+@this_object:
+@argument_count:
+@arguments:
+@exception:
+
+
+<!-- ##### USER_FUNCTION SeedModuleInitCallback ##### -->
+<para>
+
+</para>
+
+@eng:
+@Returns:
+
+
diff --git a/doc/reference/version.xml b/doc/reference/version.xml
new file mode 100644
index 0000000..944880f
--- /dev/null
+++ b/doc/reference/version.xml
@@ -0,0 +1 @@
+3.2.0
diff --git a/doc/reference/version.xml.in b/doc/reference/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/doc/reference/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/doc/runtime.html.in b/doc/runtime.html.in
new file mode 100644
index 0000000..96511fe
--- /dev/null
+++ b/doc/runtime.html.in
@@ -0,0 +1,290 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed Runtime Documentation</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="sh.js"></script>
+ <script type="text/javascript" src="sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="sh.css" />
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed Runtime</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section"><b>imports</b></div>
+<p>
+An <b>imports</b> object is defined globally in every Seed context. This provides access to GObject Introspection namespaces, C extension modules, and other JavaScript files, as explained in the next three sections.
+</p>
+<p>
+The default path to search for native modules and JavaScript files to be imported can be set as an array of strings on <b>imports.searchPath</b>:
+</p>
+<pre class="sh_javascript">
+imports.searchPath.push("/opt/javascript");
+</pre>
+<p>
+This will add /opt/javascript as the last location to search when looking for native Seed modules and JavaScript files. The default search path includes the current directory and the directory into which Seed's default native modules are installed.
+</p>
+<div class="section"><b>imports.gi</b></div>
+<p>
+Provides access to all installed gobject-introspection <i>namespaces</i>. <b>imports.gi.<i>namespace</i></b> will import functions and constructors from the given namespace and return an object providing them.
+</p>
+<p>
+Importing is done once per process, and any subsequent accesses to the same namespace return the <i>same</i> object, and are very cheap as a result.
+</p>
+<pre class="sh_javascript">
+Gtk = imports.gi.Gtk;
+Gtk.init(null, null);
+</pre>
+<p>A particular version of a namespace can be loaded by setting <i>before</i> it is first requested, by setting the <b>imports.gi.versions.<i>namespace</i></b> object to a string representing the version number to load:
+</p>
+<pre class="sh_javascript">
+imports.gi.versions.Clutter = "0.8";
+Clutter = imports.gi.Clutter; // The returned object represents clutter-0.8
+</pre>
+<div class="section"><b>Importing modules and JavaScript files</b></div>
+<p>
+Native C modules and JavaScript files can be imported in a similar fashion, by accessing <b>imports.<i>file</i></b>. Notice that the suffix (most likely .so or .js, respectively) is not included in the file name when requesting it, and keep this in mind when naming files.
+</p>
+<p>
+First, if the file name is actually a <i>directory</i>, an object is returned that represents the contents of that directory, which behaves exactly as <i>imports</i> does in regards to importing native modules and JavaScript files. For example, say you have the directory <i>js</i>, which contains <i>score.js</i>:
+</p>
+<pre class="sh_javascript">
+score = imports.js.score;
+</pre>
+<p>This will import score.js, just as described below.</p>
+<p>
+If the file is <i>not</i> a directory, but happens to have your system's shared library suffix, the native module is loaded, and the module object is returned, similar to GObject Introspection namespace imports:
+</p>
+<pre class="sh_javascript">
+readline = imports.readline;
+readline.readline(">");
+</pre>
+<p>
+Otherwise, Seed assumes that the file is a JavaScript file. If the file is found in the current path, it is evaluated (in a <b>separate</b> Seed context, so any state in the file it is imported from is not accessible), and the global object is returned. Keep in mind that it is possible to accidentally import a non-JavaScript file, as the extension is not taken into account.
+</p>
+<p>Imagine we have the file test_file.js:</p>
+<pre class="sh_javascript">
+test_string = "Hello, world!";
+</pre>
+<p>And another file, which we evaluate with <i>seed</i>:</p>
+<pre class="sh_javascript">
+test_file = imports.test_file;
+print(test_file.test_string);
+</pre>
+<p>This will print "Hello, world!", as expected. Notice how, unlike in versions of Seed prior to 0.5, the file is not actually evaluated in the context of the importing file, so its toplevel objects are not globally available.</p>
+<div class="section"><b>print</b>(value)</div>
+<p>
+Prints, to standard output, a representation of <i>value</i>. Number types are printed as floating-point values (with 6 decimal places); strings are printed as-is; objects are printed as <code>[object <i>type</i>]</code>.
+</p>
+<pre class="sh_javascript">
+print(5);
+print("This is a test!".replace(" is ", " was "));
+
+var win = new Gtk.Window();
+print(win);
+</pre>
+<div class="section"><b>printf</b>(format, ...)</div>
+<div class="section"><b>Seed.sprintf</b>(format, ...)</div>
+<p>
+<code>printf</code> prints, to standard output, a string formatted as specified by <i>format</i>. Following <i>format</i> should be values to substitute, as in C's <code>printf</code>. Most standard printf format strings should work.
+</p>
+<p>
+<code>sprintf</code> returns the string, instead of printing it.
+</p>
+<pre class="sh_javascript">
+printf("A number: %d\n", 5);
+printf("One third is approximately %.3f\n", 1/3);
+printf("%d %s %d\n", 2, " is not ", 5);
+
+var my_string = Seed.sprintf("%d + %d = %d", 2, 3, 2+3);
+var my_name = printf("[%s] is %d characters long!\n",
+ my_string, my_string.length);
+</pre>
+<div class="section"><b>Seed.check_syntax</b>(code)</div>
+<p>
+Examines a segment of Javascript, looking for syntax errors. If errors are found, an exception is thrown, which can be caught with a try/catch block. You can examine the location of the syntax error with the <i>line</i> property of the returned exception.
+</p>
+<pre class="sh_javascript">
+try{
+ Seed.check_syntax("234[asdf");
+}
+catch(e){
+ print("Something horrible happened on line " + e.line);
+}
+</pre>
+<div class="section"><b>Seed.stringify</b>(object)</div>
+<p>
+Returns a string representing the entire contents of <i>object</i> in a pretty-printed fashion, like that of JSON.
+</p>
+<pre class="sh_javascript">
+proto = Seed.prototype(Gtk.Window);
+method = Seed.introspect(proto.translate_coordinates);
+print(Seed.stringify(method));
+</pre>
+<div class="section"><b>Seed.argv</b></div>
+<p>
+An array representing the arguments passed to the <code>seed</code> interpreter.
+</p>
+<div class="section"><b>Seed.quit</b>(<i>exitcode</i>)</div>
+<p>
+Terminates the execution of the Seed interpreter, returning <i>exitcode</i> as the exit value of the program.
+</p>
+<div class="section">object.<b>signal.<i>signame</i>.connect</b>(function<i>, user_data</i>)<br/>
+object.<b>connect</b>(signame, function, <i>user_data</i>)</div>
+<p>
+Connects <i>function</i> to the signal, <i>signame</i>, on <i>object</i>. Any GObject signal will work. If present, user_data is passed as the last argument to the callback.
+</p>
+<pre class="sh_javascript">
+function button_clicked(){
+ print("You pushed me!!");
+}
+
+var button = new Gtk.Button();
+button.signal.clicked.connect(button_clicked);
+</pre>
+<p>
+The second form is useful if you want to connect to detailed signals; for example, <b>notify::</b> signals on an object's properties:
+</p>
+<pre class="sh_javascript">
+function handle_opacity_change(obj, gobject, user_data){
+ print("Window " + obj + "'s opacity was changed!");
+}
+
+win = new Gtk.Window();
+win.signal.connect("notify::opacity", handle_opacity_change);
+</pre>
+<div class="section"><b>Exceptions</b></div>
+<p>
+Seed throws Javascript exceptions for errors in the GObject layer; our custom exception types are as follows:</p>
+<ul>
+<li><b>InvalidPropertyValue</b> - a property was set to a value out of range</li>
+<li><b>PropertyError</b> - a warning occurred in GLib while trying to set a property</li>
+<li><b>ArgumentError</b> - a function was called with the wrong number of arguments</li>
+<li><b>ConversionError</b> - one of the type conversion functions threw an exception </li>
+<li><b>TypeError</b> - a required argument was of the wrong type </li>
+<li><b>SyntaxError</b> - a syntax error was thrown from JavaScriptCore</li>
+<li><b>ParseError</b> - a parsing error was thrown from JavaScriptCore (make sure you close all of your brackets!)</li>
+</ul>
+<p>Exceptions are caught with the <code>try/catch</code> construct:</p>
+<pre class="sh_javascript">
+try{
+ var window = new Gtk.Window();
+ window.opacity = "hello!";
+}
+catch(e){
+ print("An exception occurred!");
+}
+</pre>
+<p>
+<code>e</code> is the name we've given the Exception object in this examle. The Exception object has a handful of properties which provide more information about the exception:</p>
+<ul>
+<li><b>name</b> - the exception type</li>
+<li><b>message</b> - the detailed message describing the exception</li>
+<li><b>line</b> - the line on which the exception took place</li>
+<li><b>sourceURL</b> - the source file, if any, in which the exception took place</li>
+</ul>
+<p>
+Just as in Javascript, you can throw an exception manually with the <b>throw</b> function, passing it an object - either a new object, with the properties listed above (for consistency), or an arbitrary object:
+</p>
+<pre class="sh_javascript">
+try{
+ if(!http.connect("http://google.com"))
+ throw { name: "HTTPConnectionError", message: "404 File Not Found" }
+}
+catch(e){
+ // e.message = "404 File Not Found"
+}
+</pre>
+<div class="section"><b>Inheritance</b></div>
+<p>
+JavaScript, being a prototypal language, rather than a class based language, has no strict inheritance model. A plethora of documentation can be found on the internet for implementing various inheritance models inside your program. However, a clear and common use case is to subclass GObjects, and Seed provides an interface to define and implement new GTypes.
+</p>
+<p><b>Type Objects</b></p>
+<p>
+To implement a new GType, an object describing the type is required.
+</p>
+<pre class="sh_javascript">
+NewType = {
+ parent: ParentTypeConstructor,
+ name: "NewTypeName",
+ class_init: function(klass, prototype){
+ },
+ instance_init: function(){
+ }
+}
+</pre>
+<p>
+Indicates that the new type derives from ParentType, i.e. Gtk.Window, with name "NewTypeName". The class_init function is called when the class comes in to existence, and allows you to add to the prototype of objects constructed by the type. The instance_init function is called on the creation of each instance, with the "this" variable set to the new instance. An example type:
+</p>
+<pre class="sh_javascript">
+HelloLabel = new GType({
+ parent: Gtk.Label,
+ name: "HelloLabel",
+ class_init: function(klass, prototype){
+ prototype.say_goodbye =
+ function(){
+ this.label = "Goodbye";
+ }
+ },
+ instance_init: function(){
+ this.label = "Hello"; // Hello Labels Always Say Hello.
+ }
+});
+</pre>
+<p> Now to create an instance of the object:</p>
+<pre class="sh_javascript">
+label = new HelloLabel();
+box.pack_start(label);
+label.show();
+label.say_goodbye();
+</pre>
+<p>
+The label inherits all the methods, signals, and properties of the Gtk.Label class and its parents, and internally has its own GType.
+</p>
+<div class="section">signal.<b>emit</b>(<i>...</i>)</div>
+<p>
+<b>emit</b> provides the ability to arbitrarily emit any GObject signal, thus calling all of the functions which are connected to it. Any arguments passed to <b>emit</b> are passed on to the callback function.
+</p>
+<pre class="sh_javascript">
+win = new Gtk.Window();
+win.signal.close.connect(Gtk.main_quit);
+win.signal.close.emit();
+</pre>
+<div class="section">class.<b>install_signal</b>(signal_descriptor)</div>
+<p>
+When creating a new GObject type within Seed, <b>install_signal</b> provides the ability to install new signals, which you can later emit with <b>emit</b> and can be connected to in any of the usual ways.
+</p>
+<p>
+<i>signal_descriptor</i> is a Javascript object describing the signal. Important properties of <i>signal_descriptor</i> are:
+</p>
+<ul>
+<li><i>name</i> &mdash; the name of the signal</li>
+<li><i>parameters</i> &mdash; the types of any arguments the signal takes, as a Javascript array <i>(optional)</i></li>
+<li><i>return_type</i> &mdash; the expected return type of the signal handler <i>(optional)</i></li>
+</ul>
+<p>
+For example:
+</p>
+<pre class="sh_javascript">
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ signals: [{name: "hello",
+ parameters: [GObject.TYPE_INT,
+ GObject.TYPE_STRING],
+ return_type: Gtk.Window.type}];
+});
+
+w = new HelloWindow();
+
+w.signal.hello.connect(function(object, number, string){
+ print(number + " " + string);
+ return new Gtk.Window()
+ });
+
+print(w.signal.hello.emit(2, "Test"));
+
+</pre>
+</body>
+</html>
diff --git a/doc/seed.1 b/doc/seed.1
new file mode 100644
index 0000000..d1b145b
--- /dev/null
+++ b/doc/seed.1
@@ -0,0 +1,36 @@
+.TH "seed" 1
+.SH NAME
+seed \- libseed JavaScript REPL/Interpreter.
+.SH SYNOPSIS
+.B seed
+[OPTION...] [SCRIPT]
+.SH DESCRIPTION
+seed acts as a simple read-eval-print loop for libseed's GObject JavaScriptCore
+bindings, unless the path to a script to interpret is specified.
+.SH OPTIONS
+.TP
+.B \--help
+Show these help options.
+.TP
+.B \--version
+Print interpreter version.
+.TP
+.B \-e "expression"
+Takes the JavaScript expression, checks its syntax, and evaluates it, printing
+the return value.
+.TP
+.B \--seed-debug=DEBUGFLAGS
+Show debug messages, filtered by the specified debug flags. If one wishes to see
+all possible debug messages, specify the flag "all" (keep in mind that this will
+produce a significant amount of output). Otherwise, specify a comma-separated
+list of: misc, finalization, initialization, signal, invocation, structs,
+construction, gtype, importer, module.
+.TP
+.SH BUGS
+Report bugs at http://bugzilla.gnome.org/ in the seed product.
+.SH HOMEPAGE and CONTACT
+http://live.gnome.org/Seed
+.SH AUTHORS
+Robert Carr <racarr@svn.gnome.org>
+.PP
+Tim Horton <hortont@svn.gnome.org>
diff --git a/doc/sh.css b/doc/sh.css
new file mode 100644
index 0000000..e0bd7e8
--- /dev/null
+++ b/doc/sh.css
@@ -0,0 +1 @@
+pre.sh_sourceCode{color:#000;font-style:normal;}pre.sh_sourceCode .sh_keyword{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_type{color:#208920;font-style:normal;}pre.sh_sourceCode .sh_string{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_regexp{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_specialchar{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_comment{color:#ac2020;font-style:italic;}pre.sh_sourceCode .sh_number{color:#000;font-style:normal;}pre.sh_sourceCode .sh_preproc{color:#000;font-style:normal;}pre.sh_sourceCode .sh_function{color:#000;font-style:normal;}pre.sh_sourceCode .sh_url{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_date{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_time{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_file{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_ip{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_name{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_variable{color:#00f;font-style:normal;}pre.sh_sourceCode .sh_oldfile{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_newfile{color:#bd8d8b;font-style:normal;}pre.sh_sourceCode .sh_difflines{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_selector{color:#00f;font-style:normal;}pre.sh_sourceCode .sh_property{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_value{color:#bd8d8b;font-style:normal;} \ No newline at end of file
diff --git a/doc/sh.js b/doc/sh.js
new file mode 100644
index 0000000..31d1ba0
--- /dev/null
+++ b/doc/sh.js
@@ -0,0 +1,4 @@
+/* Copyright (C) 2007, 2008 gnombat@users.sourceforge.net */
+/* License: http://shjs.sourceforge.net/doc/gplv3.html */
+
+if(!this.sh_languages){this.sh_languages={}}var sh_requests={};function sh_isEmailAddress(a){if(/^mailto:/.test(a)){return false}return a.indexOf("@")!==-1}function sh_setHref(b,c,d){var a=d.substring(b[c-2].pos,b[c-1].pos);if(a.length>=2&&a.charAt(0)==="<"&&a.charAt(a.length-1)===">"){a=a.substr(1,a.length-2)}if(sh_isEmailAddress(a)){a="mailto:"+a}b[c-2].node.href=a}function sh_konquerorExec(b){var a=[""];a.index=b.length;a.input=b;return a}function sh_highlightString(B,o){if(/Konqueror/.test(navigator.userAgent)){if(!o.konquered){for(var F=0;F<o.length;F++){for(var H=0;H<o[F].length;H++){var G=o[F][H][0];if(G.source==="$"){G.exec=sh_konquerorExec}}}o.konquered=true}}var N=document.createElement("a");var q=document.createElement("span");var A=[];var j=0;var n=[];var C=0;var k=null;var x=function(i,a){var p=i.length;if(p===0){return}if(!a){var Q=n.length;if(Q!==0){var r=n[Q-1];if(!r[3]){a=r[1]}}}if(k!==a){if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}}if(a){var P;if(a==="sh_url"){P=N.cloneNode(false)}else{P=q.cloneNode(false)}P.className=a;A[j++]={node:P,pos:C}}}C+=p;k=a};var t=/\r\n|\r|\n/g;t.lastIndex=0;var d=B.length;while(C<d){var v=C;var l;var w;var h=t.exec(B);if(h===null){l=d;w=d}else{l=h.index;w=t.lastIndex}var g=B.substring(v,l);var M=[];for(;;){var I=C-v;var D;var y=n.length;if(y===0){D=0}else{D=n[y-1][2]}var O=o[D];var z=O.length;var m=M[D];if(!m){m=M[D]=[]}var E=null;var u=-1;for(var K=0;K<z;K++){var f;if(K<m.length&&(m[K]===null||I<=m[K].index)){f=m[K]}else{var c=O[K][0];c.lastIndex=I;f=c.exec(g);m[K]=f}if(f!==null&&(E===null||f.index<E.index)){E=f;u=K;if(f.index===I){break}}}if(E===null){x(g.substring(I),null);break}else{if(E.index>I){x(g.substring(I,E.index),null)}var e=O[u];var J=e[1];var b;if(J instanceof Array){for(var L=0;L<J.length;L++){b=E[L+1];x(b,J[L])}}else{b=E[0];x(b,J)}switch(e[2]){case -1:break;case -2:n.pop();break;case -3:n.length=0;break;default:n.push(e);break}}}if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}k=null}C=w}return A}function sh_getClasses(d){var a=[];var b=d.className;if(b&&b.length>0){var e=b.split(" ");for(var c=0;c<e.length;c++){if(e[c].length>0){a.push(e[c])}}}return a}function sh_addClass(c,a){var d=sh_getClasses(c);for(var b=0;b<d.length;b++){if(a.toLowerCase()===d[b].toLowerCase()){return}}d.push(a);c.className=d.join(" ")}function sh_extractTagsFromNodeList(c,a){var f=c.length;for(var d=0;d<f;d++){var e=c.item(d);switch(e.nodeType){case 1:if(e.nodeName.toLowerCase()==="br"){var b;if(/MSIE/.test(navigator.userAgent)){b="\r"}else{b="\n"}a.text.push(b);a.pos++}else{a.tags.push({node:e.cloneNode(false),pos:a.pos});sh_extractTagsFromNodeList(e.childNodes,a);a.tags.push({pos:a.pos})}break;case 3:case 4:a.text.push(e.data);a.pos+=e.length;break}}}function sh_extractTags(c,b){var a={};a.text=[];a.tags=b;a.pos=0;sh_extractTagsFromNodeList(c.childNodes,a);return a.text.join("")}function sh_mergeTags(d,f){var a=d.length;if(a===0){return f}var c=f.length;if(c===0){return d}var i=[];var e=0;var b=0;while(e<a&&b<c){var h=d[e];var g=f[b];if(h.pos<=g.pos){i.push(h);e++}else{i.push(g);if(f[b+1].pos<=h.pos){b++;i.push(f[b]);b++}else{i.push({pos:h.pos});f[b]={node:g.node.cloneNode(false),pos:h.pos}}}}while(e<a){i.push(d[e]);e++}while(b<c){i.push(f[b]);b++}return i}function sh_insertTags(k,h){var g=document;var l=document.createDocumentFragment();var e=0;var d=k.length;var b=0;var j=h.length;var c=l;while(b<j||e<d){var i;var a;if(e<d){i=k[e];a=i.pos}else{a=j}if(a<=b){if(i.node){var f=i.node;c.appendChild(f);c=f}else{c=c.parentNode}e++}else{c.appendChild(g.createTextNode(h.substring(b,a)));b=a}}return l}function sh_highlightElement(d,g){sh_addClass(d,"sh_sourceCode");var c=[];var e=sh_extractTags(d,c);var f=sh_highlightString(e,g);var b=sh_mergeTags(c,f);var a=sh_insertTags(b,e);while(d.hasChildNodes()){d.removeChild(d.firstChild)}d.appendChild(a)}function sh_getXMLHttpRequest(){if(window.ActiveXObject){return new ActiveXObject("Msxml2.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}throw"No XMLHttpRequest implementation available"}function sh_load(language,element,prefix,suffix){if(language in sh_requests){sh_requests[language].push(element);return}sh_requests[language]=[element];var request=sh_getXMLHttpRequest();var url=prefix+"sh_"+language+suffix;request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState===4){try{if(!request.status||request.status===200){eval(request.responseText);var elements=sh_requests[language];for(var i=0;i<elements.length;i++){sh_highlightElement(elements[i],sh_languages[language])}}else{throw"HTTP error: status "+request.status}}finally{request=null}}};request.send(null)}function sh_highlightDocument(g,k){var b=document.getElementsByTagName("pre");for(var e=0;e<b.length;e++){var f=b.item(e);var a=sh_getClasses(f);for(var c=0;c<a.length;c++){var h=a[c].toLowerCase();if(h==="sh_sourcecode"){continue}if(h.substr(0,3)==="sh_"){var d=h.substring(3);if(d in sh_languages){sh_highlightElement(f,sh_languages[d])}else{if(typeof(g)==="string"&&typeof(k)==="string"){sh_load(d,f,g,k)}else{throw'Found <pre> element with class="'+h+'", but no such language exists'}}break}}}}; \ No newline at end of file
diff --git a/doc/sh_js.js b/doc/sh_js.js
new file mode 100644
index 0000000..d443c11
--- /dev/null
+++ b/doc/sh_js.js
@@ -0,0 +1,347 @@
+if (! this.sh_languages) {
+ this.sh_languages = {};
+}
+sh_languages['javascript'] = [
+ [
+ [
+ /\/\/\//g,
+ 'sh_comment',
+ 1
+ ],
+ [
+ /\/\//g,
+ 'sh_comment',
+ 7
+ ],
+ [
+ /\/\*\*/g,
+ 'sh_comment',
+ 8
+ ],
+ [
+ /\/\*/g,
+ 'sh_comment',
+ 9
+ ],
+ [
+ /\b(?:abstract|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|final|finally|for|function|goto|if|implements|in|instanceof|interface|native|new|null|private|protected|prototype|public|return|static|super|switch|synchronized|throw|throws|this|transient|true|try|typeof|var|volatile|while|with)\b/g,
+ 'sh_keyword',
+ -1
+ ],
+ [
+ /(\+\+|--|\)|\])(\s*)(\/=?(?![*\/]))/g,
+ ['sh_symbol', 'sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /(0x[A-Fa-f0-9]+|(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?)(\s*)(\/(?![*\/]))/g,
+ ['sh_number', 'sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /([A-Za-z$_][A-Za-z0-9$_]*\s*)(\/=?(?![*\/]))/g,
+ ['sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /\/(?:\\.|[^*\\\/])(?:\\.|[^\\\/])*\/[gim]*/g,
+ 'sh_regexp',
+ -1
+ ],
+ [
+ /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
+ 'sh_number',
+ -1
+ ],
+ [
+ /"/g,
+ 'sh_string',
+ 10
+ ],
+ [
+ /'/g,
+ 'sh_string',
+ 11
+ ],
+ [
+ /~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,
+ 'sh_symbol',
+ -1
+ ],
+ [
+ /\{|\}/g,
+ 'sh_cbracket',
+ -1
+ ],
+ [
+ /\b(?:Math|Infinity|NaN|undefined|arguments|Seed|signal|argv|argc|Gtk|GObject|GLib|WebKit)\b/g,
+ 'sh_predef_var',
+ -1
+ ],
+ [
+ /\b(?:printf|sprintf|connect|Array|Boolean|Date|Error|EvalError|Function|Number|Object|RangeError|ReferenceError|RegExp|String|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt)\b/g,
+ 'sh_predef_func',
+ -1
+ ],
+ [
+ /(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,
+ 'sh_function',
+ -1
+ ]
+ ],
+ [
+ [
+ /$/g,
+ null,
+ -2
+ ],
+ [
+ /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
+ 'sh_url',
+ -1
+ ],
+ [
+ /<\?xml/g,
+ 'sh_preproc',
+ 2,
+ 1
+ ],
+ [
+ /<!DOCTYPE/g,
+ 'sh_preproc',
+ 4,
+ 1
+ ],
+ [
+ /<!--/g,
+ 'sh_comment',
+ 5
+ ],
+ [
+ /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
+ 'sh_keyword',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
+ 'sh_keyword',
+ 6,
+ 1
+ ],
+ [
+ /&(?:[A-Za-z0-9]+);/g,
+ 'sh_preproc',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
+ 'sh_keyword',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
+ 'sh_keyword',
+ 6,
+ 1
+ ],
+ [
+ /@[A-Za-z]+/g,
+ 'sh_type',
+ -1
+ ],
+ [
+ /(?:TODO|FIXME|BUG)(?:[:]?)/g,
+ 'sh_todo',
+ -1
+ ]
+ ],
+ [
+ [
+ /\?>/g,
+ 'sh_preproc',
+ -2
+ ],
+ [
+ /([^=" \t>]+)([ \t]*)(=?)/g,
+ ['sh_type', 'sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /"/g,
+ 'sh_string',
+ 3
+ ]
+ ],
+ [
+ [
+ /\\(?:\\|")/g,
+ null,
+ -1
+ ],
+ [
+ /"/g,
+ 'sh_string',
+ -2
+ ]
+ ],
+ [
+ [
+ />/g,
+ 'sh_preproc',
+ -2
+ ],
+ [
+ /([^=" \t>]+)([ \t]*)(=?)/g,
+ ['sh_type', 'sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /"/g,
+ 'sh_string',
+ 3
+ ]
+ ],
+ [
+ [
+ /-->/g,
+ 'sh_comment',
+ -2
+ ],
+ [
+ /<!--/g,
+ 'sh_comment',
+ 5
+ ]
+ ],
+ [
+ [
+ /(?:\/)?>/g,
+ 'sh_keyword',
+ -2
+ ],
+ [
+ /([^=" \t>]+)([ \t]*)(=?)/g,
+ ['sh_type', 'sh_normal', 'sh_symbol'],
+ -1
+ ],
+ [
+ /"/g,
+ 'sh_string',
+ 3
+ ]
+ ],
+ [
+ [
+ /$/g,
+ null,
+ -2
+ ]
+ ],
+ [
+ [
+ /\*\//g,
+ 'sh_comment',
+ -2
+ ],
+ [
+ /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
+ 'sh_url',
+ -1
+ ],
+ [
+ /<\?xml/g,
+ 'sh_preproc',
+ 2,
+ 1
+ ],
+ [
+ /<!DOCTYPE/g,
+ 'sh_preproc',
+ 4,
+ 1
+ ],
+ [
+ /<!--/g,
+ 'sh_comment',
+ 5
+ ],
+ [
+ /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
+ 'sh_keyword',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
+ 'sh_keyword',
+ 6,
+ 1
+ ],
+ [
+ /&(?:[A-Za-z0-9]+);/g,
+ 'sh_preproc',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
+ 'sh_keyword',
+ -1
+ ],
+ [
+ /<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
+ 'sh_keyword',
+ 6,
+ 1
+ ],
+ [
+ /@[A-Za-z]+/g,
+ 'sh_type',
+ -1
+ ],
+ [
+ /(?:TODO|FIXME|BUG)(?:[:]?)/g,
+ 'sh_todo',
+ -1
+ ]
+ ],
+ [
+ [
+ /\*\//g,
+ 'sh_comment',
+ -2
+ ],
+ [
+ /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
+ 'sh_url',
+ -1
+ ],
+ [
+ /(?:TODO|FIXME|BUG)(?:[:]?)/g,
+ 'sh_todo',
+ -1
+ ]
+ ],
+ [
+ [
+ /"/g,
+ 'sh_string',
+ -2
+ ],
+ [
+ /\\./g,
+ 'sh_specialchar',
+ -1
+ ]
+ ],
+ [
+ [
+ /'/g,
+ 'sh_string',
+ -2
+ ],
+ [
+ /\\./g,
+ 'sh_specialchar',
+ -1
+ ]
+ ]
+];
diff --git a/doc/style.css b/doc/style.css
new file mode 100644
index 0000000..7faa315
--- /dev/null
+++ b/doc/style.css
@@ -0,0 +1,83 @@
+body
+{
+ font-size: 10pt;
+ font-family: "Helvetica" "sans-serif";
+ text-align: justify;
+}
+
+#header
+{
+ text-align: right;
+ font-size: 18pt;
+ width: 100%;
+ border-bottom: 1px solid #aaa;
+
+}
+
+#subheader
+{
+ text-align: right;
+ font-size: 12pt;
+ width: 100%;
+}
+
+div.section
+{
+ font-size: 16pt;
+ width: 100%;
+ border-bottom: 1px solid #ccc;
+ margin-bottom: 10px;
+}
+
+div.subsection
+{
+ font-size: 12pt;
+ width: 100%;
+ border-bottom: 1px solid #ccc;
+ margin-bottom: 10px;
+ margin-left: 10px;
+}
+
+
+
+p
+{
+ margin-left: 10px;
+ text-indent: 0em;
+}
+
+pre
+{
+ margin-left: 30px;
+ padding: 7px;
+ border: 1px solid #ccc;
+ background-color: #eee;
+}
+
+div.filename
+{
+ margin-left: 25px;
+ font-weight: bold;
+ width: 70%;
+ border-bottom: 1px solid #ccc;
+}
+
+code
+{
+ font-weight: bold;
+}
+
+namespace
+{
+ color:#ef2929;
+}
+
+type
+{
+ color:#73d216;
+}
+
+member
+{
+ color:#729fcf;
+}
diff --git a/doc/tutorial-standalone/1.js b/doc/tutorial-standalone/1.js
new file mode 100755
index 0000000..21deb7d
--- /dev/null
+++ b/doc/tutorial-standalone/1.js
@@ -0,0 +1,53 @@
+#!/usr/bin/env seed
+
+Gtk = imports.gi.Gtk;
+Gtk.init(null, null);
+
+BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+
+ var back = function (){
+ print("Go Back");
+ };
+
+ var forward = function (){
+ print("Go Forward");
+ };
+
+ var refresh = function (){
+ print("Refresh");
+ };
+
+ var browse = function (url){
+ print("Navigate to: " + url.text);
+ };
+
+ // Implementation
+ back_button.signal.clicked.connect(back);
+ forward_button.signal.clicked.connect(forward);
+ refresh_button.signal.clicked.connect(refresh);
+ url_bar.signal.activate.connect(browse);
+
+ this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);
+ }
+});
+
+window = new Gtk.Window({title: "Browser"});
+window.signal.hide.connect(Gtk.main_quit);
+
+toolbar = new BrowserToolbar();
+window.add(toolbar);
+window.show_all();
+
+Gtk.main();
diff --git a/doc/tutorial-standalone/1.png b/doc/tutorial-standalone/1.png
new file mode 100644
index 0000000..15b347e
--- /dev/null
+++ b/doc/tutorial-standalone/1.png
Binary files differ
diff --git a/doc/tutorial-standalone/2.js b/doc/tutorial-standalone/2.js
new file mode 100755
index 0000000..80598bf
--- /dev/null
+++ b/doc/tutorial-standalone/2.js
@@ -0,0 +1,128 @@
+#!/usr/bin/env seed
+
+var home_page = "http://www.google.com";
+
+Gtk = imports.gi.Gtk;
+WebKit = imports.gi.WebKit;
+Gtk.init(null, null);
+
+Browser = new GType({
+ parent: Gtk.VBox.type,
+ name: "Browser",
+ init: function (){
+ // Private
+ var toolbar = new BrowserToolbar();
+ var web_view = new BrowserView();
+ var scroll_view = new Gtk.ScrolledWindow();
+
+ // Public
+ this.get_toolbar = function (){
+ return toolbar;
+ };
+
+ this.get_web_view = function (){
+ return web_view;
+ };
+
+ // Implementation
+ scroll_view.smooth_scroll = true;
+ scroll_view.add(web_view);
+ scroll_view.set_policy(Gtk.PolicyType.AUTOMATIC,
+ Gtk.PolicyType.AUTOMATIC);
+
+ this.pack_start(toolbar);
+ this.pack_start(scroll_view, true, true);
+ this.show_all();
+ }
+});
+
+BrowserView = new GType({
+ parent: WebKit.WebView.type,
+ name: "BrowserView",
+ init: function (){
+ // Private
+ var update_url = function (web_view, web_frame){
+ var toolbar = browser.get_toolbar();
+
+ toolbar.set_url(web_frame.get_uri());
+ toolbar.set_can_go_back(web_view.can_go_back());
+ toolbar.set_can_go_forward(web_view.can_go_forward());
+ };
+
+ // Public
+ this.browse = function (url){
+ if(url.search("://") < 0)
+ url = "http://" + url;
+
+ this.open(url);
+ };
+
+ // Implementation
+ this.set_scroll_adjustments(null, null);
+ this.signal.load_committed.connect(update_url);
+ }
+});
+
+BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+
+ var back = function (){
+ browser.get_web_view().go_back();
+ };
+
+ var forward = function (){
+ browser.get_web_view().go_forward();
+ };
+
+ var refresh = function (){
+ browser.get_web_view().reload();
+ };
+
+ var browse = function (url){
+ browser.get_web_view().browse(url.text);
+ };
+
+ // Public
+ this.set_url = function (url){
+ url_bar.text = url;
+ };
+
+ this.set_can_go_back = function (can_go_back){
+ back_button.sensitive = can_go_back;
+ };
+
+ this.set_can_go_forward = function (can_go_forward){
+ forward_button.sensitive = can_go_forward;
+ };
+
+ // Implementation
+ back_button.signal.clicked.connect(back);
+ forward_button.signal.clicked.connect(forward);
+ refresh_button.signal.clicked.connect(refresh);
+ url_bar.signal.activate.connect(browse);
+
+ this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);
+ }
+});
+
+window = new Gtk.Window({title: "Browser"});
+window.resize(800, 600);
+window.signal.hide.connect(Gtk.main_quit);
+
+browser = new Browser();
+browser.get_web_view().browse(home_page);
+window.add(browser);
+window.show_all();
+
+Gtk.main();
diff --git a/doc/tutorial-standalone/2.png b/doc/tutorial-standalone/2.png
new file mode 100644
index 0000000..e7fad00
--- /dev/null
+++ b/doc/tutorial-standalone/2.png
Binary files differ
diff --git a/doc/tutorial-standalone/3.js b/doc/tutorial-standalone/3.js
new file mode 100755
index 0000000..e6446c4
--- /dev/null
+++ b/doc/tutorial-standalone/3.js
@@ -0,0 +1,200 @@
+#!/usr/bin/env seed
+
+var home_page = "http://www.google.com";
+
+Gtk = imports.gi.Gtk;
+WebKit = imports.gi.WebKit;
+Gtk.init(null, null);
+
+TabbedBrowser = new GType({
+ parent: Gtk.Notebook.type,
+ name: "TabbedBrowser",
+ init: function (){
+ // Public
+ this.close_tab = function (tab){
+ browser.remove_page(browser.page_num(tab));
+ tab.destroy();
+
+ if(!browser.get_n_pages()){
+ browser.new_tab(home_page);
+ }
+ };
+
+ this.new_tab = function (url){
+ var new_tab = new BrowserTab();
+ new_tab.get_web_view().browse(url);
+
+ var tab_label = new Gtk.Label({label:"Untitled"});
+ var tab_button = new Gtk.Button({relief: Gtk.ReliefStyle.NONE});
+ tab_button.set_image(new Gtk.Image({stock: "gtk-close",
+ icon_size: Gtk.IconSize.MENU}));
+ tab_button.signal.clicked.connect(this.close_tab, this);
+
+ var tab_title = new Gtk.HBox();
+ tab_title.pack_start(tab_label);
+ tab_title.pack_start(tab_button);
+ tab_title.show_all();
+
+ new_tab.set_tab_label(tab_label);
+
+ this.append_page(new_tab, tab_title);
+ };
+
+ this.current_tab = function (){
+ return this.get_nth_page(this.page);
+ };
+
+ // Implementation
+ this.new_tab(home_page);
+ }
+});
+
+BrowserTab = new GType({
+ parent: Gtk.VBox.type,
+ name: "BrowserTab",
+ init: function (klass)
+ {
+ // Private
+ var toolbar = new BrowserToolbar();
+ var web_view = new BrowserView();
+ var scroll_view = new Gtk.ScrolledWindow();
+ var tab_label;
+
+ // Public
+ this.get_toolbar = function (){
+ return toolbar;
+ };
+
+ this.get_web_view = function (){
+ return web_view;
+ };
+
+ this.set_tab_label = function (new_tab_label){
+ tab_label = new_tab_label;
+ };
+
+ this.get_tab_label = function (){
+ return tab_label;
+ };
+
+ // Implementation
+ web_view.set_tab(this);
+
+ scroll_view.smooth_scroll = true;
+ scroll_view.add(web_view);
+ scroll_view.set_policy(Gtk.PolicyType.AUTOMATIC,
+ Gtk.PolicyType.AUTOMATIC);
+
+ this.pack_start(toolbar);
+ this.pack_start(scroll_view, true, true);
+ this.show_all();
+ }
+});
+
+BrowserView = new GType({
+ parent: WebKit.WebView.type,
+ name: "BrowserView",
+ init: function (){
+ // Private
+ var tab;
+
+ var update_title = function (web_view, web_frame, title){
+ if(title.length > 25)
+ title = title.slice(0,25) + "...";
+
+ tab.get_tab_label().label = title;
+ };
+
+ var update_url = function (web_view, web_frame){
+ var toolbar = tab.get_toolbar();
+
+ toolbar.set_url(web_frame.get_uri());
+ toolbar.set_can_go_back(web_view.can_go_back());
+ toolbar.set_can_go_forward(web_view.can_go_forward());
+ };
+
+ // Public
+ this.browse = function (url){
+ if(url.search("://") < 0)
+ url = "http://" + url;
+
+ this.open(url);
+ };
+
+ this.set_tab = function (new_tab){
+ tab = new_tab;
+ }
+
+ this.get_tab = function (){
+ return tab;
+ };
+
+ // Implementation
+ this.set_scroll_adjustments(null, null);
+ this.signal.title_changed.connect(update_title);
+ this.signal.load_committed.connect(update_url);
+ }
+});
+
+BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+
+ var back = function (){
+ browser.current_tab().get_web_view().go_back();
+ };
+
+ var forward = function (){
+ browser.current_tab().get_web_view().go_forward();
+ };
+
+ var refresh = function (){
+ browser.current_tab().get_web_view().reload();
+ };
+
+ var browse = function (url){
+ browser.current_tab().get_web_view().browse(url.text);
+ };
+
+ // Public
+ this.set_url = function (url){
+ url_bar.text = url;
+ };
+
+ this.set_can_go_back = function (can_go_back){
+ back_button.sensitive = can_go_back;
+ };
+
+ this.set_can_go_forward = function (can_go_forward){
+ forward_button.sensitive = can_go_forward;
+ };
+
+ // Implementation
+ back_button.signal.clicked.connect(back);
+ forward_button.signal.clicked.connect(forward);
+ refresh_button.signal.clicked.connect(refresh);
+ url_bar.signal.activate.connect(browse);
+
+ this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);
+ }
+});
+
+window = new Gtk.Window({title: "Browser"});
+window.resize(800, 600);
+window.signal.hide.connect(Gtk.main_quit);
+
+browser = new TabbedBrowser();
+window.add(browser);
+window.show_all();
+
+Gtk.main();
diff --git a/doc/tutorial-standalone/3.png b/doc/tutorial-standalone/3.png
new file mode 100644
index 0000000..b6db093
--- /dev/null
+++ b/doc/tutorial-standalone/3.png
Binary files differ
diff --git a/doc/tutorial-standalone/4.png b/doc/tutorial-standalone/4.png
new file mode 100644
index 0000000..4d58805
--- /dev/null
+++ b/doc/tutorial-standalone/4.png
Binary files differ
diff --git a/doc/tutorial-standalone/Makefile.am b/doc/tutorial-standalone/Makefile.am
new file mode 100644
index 0000000..59ff2d8
--- /dev/null
+++ b/doc/tutorial-standalone/Makefile.am
@@ -0,0 +1,29 @@
+
+tutorialdir=$(docdir)/tutorial
+tutorial_DATA = \
+ 1.js \
+ 2.js \
+ 3.js \
+ 1.png \
+ 2.png \
+ 3.png \
+ 4.png \
+ packing.png \
+ packing.svg \
+ tutorial.html
+EXTRA_DIST = \
+ 1.js \
+ 2.js \
+ 3.js \
+ 1.png \
+ 2.png \
+ 3.png \
+ 4.png \
+ packing.png \
+ packing.svg \
+ tutorial.html.in
+
+
+
+## File created by the gnome-build tools
+
diff --git a/doc/tutorial-standalone/Makefile.in b/doc/tutorial-standalone/Makefile.in
new file mode 100644
index 0000000..450b2a3
--- /dev/null
+++ b/doc/tutorial-standalone/Makefile.in
@@ -0,0 +1,523 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = doc/tutorial-standalone
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/tutorial.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = tutorial.html
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(tutorialdir)"
+DATA = $(tutorial_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+tutorialdir = $(docdir)/tutorial
+tutorial_DATA = \
+ 1.js \
+ 2.js \
+ 3.js \
+ 1.png \
+ 2.png \
+ 3.png \
+ 4.png \
+ packing.png \
+ packing.svg \
+ tutorial.html
+
+EXTRA_DIST = \
+ 1.js \
+ 2.js \
+ 3.js \
+ 1.png \
+ 2.png \
+ 3.png \
+ 4.png \
+ packing.png \
+ packing.svg \
+ tutorial.html.in
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tutorial-standalone/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/tutorial-standalone/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
+$(am__aclocal_m4_deps):
+tutorial.html: $(top_builddir)/config.status $(srcdir)/tutorial.html.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-tutorialDATA: $(tutorial_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(tutorialdir)" || $(MKDIR_P) "$(DESTDIR)$(tutorialdir)"
+ @list='$(tutorial_DATA)'; test -n "$(tutorialdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tutorialdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(tutorialdir)" || exit $$?; \
+ done
+
+uninstall-tutorialDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tutorial_DATA)'; test -n "$(tutorialdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(tutorialdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(tutorialdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(tutorialdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tutorialDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-tutorialDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ install-tutorialDATA installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-tutorialDATA
+
+
+# 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/doc/tutorial-standalone/packing.png b/doc/tutorial-standalone/packing.png
new file mode 100644
index 0000000..93a1040
--- /dev/null
+++ b/doc/tutorial-standalone/packing.png
Binary files differ
diff --git a/doc/tutorial-standalone/packing.svg b/doc/tutorial-standalone/packing.svg
new file mode 100644
index 0000000..e8771f0
--- /dev/null
+++ b/doc/tutorial-standalone/packing.svg
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="packing.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/Users/hortont/Desktop/packing.png"
+ inkscape:export-xdpi="51.161964"
+ inkscape:export-ydpi="51.161964">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="TriangleInM"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="TriangleInM"
+ style="overflow:visible">
+ <path
+ id="path3850"
+ d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(-0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="TriangleOutM"
+ style="overflow:visible">
+ <path
+ id="path3859"
+ d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(0.4)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.83111488"
+ inkscape:cx="375.84363"
+ inkscape:cy="583.29262"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1385"
+ inkscape:window-height="856"
+ inkscape:window-x="0"
+ inkscape:window-y="22" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.21568628;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3185"
+ width="522.73578"
+ height="671.83783"
+ x="114.47574"
+ y="187.57755"
+ rx="20"
+ ry="19.999996" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.21585903;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3183"
+ width="469.05389"
+ height="139.74329"
+ x="140.42181"
+ y="219.17"
+ rx="20"
+ ry="19.999996" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.39215687;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3157"
+ width="95"
+ height="94.999992"
+ x="159.47131"
+ y="240.44977"
+ rx="20"
+ ry="19.999998" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.39215687;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3159"
+ width="95"
+ height="94.999992"
+ x="276.44141"
+ y="241.07245"
+ rx="20"
+ ry="19.999998" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.39215687;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3161"
+ width="198.80443"
+ height="94.999992"
+ x="394.56372"
+ y="242.86218"
+ rx="20"
+ ry="19.999998" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:0.39215687;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3187"
+ width="469.05389"
+ height="461.89499"
+ x="142.89615"
+ y="373.98181"
+ rx="20"
+ ry="19.999996" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="229.08563"
+ y="113.3839"
+ id="text3189"><tspan
+ sodipodi:role="line"
+ id="tspan3191"
+ x="229.08563"
+ y="113.3839">VBox</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="420.58694"
+ y="107.3839"
+ id="text3193"><tspan
+ sodipodi:role="line"
+ id="tspan3195"
+ x="420.58694"
+ y="107.3839">HBox</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-end:url(#TriangleOutM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 287.52634,120.16844 L 287.67708,173.18343"
+ id="path3197"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;marker-start:url(#TriangleInM);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 465.33022,201.60887 L 466.00643,113.91202"
+ id="path3199"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="282.19754"
+ y="610.64508"
+ id="text3177"><tspan
+ sodipodi:role="line"
+ id="tspan3179"
+ x="282.19754"
+ y="610.64508">WebView</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="442.8045"
+ y="302.85992"
+ id="text3181"><tspan
+ sodipodi:role="line"
+ id="tspan3183"
+ x="442.8045"
+ y="302.85992"
+ style="font-weight:normal;-inkscape-font-specification:Bitstream Vera Sans">Entry</tspan></text>
+ </g>
+</svg>
diff --git a/doc/tutorial-standalone/tutorial.html.in b/doc/tutorial-standalone/tutorial.html.in
new file mode 100644
index 0000000..35e4587
--- /dev/null
+++ b/doc/tutorial-standalone/tutorial.html.in
@@ -0,0 +1,373 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <title>Seed Tutorial : Standalone</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" href="../style.css" type="text/css" charset="utf-8" />
+ <script type="text/javascript" src="../sh.js"></script>
+ <script type="text/javascript" src="../sh_js.js"></script>
+ <link type="text/css" rel="stylesheet" href="../sh.css" />
+ <style type="text/css">
+ div.section
+ {
+ font-weight: bold;
+ }
+
+ span.unchanged
+ {
+ opacity: 0.5;
+ }
+ </style>
+
+</head>
+<body onload="sh_highlightDocument();">
+<div id="header">Seed Tutorial : Standalone</div>
+<div id="subheader">v.@VERSION@</div>
+<div class="section">Introduction</div>
+<p>Seed, first and foremost, provides an easily embeddable JavaScript engine to developers looking for a straightforward way to create extensible applications. It also provides bindings between <a href="http://library.gnome.org/devel/gobject/stable/">GObject</a> and the <a href="http://www.webkit.org">WebKit</a> JavaScript engine, giving new developers access to the power of the GNOME stack from a familiar and simple language, and allowing rapid prototyping of applications for hardened GNOME developers.</p>
+<p>This tutorial begins with a few brief examples, and then dives right in, following the development of a simple Seed program, from beginning to end. By the end of the tutorial, you'll have your very own tiny WebKit-based web browser, as well as a summary knowledge of the use of Seed to build GTK+ applications.</p>
+<div class="section">Beginning Seed</div>
+<p>It makes sense to start our exploration with a program you're probably quite familiar with:</p>
+<pre class="sh_javascript">
+#!/usr/bin/env seed
+
+print("Hello, world!");
+</pre>
+<p>If you were to make this script executable (<code>chmod +x hello.js</code>), and run it, you'd hopefully see the following, just as expected (if you don't, for some reason, make sure you have the latest version of Seed installed, then <a href="racarr@svn.gnome.org">email us</a>):</p>
+<pre class="sh_javascript">
+Hello, world!
+</pre>
+<p>In order to make the file executable, include (<code>#!/usr/bin/env seed</code>) at the top of every Seed program you write. This is known as the <em>shebang line</em>, and tells your shell where to find the <code>seed</code> interpreter; I'm only going to include it when listing a whole file, from now on.</p>
+<p>Variables in JavaScript are not given any <em>type</em>, and conversion between different kinds of values is automatic and painless. For example, you can:</p>
+<ul>
+<li>Add two strings <code>("Hello, " + "World!")</code> turns into <code>"Hello, World!"</code></li>
+<li>Add a number to a string <code>("Example" + (2 * 2))</code> turns into <code>"Example4"</code></li>
+</ul>
+<p>There is one exception: in order to convert a string of digits into a 'number', JavaScript needs to be explicitly instructed to do so: <code>parseFloat("42.5")</code>.</p>
+<p>Seed also provides a very simple interface to the <a href="http://directory.fsf.org/project/readline/">GNU Readline</a> library, which allows programs to ask the user for input. This interface is in the <b>readline</b> module, which <u>must</u> be imported before it can be used. The only argument <code>readline.readline()</code> requires is the prompt for the user. Also, the current version of Seed ensures that everything typed is automatically saved in the prompt's history; if you press the up key while at a prompt, you can access and edit lines you've previously entered. Future versions of Seed will provide more control over the history and other parts of readline.</p>
+<pre class="sh_javascript">
+readline = imports.readline;
+var my_name = readline.readline("Your name? ");
+var my_age = readline.readline("Your age? ");
+var old = 25;
+var old_age = old + parseFloat(my_age);
+print(my_name + " will be " + old_age + " in " + old + " years!");
+</pre>
+<p>You've probably noticed that the word '<code>var</code>' precedes the first use of every variable in JavaScript. This is important, because it ensures that the memory consumed by the variable is freed to be used elsewhere at the end of the current block of code, when the variable goes <em>out of scope</em>. If, instead, you want to create a variable which is <em>global</em> (available forever, after it is created), you can omit the '<code>var</code>'. Keep in mind that making many global variables is generally considered bad practice, and can be expensive in terms of memory use.</p>
+<div class="section">A JavaScript Shell</div>
+<p>JavaScript, being a scripting language, includes a construct, <code>eval()</code> which allows you to evaluate a <em>string</em> of JavaScript. This allows, for example, a user to input JavaScript with <code>readline</code>, and it to be executed as if it had been part of your source file. In addition, <code>eval()</code>'s return value is the return value of the snippet of code. For example:</p>
+<pre class="sh_javascript">
+var output = eval("2+2");
+print(output);
+</pre>
+<p>Will output:</p>
+<pre class="sh_javascript">
+4.000000
+</pre>
+<p>When something goes <em>wrong</em> in a piece of JavaScript code, the program will exit, most likely leaving the user in a confused state. For example, if you try to access a variable that doesn't exist: <code>print(asdf);</code> Seed will exit with the message: <code>ReferenceError Can't find variable: asdf</code>. It is possible to catch this sort of error, or exception, inside of your JavaScript program, ensuring that it doesn't terminate your program - or that if it does, it prints a useful error message. The <code>try/catch</code> construct provides a way to <em>try</em> to execute a segment of JavaScript, and, if it fails, run a second segment, without exiting the program. The second segment could print a user-friendly error message, ignore the exception entirely, or try to work around the problem. A quick example of <code>try/catch</code>:</p>
+<pre class="sh_javascript">
+try{
+ print(asdf);
+}
+catch(e){
+ print("Something went wrong!");
+}
+</pre>
+<p>It's also possible to determine what, exactly, went wrong. The '<code>e</code>' in the <code>catch</code> statement (which, by the way, you <em>cannot</em> omit) is actually an object containing information about the exception! We can access some of the basic properties of this object:</p>
+<pre class="sh_javascript">
+try{
+ print(asdf);
+}
+catch(e){
+ print("Something went wrong!");
+ print(e.name);
+ print(e.message);
+}
+</pre>
+<p>This will print a message similar to what would be printed if you hadn't caught the exception, but <em>without exiting the program!</em></p>
+<p>Combining <code>readline</code>, <code>eval</code>, exceptions, and <code>print</code>, we can write a simple shell, allowing interactive use of Seed. This shell is included in the Seed distribution, in <code>examples/repl.js</code>. Looking at the source, you'll note that it takes very little code to implement a shell:</p>
+<div class="filename">examples/repl.js</div>
+<pre class="sh_javascript">
+#!/usr/bin/env seed
+
+readline = imports.readline;
+
+while(1){
+ try{
+ print(eval(readline.readline("> ")));
+ }
+ catch(e){
+ print(e.name + " " + e.message);
+ }
+}
+</pre>
+<p>You can (and <em>should!</em>) use this shell in order to experiment with and learn to use Seed.</p>
+<div class="section">Getting GTK Going</div>
+<p>Thus far in this tutorial, we've been completely ignoring the most useful part of Seed: the ability to use external libraries from within JavaScript. The single most useful of these libraries is GTK, the widget and windowing toolkit used by all GNOME applications, which will provide the ability to create and manipulate graphical windows, as well as just about any sort of widget you should require.</p>
+<p>In order to use GTK (or any other external library) in a Seed program, you first have to import the functions from said library. <code>Gtk = imports.gi.Gtk</code>, does this for us. The imports.gi object is a special object which handles importing libraries from introspection data.</p>
+<p>Once the library has been imported</code>, all of the imported functions are available on the Gtk object: <code><a href="http://library.gnome.org/devel/gtk/2.14/gtk-General.html#gtk-init">GTK.init()</a></code>, etc.</p>
+<p>Let's start off the development of our browser by getting GTK working. It takes very little to get a window displayed with Seed:</p>
+<pre class="sh_javascript">
+#!/usr/bin/env seed
+
+Gtk = imports.gi.Gtk;
+Gtk.init(null, null);
+
+var window = new Gtk.Window();
+window.show_all();
+
+Gtk.main();
+</pre>
+<p>If you've ever used GTK from C, you'll notice some similarities here. All of the GTK functions have been mapped into JavaScript in a reasonable way, but it will certainly take a bit to get used to, for example, <code>new Gtk.Window()</code> instead of <code>gtk_window_new()</code>.</p>
+<p>Executing the above script should give you a window that looks entirely empty and boring, something like the following:</p>
+<div style="text-align: center;"><img src="1.png" alt="Blank GTK Window"/></div>
+<div class="section">JSON Constructors</div>
+<p>Notice that the title of the window is 'seed'. We'll fix that, using another Seed feature: you can use <a href="http://www.json.org/js.html">JSON notation</a> to set properties while constructing objects, like so:</p>
+<pre class="sh_javascript">
+var window = new Gtk.Window({title: "Browser"});
+</pre>
+<p>This saves a lot of typing from the alternative, conventional method:</p>
+<pre class="sh_javascript">
+var window = new Gtk.Window();
+window.set_title("Browser");
+</pre>
+<p>You can set any number of properties this way, by separating them by commas (<code>{"title": "Browser", "default-height": 500}</code>, etc.). This method should work for any GObject constructor.</p>
+<div class="section">Signals</div>
+<p>You'll notice that our program, as it stands, fails to quit when you click the 'Close' button. You can, of course, quit it with Ctrl-C, but this is certainly unacceptable behaviour. To fix it, we'll connect a C function to the signal that gets emitted when the 'Close' button is clicked:</p>
+<pre class="sh_javascript">
+window.signal.hide.connect(Gtk.main_quit);
+</pre>
+<p>The signal names are the same as in the <a href="http://library.gnome.org/devel/gtk/stable/">GTK documentation</a>, except using underscores instead of dashes between words. </p>
+<div class="section">GObject Subclassing</div>
+<p>Inheritance is a useful feature of many object-oriented languages which provides a way to create your own classes, extending any existing class, while 'inheriting' those behaviors and properties of your parent class which you do not choose to override. Seed provides an incredibly simple interface in order to subclass GObject classes. In order to make our browser, we'll need a number of subclasses. We'll start with our toolbar; since it's a horizontal collection of elements, let's make it a subclass of Gtk.HBox:</p>
+<pre class="sh_javascript">
+BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ }
+});
+</pre>
+<p>
+You'll notice that the GType takes a JavaScript object. The three most important properties which we'll be using are <i>parent</i>, the type of the 'parent' class, from which our subclass should inherit its default behavior; <i>name</i>, the UpperCamelCase name of our new class; and <i>init</i>, a JavaScript function which is called each time a new instance of the class is made.
+</p>
+<div class="section">Working with Widgets</div>
+<p>We'll start by making the BrowserToolbar's buttons. GTK provides a ToolButton widget, which is generally used for making such toolbars, as well as various different stock icons (to ensure consistency within all GTK applications). Browsing through <a href="http://library.gnome.org/devel/gtk/stable/gtk-Stock-Items.html">the GTK Stock Item documentation</a>, we find that we're looking for "<code>gtk-go-back</code>", "<code>gtk-go-forward</code>", and "<code>gtk-refresh</code>". A glance at the <a href="http://library.gnome.org/devel/gtk/stable/GtkToolButton.html">GtkToolButton documentation</a> shows us that we can choose a stock icon by setting the <code>stock-id</code> property - we'll use JSON constructors to keep things tidy. Do note that we use underscores instead of dashes, because the property name isn't quoted (thus, a dash would indicate subtraction, which isn't what we're looking for!):</p>
+<pre class="sh_javascript">
+<span class="unchanged">BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){</span>
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+
+ // Implementation
+ this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);
+ <span class="unchanged">}
+});</span>
+</pre>
+<p>There are a few things in the snippet above which you probably haven't seen before (unless you've used GTK in another language). Firstly, the Gtk.Entry widget is a simple text entry field, like you would expect in a browser's URL bar. Secondly, you'll notice the use of the Gtk.HBox widget's <code>pack_start()</code> function. This serves as the foundation of GUI layout in GTK: a window is subdivided into boxes, which 'pack' widgets in a particular direction (HBoxes pack horizontally, VBoxes pack vertically, as expected). We use a HBox, since we want our toolbar arranged horizontally. <code>pack_start()</code> adds a widget to a Box; widgets are packed in the order they're added. There are optional arguments, which are addressed in more depth in the <a href="http://library.gnome.org/devel/gtk/2.14/GtkBox.html">GtkBox documentation</a>, which allow you to force widgets to expand into the usable space (the second and third arguments used when packing <code>url_bar</code> above serve this purpose).</p>
+<p>To try and get a more visual feel of packing, let's take a look at the Box layout for our browser:</p>
+<div style="text-align: center;"><img src="packing.png" alt="Packing Layout"/></div>
+<div class="section">Callbacks Galore</div>
+<p>We also need a bunch of callbacks (for all three buttons, and for when you're done entering text in the URL bar). We'll make them just print the function they're supposed to perform, for now, since we don't have a WebKit view to operate on yet. Let's make them private members of the BrowserToolbar class, and connect them to the appropriate signals:</p>
+<pre class="sh_javascript">
+<span class="unchanged">BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+</span>
+ var back = function (){
+ print("Go Back");
+ };
+
+ var forward = function (){
+ print("Go Forward");
+ };
+
+ var refresh = function (){
+ print("Refresh");
+ };
+
+ var browse = function (url){
+ print("Navigate to: " + url.text);
+ };
+
+ <span class="unchanged">// Implementation</span>
+ back_button.signal.clicked.connect(back);
+ forward_button.signal.clicked.connect(forward);
+ refresh_button.signal.clicked.connect(refresh);
+ url_bar.signal.activate.connect(browse);
+
+ <span class="unchanged">this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);
+ }
+});</span>
+</pre>
+<p>You'll notice that right now, nothing's creating a BrowserToolbar, so if you execute your application, you won't see the toolbar drawn. To remedy this, before <code>window.show_all()</code>, add lines to create and pack the toolbar:</p>
+<pre class="sh_javascript">
+toolbar = new BrowserToolbar();
+window.add(toolbar);
+</pre>
+<p>Your code should be in a runnable state now; take a minute to try it out, stand back, and admire what you've learned:</p>
+<div style="text-align: center;"><img src="2.png" alt="GTK Window with buttons and text entry field" /></div>
+<p>If, for some reason, something doesn't work, compare your code to <a href="1.js">the tutorial version</a>.</p>
+<div class="section">Adding WebKit</div>
+<p>It's finally time to start displaying some web pages with our little browser! Let's create and pack a <code>WebKit.WebView</code> below our toolbar, first. We should make a WebView subclass to use, to initialize some settings and provide an encapsulated interface to our browser view.</p>
+<p>A quick note about WebKit: if you omit the protocol part of a URL (e.g., http://), WebKit won't even bother to try to figure it out - so make sure you specify it! We'll add a <code>browse</code> function to our subclass, as well as a callback when the WebView's URL changes, so we can update the URL bar. To get around this shortcoming, we'll use JavaScript's string search function to see if a protocol has been specified, and, if it hasn't, we'll assume it's "<code>http://</code>".</p>
+<p>Poking around in the <a href="http://svn.webkit.org/repository/webkit/trunk/WebKit/gtk/webkit/webkitwebview.h">WebKit documentation</a> (the WebKit team is a bit behind on documentation, so all we have to work with is header files), we find that the <code>open()</code> function on a WebView allows you to navigate to a particular page. We'll use this in our implementation of the <code>WebView.browse()</code> function below.</p>
+<p>Here's an early version of our new <code>BrowserView</code> subclass:</p>
+<pre class="sh_javascript">
+BrowserView = new GType({
+ parent: WebKit.WebView.type,
+ name: "BrowserView",
+ init: function (){
+ // Private
+ var update_url = function (web_view, web_frame){
+ var toolbar = browser.get_toolbar();
+
+ toolbar.set_url(web_frame.get_uri());
+ toolbar.set_can_go_back(web_view.can_go_back());
+ toolbar.set_can_go_forward(web_view.can_go_forward());
+ };
+
+ // Public
+ this.browse = function (url){
+ if(url.search("://") &lt; 0)
+ url = "http://" + url;
+
+ this.open(url);
+ };
+
+ // Implementation
+ this.set_scroll_adjustments(null, null);
+ this.signal.load_committed.connect(update_url);
+ }
+});
+</pre>
+<p>You'll notice that we also turned off WebKit's automatic scrollbars, with the <code>set_scroll_adjustments</code> function. We do this in order to get smooth scrolling, by wrapping the WebView in a Gtk.ScrolledWindow, as you'll see shortly.</p>
+<p>Also, remember that we need to import a namespace before its functions are available to us! So, go back to the top of the file and import "WebKit", just after you import "Gtk". One final thing, before you again try to run your browser: we haven't yet specified a 'recommended' size for our window - let's go ahead and do that (if we didn't do so, the WebKit view would have no space to fill!). Just after you create the Gtk.Window(), add:</p>
+<pre class="sh_javascript">
+window.resize(600,600);
+</pre>
+<div class="section">Pulling it all together...</div>
+<p>As you can see in the last bit of code, we have a few more functions to add to our BrowserToolbar class. Functions to allow toggling the 'clickable' state of the back and forward buttons, and a function to update the URL bar when a link is clicked. We will also update the button callbacks with what we find while again browsing webkitwebview.h: reload(), go_forward(), and go_back().</p>
+<pre class="sh_javascript">
+<span class="unchanged">BrowserToolbar = new GType({
+ parent: Gtk.HBox.type,
+ name: "BrowserToolbar",
+ init: function (){
+ // Private
+ var url_bar = new Gtk.Entry();
+
+ var back_button = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ var forward_button = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ var refresh_button = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+
+ var back = function (){</span>
+ browser.get_web_view().go_back();
+ <span class="unchanged">};
+
+ var forward = function (){</span>
+ browser.get_web_view().go_forward();
+ <span class="unchanged">};
+
+ var refresh = function (){</span>
+ browser.get_web_view().reload();
+ <span class="unchanged">};
+
+ var browse = function (url){</span>
+ browser.get_web_view().browse(url.text);
+ <span class="unchanged">};
+
+ </span>// Public
+ this.set_url = function (url){
+ url_bar.text = url;
+ };
+
+ this.set_can_go_back = function (can_go_back){
+ back_button.sensitive = can_go_back;
+ };
+
+ this.set_can_go_forward = function (can_go_forward){
+ forward_button.sensitive = can_go_forward;
+ };
+
+ <span class="unchanged">// Implementation
+ back_button.signal.clicked.connect(back);
+ forward_button.signal.clicked.connect(forward);
+ refresh_button.signal.clicked.connect(refresh);
+ url_bar.signal.activate.connect(browse);
+
+ this.pack_start(back_button);
+ this.pack_start(forward_button);
+ this.pack_start(refresh_button);
+ this.pack_start(url_bar, true, true);</span>
+ }
+});
+</pre>
+<p>One last thing! We need a <code>Browser</code> class, a subclass of <code>Gtk.VBox</code>, to contain a BrowserToolbar and BrowserView, and to provide functions from which to access these widgets. We'll also set up the <code>Gtk.ScrolledWindow</code> which we discussed earlier:</p>
+<pre class="sh_javascript">
+Browser = new GType({
+ parent: Gtk.VBox.type,
+ name: "Browser",
+ init: function (){
+ // Private
+ var toolbar = new BrowserToolbar();
+ var web_view = new BrowserView();
+ var scroll_view = new Gtk.ScrolledWindow();
+
+ // Public
+ this.get_toolbar = function (){
+ return toolbar;
+ };
+
+ this.get_web_view = function (){
+ return web_view;
+ };
+
+ // Implementation
+ scroll_view.smooth_scroll = true;
+ scroll_view.add(web_view);
+ scroll_view.set_policy(Gtk.PolicyType.AUTOMATIC,
+ Gtk.PolicyType.AUTOMATIC);
+
+ this.pack_start(toolbar);
+ this.pack_start(scroll_view, true, true);
+ this.show_all();
+ }
+});
+</pre>
+<p>One final thing: we need to create a <code>Browser</code> object, and add it to the window, now, instead of a <code>BrowserToolbar</code>. The <code>Browser</code> object will contain a <code>BrowserToolbar</code> <i>and</i> a <code>BrowserView</code>. So, change the section near the bottom of the file from:</p>
+<pre class="sh_javascript">
+toolbar = new BrowserToolbar();
+window.add(toolbar);
+</pre>
+<p>into:</p>
+<pre class="sh_javascript">
+browser = new Browser();
+browser.get_web_view().browse(home_page);
+window.add(browser);
+</pre>
+<p>You'll notice we navigate to <code>home_page</code>. Assign <code>home_page</code> to your favorite web site at the top of the file; perhaps even make a section at the top of the file of browser settings (I'm sure you can think of other things to implement as settings!)</p>
+<p>If all goes well, your browser should now be in a working state. Start it up - it ought to look much like the following:</p>
+<div style="text-align: center;"><img src="4.png" alt="GTK Window with toolbar and browser view at GNOME.org" /></div>
+<p>The <a href="2.js">final version</a> of the tutorial's source code is available if you're having trouble; if, however, you made easy work of the tutorial, you should consider making some improvements to your browser: change the window title when the web page title changes (look at the title_changed signal!); <a href="3.js">add tabs</a> (GtkNotebook is probably what you're looking for); bookmarks are often useful!; perhaps a status menu? Or, go ahead and write your own application in Seed!</p>
+</body>
+</html>
diff --git a/extensions/Clutter.js b/extensions/Clutter.js
new file mode 100644
index 0000000..574eda1
--- /dev/null
+++ b/extensions/Clutter.js
@@ -0,0 +1,67 @@
+Clutter = imports.gi.Clutter;
+
+var animations = new Array();
+
+Clutter.Actor.prototype.animate = function(mode, duration, json)
+{
+ var properties = new Array();
+ var endvalues = new Array();
+ for (var prop in json){
+ properties.push(prop);
+ endvalues.push(new Array(this.__property_type(prop), json[prop]));
+ }
+
+ var animation = this.animatev(mode, duration, properties.length,
+ properties, endvalues);
+ animations.push(animation);
+ animation.timeline.signal["completed"].connect(
+ function(timeline, obj){
+ animations.splice(animations.indexOf(animation),1);
+ }, this);
+
+ return animation;
+}
+
+Clutter.Actor.prototype.animate_with_timeline = function(mode, timeline, json)
+{
+ var properties = new Array();
+ var endvalues = new Array();
+ for (var prop in json) {
+ properties.push(prop);
+ endvalues.push(new Array(this.__property_type(prop), json[prop]));
+ }
+
+ var animation =
+ this.animate_with_timelinev(mode, timeline, properties.length,
+ properties, endvalues);
+
+ animations.push(animation);
+ animation.timeline.signal["completed"].connect(
+ function(timeline, obj){
+ animations.splice(animations.indexOf(animation),1);
+ }, this);
+
+ return animation;
+}
+
+Clutter.Actor.prototype.animate_with_alpha = function(alpha, json)
+{
+ var properties = new Array();
+ var endvalues = new Array();
+ for (var prop in json) {
+ properties.push(prop);
+ endvalues.push(new Array(this.__property_type(prop), json[prop]));
+ }
+
+ var animation =
+ this.animate_with_alphav(alpha, properties.length,
+ properties, endvalues);
+
+ animations.push(animation);
+ animation.timeline.signal["completed"].connect(
+ function(timeline, obj){
+ animations.splice(animations.indexOf(animation),1);
+ }, this);
+
+ return animation;
+}
diff --git a/extensions/GObject.js b/extensions/GObject.js
new file mode 100644
index 0000000..d8d4e9f
--- /dev/null
+++ b/extensions/GObject.js
@@ -0,0 +1,31 @@
+GObject = imports.gi.GObject;
+
+(function()
+ {
+ var types = [{name:"NONE", fundamental: 1},
+ {name:"INTERFACE", fundamental: 2},
+ {name:"CHAR", fundamental: 3},
+ {name:"UCHAR", fundamental: 4},
+ {name:"BOOLEAN", fundamental: 5},
+ {name:"INT", fundamental: 6},
+ {name:"UINT", fundamental: 7},
+ {name:"LONG", fundamental: 8},
+ {name:"ULONG", fundamental: 9},
+ {name:"INT64", fundamental: 10},
+ {name:"UINT64", fundamental: 11},
+ {name:"ENUM", fundamental: 12},
+ {name:"FLAGS", fundamental: 13},
+ {name:"FLOAT", fundamental: 14},
+ {name:"DOUBLE", fundamental: 15},
+ {name:"STRING", fundamental: 16},
+ {name:"POINTER", fundamental: 17},
+ {name:"BOXED", fundamental: 18},
+ {name:"PARAM", fundamental: 19},
+ {name:"OBJECT", fundamental: 20}];
+
+ for (var i = 0; i < types.length; i++)
+ {
+ GObject["TYPE_"+types[i].name] = types[i].fundamental << 2;
+ }
+
+ }).apply();
diff --git a/extensions/Gio.js b/extensions/Gio.js
new file mode 100644
index 0000000..cc3db2a
--- /dev/null
+++ b/extensions/Gio.js
@@ -0,0 +1,35 @@
+Gio = imports.gi.Gio;
+
+(function()
+{
+ var prototype = Gio.FileInputStream.prototype;
+
+ prototype.get_contents = function()
+ {
+ var stream = new Gio.DataInputStream.c_new(this);
+ var line = stream.read_until("", 0);
+ return line;
+ }
+
+ Gio.simple_write = function(file, name)
+ {
+ var file = Gio.file_new_for_path(file);
+ var fstream = file.replace();
+ var dstream = new Gio.DataOutputStream.c_new(fstream);
+
+ dstream.put_string(name);
+ fstream.close();
+ }
+
+ Gio.simple_read = function(name)
+ {
+ var file = Gio.file_new_for_path(name);
+
+ var fstream = file.read();
+ var dstream = new Gio.DataInputStream.c_new(fstream);
+ var line = dstream.read_until("", 0);
+
+ fstream.close();
+ return line;
+ }
+}).apply();
diff --git a/extensions/Gst.js b/extensions/Gst.js
new file mode 100644
index 0000000..a49a8e6
--- /dev/null
+++ b/extensions/Gst.js
@@ -0,0 +1,8 @@
+Gst = imports.gi.Gst;
+
+Gst.Element.prototype.link_many = function(){
+ this.link(arguments[0]);
+ for (var i = 0; i < arguments.length-1; i++){
+ arguments[i].link(arguments[i+1]);
+ }
+}
diff --git a/extensions/Gtk.js b/extensions/Gtk.js
new file mode 100644
index 0000000..286fc9f
--- /dev/null
+++ b/extensions/Gtk.js
@@ -0,0 +1,39 @@
+Gtk = imports.gi.Gtk;
+
+(function()
+ {
+ var pack = function(packing)
+ {
+ for ( var i in packing )
+ {
+ var entry = packing[i];
+ var expand = entry["expand"];
+ var padding = entry["padding"];
+ var fill = entry["fill"];
+ var child = entry["child"];
+ var position = entry["position"];
+
+ if (position == null)
+ position = Gtk.PackType.START;
+
+ this.pack_start(child);
+ this.set_child_packing(child,
+ expand,
+ fill,
+ padding,
+ position);
+ }
+ }
+ Gtk.VBox.prototype.pack = pack;
+ Gtk.HBox.prototype.pack = pack;
+ }).apply();
+
+(function()
+ {
+ var add_from_string = function(str)
+ {
+ this.add_from_string_c(str, str.length);
+ }
+ Gtk.Builder.prototype.add_from_string_c = Gtk.Builder.prototype.add_from_string;
+ Gtk.Builder.prototype.add_from_string = add_from_string;
+ }).apply();
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
new file mode 100644
index 0000000..24c9979
--- /dev/null
+++ b/extensions/Makefile.am
@@ -0,0 +1,10 @@
+EXTRA_DIST= Gio.js Seed.js.in Gtk.js GObject.js Clutter.js Gst.js repl.js
+
+extensiondir=$(datadir)/seed@SEED_GTK_VERSION@/extensions
+extension_DATA = Gio.js Seed.js Gtk.js GObject.js Clutter.js Gst.js
+
+repldir=$(datadir)/seed@SEED_GTK_VERSION@
+repl_DATA = repl.js
+
+Seed.js: Seed.js.in
+ $(AM_V_GEN) $(SED) -e "s|%pkglibdir%|$(pkglibdir)@SEED_GTK_VERSION@|" -e "s|%pkgdatadir%|$(pkgdatadir)@SEED_GTK_VERSION@|" -e "s|%gnomejsdir%|$(GNOME_JS_DIR)|" $< > $@
diff --git a/extensions/Makefile.in b/extensions/Makefile.in
new file mode 100644
index 0000000..1fd5562
--- /dev/null
+++ b/extensions/Makefile.in
@@ -0,0 +1,524 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = extensions
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(extensiondir)" "$(DESTDIR)$(repldir)"
+DATA = $(extension_DATA) $(repl_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = Gio.js Seed.js.in Gtk.js GObject.js Clutter.js Gst.js repl.js
+extensiondir = $(datadir)/seed@SEED_GTK_VERSION@/extensions
+extension_DATA = Gio.js Seed.js Gtk.js GObject.js Clutter.js Gst.js
+repldir = $(datadir)/seed@SEED_GTK_VERSION@
+repl_DATA = repl.js
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extensions/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu extensions/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-extensionDATA: $(extension_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(extensiondir)" || $(MKDIR_P) "$(DESTDIR)$(extensiondir)"
+ @list='$(extension_DATA)'; test -n "$(extensiondir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(extensiondir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(extensiondir)" || exit $$?; \
+ done
+
+uninstall-extensionDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(extension_DATA)'; test -n "$(extensiondir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(extensiondir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(extensiondir)" && rm -f $$files
+install-replDATA: $(repl_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(repldir)" || $(MKDIR_P) "$(DESTDIR)$(repldir)"
+ @list='$(repl_DATA)'; test -n "$(repldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(repldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(repldir)" || exit $$?; \
+ done
+
+uninstall-replDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(repl_DATA)'; test -n "$(repldir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(repldir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(repldir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)$(extensiondir)" "$(DESTDIR)$(repldir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-extensionDATA install-replDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-extensionDATA uninstall-replDATA
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-extensionDATA \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-replDATA 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-extensionDATA uninstall-replDATA
+
+
+Seed.js: Seed.js.in
+ $(AM_V_GEN) $(SED) -e "s|%pkglibdir%|$(pkglibdir)@SEED_GTK_VERSION@|" -e "s|%pkgdatadir%|$(pkgdatadir)@SEED_GTK_VERSION@|" -e "s|%gnomejsdir%|$(GNOME_JS_DIR)|" $< > $@
+
+# 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/extensions/Seed.js.in b/extensions/Seed.js.in
new file mode 100644
index 0000000..7f10e21
--- /dev/null
+++ b/extensions/Seed.js.in
@@ -0,0 +1,207 @@
+if(!imports.searchPath || (imports.searchPath.length == 0))
+{
+ imports.searchPath = [ "%gnomejsdir%",
+ "%pkglibdir%",
+ "%pkgdatadir%",
+ "/usr/local/lib/seed",
+ "/usr/local/share/seed",
+ "/usr/lib/seed",
+ "/usr/share/seed" ];
+
+ GLib = imports.gi.GLib;
+ if(Seed.argv.length > 1)
+ {
+ __script_path__ = GLib.path_get_dirname(Seed.argv[1]);
+
+ try
+ {
+ if(!GLib.path_is_absolute(__script_path__))
+ {
+ __script_path__ = GLib.build_filenamev([GLib.get_current_dir(),
+ __script_path__]);
+ }
+
+ __script_path__ = imports.os.realpath(__script_path__);
+
+ if(__script_path__ && __script_path__ != "")
+ imports.searchPath.unshift(__script_path__);
+ }
+ catch(e)
+ {
+ print(imports.JSON.stringify(e));
+ }
+ }
+
+ imports.searchPath.unshift(".");
+}
+
+Seed.sprintf = function ()
+{
+ if (typeof arguments == "undefined") { return null; }
+ if (arguments.length < 1) { return null; }
+ if (typeof arguments[0] != "string") { return null; }
+ if (typeof RegExp == "undefined") { return null; }
+
+ var string = arguments[0];
+ var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
+ var matches = new Array();
+ var strings = new Array();
+ var convCount = 0;
+ var stringPosStart = 0;
+ var stringPosEnd = 0;
+ var matchPosEnd = 0;
+ var newString = '';
+ var match = null;
+
+ while (match = exp.exec(string)) {
+ if (match[9]) { convCount += 1; }
+
+ stringPosStart = matchPosEnd;
+ stringPosEnd = exp.lastIndex - match[0].length;
+ strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
+
+ matchPosEnd = exp.lastIndex;
+ matches[matches.length] = {
+ match: match[0],
+ left: match[3] ? true : false,
+ sign: match[4] || '',
+ pad: match[5] || ' ',
+ min: match[6] || 0,
+ precision: match[8],
+ code: match[9] || '%',
+ negative: parseInt(arguments[convCount]) < 0 ? true : false,
+ argument: String(arguments[convCount])
+ };
+ }
+ strings[strings.length] = string.substring(matchPosEnd);
+
+ if (matches.length == 0) { return string; }
+ if ((arguments.length - 1) < convCount) { return null; }
+
+ var code = null;
+ var match = null;
+ var i = null;
+
+ for (i=0; i<matches.length; i++) {
+
+ if (matches[i].code == '%') { substitution = '%' }
+ else if (matches[i].code == 'b') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'c') {
+ matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'd') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'f') {
+ matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'o') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 's') {
+ matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
+ substitution = Seed.sprintf.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'x') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = Seed.sprintf.convert(matches[i]);
+ }
+ else if (matches[i].code == 'X') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = Seed.sprintf.convert(matches[i]).toUpperCase();
+ }
+ else {
+ substitution = matches[i].match;
+ }
+
+ newString += strings[i];
+ newString += substitution;
+
+ }
+ newString += strings[i];
+
+ return newString;
+
+};
+
+Seed.sprintf.convert = function(match, nosign)
+{
+ if (nosign) {
+ match.sign = '';
+ } else {
+ match.sign = match.negative ? '-' : match.sign;
+ }
+ var l = match.min - match.argument.length + 1 - match.sign.length;
+ var pad = new Array(l < 0 ? 0 : l).join(match.pad);
+ if (!match.left) {
+ if (match.pad == "0" || nosign) {
+ return match.sign + pad + match.argument;
+ } else {
+ return pad + match.sign + match.argument;
+ }
+ } else {
+ if (match.pad == "0" || nosign) {
+ return match.sign + match.argument + pad.replace(/0/g, ' ');
+ } else {
+ return match.sign + match.argument + pad;
+ }
+ }
+};
+
+
+Seed.repl = function()
+{
+ try
+ {
+ if(readline)
+ {
+ // readline is loaded
+ }
+ }
+ catch (e)
+ {
+ try
+ {
+ readline = imports.readline;
+ }
+ catch (e)
+ {
+ print(e.name + " " + e.message);
+ return true;
+ }
+ }
+
+ try
+ {
+ item = readline.readline("> ");
+ if (item == "continue")
+ return false;
+ print(eval(item));
+ }
+ catch (e)
+ {
+ print(e.name + " " + e.message);
+ }
+ return true;
+}
+
+
+Seed.glib_repl = function()
+{
+ GLib.idle_add(Seed.repl, null);
+}
+
+Seed.thread_repl = function()
+{
+ GLib.thread_create_full(function() { while(Seed.repl()){} },
+ null, 0, true);
+}
+
+Seed.printf = function () { print(Seed.sprintf.apply(this, arguments)) };
diff --git a/extensions/repl.js b/extensions/repl.js
new file mode 100755
index 0000000..6e80cf3
--- /dev/null
+++ b/extensions/repl.js
@@ -0,0 +1,49 @@
+#!/usr/bin/env seed
+
+readline = imports.readline;
+sandbox = imports.sandbox;
+os = imports.os;
+
+var lastLastLength = '-1';
+
+context = new sandbox.Context();
+context.add_globals();
+
+bind_cr = function(){
+ var buffer = readline.buffer();
+ if (buffer.length == lastLastLength)
+ readline.done();
+ try {
+ Seed.check_syntax(buffer);
+ readline.done();
+ }
+ catch (e){
+ os.write(1, "\n..");
+ lastLastLength = buffer.length;
+ return;
+ }
+ os.write(1, "\n");
+ lastLastLength = buffer.length;
+}
+
+readline.bind('\n', bind_cr);
+readline.bind('\r', bind_cr);
+readline.bind('\t', function(){
+ readline.insert("\t");
+});
+
+//var re = /[^=<>*-^/]=[^=<>*-^/]\(*\s*(new\s*)?[^:punct:]|'|"+\)*$/
+
+while(1){
+ try{
+ item = readline.readline("> ");
+ result = context.eval(item);
+// if (!re.exec(item) && (result != undefined))
+ if (result != undefined)
+ print(result)
+
+ }
+ catch(e){
+ print(e.name + " " + e.message);
+ }
+}
diff --git a/gtk-doc.make b/gtk-doc.make
new file mode 100644
index 0000000..1f75dfd
--- /dev/null
+++ b/gtk-doc.make
@@ -0,0 +1,280 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+EXTRA_DIST = \
+ $(HTML_IMAGES) \
+ $(SETUP_FILES)
+
+DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+if GTK_DOC_BUILD_HTML
+HTML_BUILD_STAMP=html-build.stamp
+else
+HTML_BUILD_STAMP=
+endif
+if GTK_DOC_BUILD_PDF
+PDF_BUILD_STAMP=pdf-build.stamp
+else
+PDF_BUILD_STAMP=
+endif
+
+all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+else
+all-local:
+endif
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+setup-build.stamp:
+ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ echo ' DOC Preparing build'; \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ @touch setup-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo ' DOC Scanning header files'
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ echo " DOC Introspecting gobjects"; \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo ' DOC Rebuilding template files'
+ @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo ' DOC Building XML'
+ @-chmod -R u+w $(srcdir)
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building HTML'
+ @rm -rf html
+ @mkdir html
+ @mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ @echo ' DOC Fixing cross-references'
+ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ @touch html-build.stamp
+
+#### pdf ####
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building PDF'
+ @rm -f $(DOC_MODULE).pdf
+ @mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ @touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local: clean
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..6781b98
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# 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.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+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:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -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.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; 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
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ 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 "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # 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: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # 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
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $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 $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 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.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libseed/Makefile.am b/libseed/Makefile.am
new file mode 100644
index 0000000..b45c893
--- /dev/null
+++ b/libseed/Makefile.am
@@ -0,0 +1,51 @@
+lib_LTLIBRARIES = \
+ libseed@SEED_GTK_VERSION@.la
+
+libseed@SEED_GTK_VERSION@_la_SOURCES = \
+ seed-closure.c \
+ seed-api.c \
+ seed-closure.h \
+ seed-builtins.c \
+ seed-builtins.h \
+ seed-debug.h \
+ seed-exceptions.c \
+ seed-exceptions.h \
+ seed-engine.c \
+ seed-engine.h \
+ seed-private.h \
+ seed-signals.c \
+ seed-signals.h \
+ seed-structs.c \
+ seed-gtype.c \
+ seed-gtype.h \
+ seed-structs.h \
+ seed-types.c \
+ seed-types.h \
+ seed-importer.c \
+ seed-importer.h \
+ seed-path.h
+
+libseed@SEED_GTK_VERSION@_la_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(WEBKIT_CFLAGS) \
+ $(SEED_OSX_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS) \
+ $(FFI_CFLAGS) \
+ -DGOBJECT_INTROSPECTION_VERSION=$(GOBJECT_INTROSPECTION_VERSION)
+
+libseed@SEED_GTK_VERSION@_la_LDFLAGS = \
+ $(FFI_LDFLAGS)
+
+libseed@SEED_GTK_VERSION@_la_LIBADD = \
+ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(WEBKIT_LIBS) \
+ $(SEED_PROFILE_LIBS) \
+ $(SEED_OSX_LIBS) \
+ $(FFI_LIBS) -ldl
+
+seedheaders_HEADERS = seed.h seed-debug.h seed-module.h
+
+seedheadersdir = $(pkgincludedir)@SEED_GTK_VERSION@
+
diff --git a/libseed/Makefile.in b/libseed/Makefile.in
new file mode 100644
index 0000000..de18295
--- /dev/null
+++ b/libseed/Makefile.in
@@ -0,0 +1,804 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = libseed
+DIST_COMMON = $(seedheaders_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/seed-path.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = seed-path.h
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(seedheadersdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libseed@SEED_GTK_VERSION@_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+am_libseed@SEED_GTK_VERSION@_la_OBJECTS = \
+ libseed@SEED_GTK_VERSION@_la-seed-closure.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-api.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-builtins.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-engine.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-signals.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-structs.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-gtype.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-types.lo \
+ libseed@SEED_GTK_VERSION@_la-seed-importer.lo
+libseed@SEED_GTK_VERSION@_la_OBJECTS = \
+ $(am_libseed@SEED_GTK_VERSION@_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed@SEED_GTK_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) \
+ $(libseed@SEED_GTK_VERSION@_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed@SEED_GTK_VERSION@_la_SOURCES)
+DIST_SOURCES = $(libseed@SEED_GTK_VERSION@_la_SOURCES)
+HEADERS = $(seedheaders_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+lib_LTLIBRARIES = \
+ libseed@SEED_GTK_VERSION@.la
+
+libseed@SEED_GTK_VERSION@_la_SOURCES = \
+ seed-closure.c \
+ seed-api.c \
+ seed-closure.h \
+ seed-builtins.c \
+ seed-builtins.h \
+ seed-debug.h \
+ seed-exceptions.c \
+ seed-exceptions.h \
+ seed-engine.c \
+ seed-engine.h \
+ seed-private.h \
+ seed-signals.c \
+ seed-signals.h \
+ seed-structs.c \
+ seed-gtype.c \
+ seed-gtype.h \
+ seed-structs.h \
+ seed-types.c \
+ seed-types.h \
+ seed-importer.c \
+ seed-importer.h \
+ seed-path.h
+
+libseed@SEED_GTK_VERSION@_la_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(WEBKIT_CFLAGS) \
+ $(SEED_OSX_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS) \
+ $(FFI_CFLAGS) \
+ -DGOBJECT_INTROSPECTION_VERSION=$(GOBJECT_INTROSPECTION_VERSION)
+
+libseed@SEED_GTK_VERSION@_la_LDFLAGS = \
+ $(FFI_LDFLAGS)
+
+libseed@SEED_GTK_VERSION@_la_LIBADD = \
+ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(WEBKIT_LIBS) \
+ $(SEED_PROFILE_LIBS) \
+ $(SEED_OSX_LIBS) \
+ $(FFI_LIBS) -ldl
+
+seedheaders_HEADERS = seed.h seed-debug.h seed-module.h
+seedheadersdir = $(pkgincludedir)@SEED_GTK_VERSION@
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libseed/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libseed/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
+$(am__aclocal_m4_deps):
+seed-path.h: $(top_builddir)/config.status $(srcdir)/seed-path.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ 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
+libseed@SEED_GTK_VERSION@.la: $(libseed@SEED_GTK_VERSION@_la_OBJECTS) $(libseed@SEED_GTK_VERSION@_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed@SEED_GTK_VERSION@_la_LINK) -rpath $(libdir) $(libseed@SEED_GTK_VERSION@_la_OBJECTS) $(libseed@SEED_GTK_VERSION@_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-api.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-builtins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-closure.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-engine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-exceptions.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-gtype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-importer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-signals.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-structs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-types.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed@SEED_GTK_VERSION@_la-seed-closure.lo: seed-closure.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-closure.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-closure.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-closure.lo `test -f 'seed-closure.c' || echo '$(srcdir)/'`seed-closure.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-closure.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-closure.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-closure.c' object='libseed@SEED_GTK_VERSION@_la-seed-closure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-closure.lo `test -f 'seed-closure.c' || echo '$(srcdir)/'`seed-closure.c
+
+libseed@SEED_GTK_VERSION@_la-seed-api.lo: seed-api.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-api.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-api.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-api.lo `test -f 'seed-api.c' || echo '$(srcdir)/'`seed-api.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-api.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-api.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-api.c' object='libseed@SEED_GTK_VERSION@_la-seed-api.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-api.lo `test -f 'seed-api.c' || echo '$(srcdir)/'`seed-api.c
+
+libseed@SEED_GTK_VERSION@_la-seed-builtins.lo: seed-builtins.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-builtins.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-builtins.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-builtins.lo `test -f 'seed-builtins.c' || echo '$(srcdir)/'`seed-builtins.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-builtins.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-builtins.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-builtins.c' object='libseed@SEED_GTK_VERSION@_la-seed-builtins.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-builtins.lo `test -f 'seed-builtins.c' || echo '$(srcdir)/'`seed-builtins.c
+
+libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo: seed-exceptions.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-exceptions.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo `test -f 'seed-exceptions.c' || echo '$(srcdir)/'`seed-exceptions.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-exceptions.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-exceptions.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-exceptions.c' object='libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-exceptions.lo `test -f 'seed-exceptions.c' || echo '$(srcdir)/'`seed-exceptions.c
+
+libseed@SEED_GTK_VERSION@_la-seed-engine.lo: seed-engine.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-engine.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-engine.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-engine.lo `test -f 'seed-engine.c' || echo '$(srcdir)/'`seed-engine.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-engine.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-engine.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-engine.c' object='libseed@SEED_GTK_VERSION@_la-seed-engine.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-engine.lo `test -f 'seed-engine.c' || echo '$(srcdir)/'`seed-engine.c
+
+libseed@SEED_GTK_VERSION@_la-seed-signals.lo: seed-signals.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-signals.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-signals.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-signals.lo `test -f 'seed-signals.c' || echo '$(srcdir)/'`seed-signals.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-signals.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-signals.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-signals.c' object='libseed@SEED_GTK_VERSION@_la-seed-signals.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-signals.lo `test -f 'seed-signals.c' || echo '$(srcdir)/'`seed-signals.c
+
+libseed@SEED_GTK_VERSION@_la-seed-structs.lo: seed-structs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-structs.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-structs.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-structs.lo `test -f 'seed-structs.c' || echo '$(srcdir)/'`seed-structs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-structs.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-structs.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-structs.c' object='libseed@SEED_GTK_VERSION@_la-seed-structs.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-structs.lo `test -f 'seed-structs.c' || echo '$(srcdir)/'`seed-structs.c
+
+libseed@SEED_GTK_VERSION@_la-seed-gtype.lo: seed-gtype.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-gtype.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-gtype.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-gtype.lo `test -f 'seed-gtype.c' || echo '$(srcdir)/'`seed-gtype.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-gtype.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-gtype.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-gtype.c' object='libseed@SEED_GTK_VERSION@_la-seed-gtype.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-gtype.lo `test -f 'seed-gtype.c' || echo '$(srcdir)/'`seed-gtype.c
+
+libseed@SEED_GTK_VERSION@_la-seed-types.lo: seed-types.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-types.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-types.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-types.lo `test -f 'seed-types.c' || echo '$(srcdir)/'`seed-types.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-types.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-types.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-types.c' object='libseed@SEED_GTK_VERSION@_la-seed-types.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-types.lo `test -f 'seed-types.c' || echo '$(srcdir)/'`seed-types.c
+
+libseed@SEED_GTK_VERSION@_la-seed-importer.lo: seed-importer.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -MT libseed@SEED_GTK_VERSION@_la-seed-importer.lo -MD -MP -MF $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-importer.Tpo -c -o libseed@SEED_GTK_VERSION@_la-seed-importer.lo `test -f 'seed-importer.c' || echo '$(srcdir)/'`seed-importer.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-importer.Tpo $(DEPDIR)/libseed@SEED_GTK_VERSION@_la-seed-importer.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-importer.c' object='libseed@SEED_GTK_VERSION@_la-seed-importer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed@SEED_GTK_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libseed@SEED_GTK_VERSION@_la-seed-importer.lo `test -f 'seed-importer.c' || echo '$(srcdir)/'`seed-importer.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-seedheadersHEADERS: $(seedheaders_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedheadersdir)" || $(MKDIR_P) "$(DESTDIR)$(seedheadersdir)"
+ @list='$(seedheaders_HEADERS)'; test -n "$(seedheadersdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(seedheadersdir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(seedheadersdir)" || exit $$?; \
+ done
+
+uninstall-seedheadersHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedheaders_HEADERS)'; test -n "$(seedheadersdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(seedheadersdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(seedheadersdir)" && rm -f $$files
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(seedheadersdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedheadersHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-libLTLIBRARIES uninstall-seedheadersHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am \
+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-seedheadersHEADERS \
+ install-strip 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-libLTLIBRARIES uninstall-seedheadersHEADERS
+
+
+# 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/libseed/seed-api.c b/libseed/seed-api.c
new file mode 100644
index 0000000..7ec4b11
--- /dev/null
+++ b/libseed/seed-api.c
@@ -0,0 +1,945 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include <stdarg.h>
+
+/**
+ * seed_value_protect:
+ * @ctx: A #SeedContext.
+ * @value: The #SeedValue to protect.
+ *
+ * Increments the "protection count" of @value, in case you want to store
+ * a reference somewhere where the garbage collector won't be able to find it,
+ * and don't want it to be collected!
+ *
+ * In order for @value to be collected afterwards, it will need to be
+ * unprotected the same number of times with seed_value_unprotect().
+ *
+ */
+void
+seed_value_protect (JSContextRef ctx, JSValueRef value)
+{
+ JSValueProtect (ctx, value);
+}
+
+/**
+ * seed_value_unprotect:
+ * @ctx: A #SeedContext.
+ * @value: The #SeedValue to unprotect.
+ *
+ * Decrements the "protection count" of @value, as explained in
+ * seed_value_protect().
+ *
+ */
+void
+seed_value_unprotect (JSContextRef ctx, JSValueRef value)
+{
+ JSValueUnprotect (ctx, value);
+}
+
+/**
+ * seed_context_create:
+ * @group: A #SeedContextGroup in which to create the new context, or %NULL to
+ * create it in the default context group.
+ * @global_class: The #SeedClass to use to create the global object, or %NULL to
+ * create it with the default class.
+ *
+ * Create a new #SeedContext. By default, this creates a new context
+ * which has no global objects; you can add the default set using
+ * seed_prepare_global_context().
+ *
+ * Return value: A new #SeedContext.
+ *
+ */
+JSGlobalContextRef
+seed_context_create (JSContextGroupRef group, JSClassRef global_class)
+{
+ return JSGlobalContextCreateInGroup (group, global_class);
+}
+
+/**
+ * seed_context_ref:
+ * @ctx: A #SeedContext.
+ *
+ * Increments the reference count of @ctx.
+ *
+ * Return value: @ctx
+ *
+ */
+JSGlobalContextRef
+seed_context_ref (JSGlobalContextRef ctx)
+{
+ return JSGlobalContextRetain (ctx);
+}
+
+/**
+ * seed_context_unref:
+ * @ctx: A #SeedContext.
+ *
+ * Decrements the reference count of @ctx.
+ *
+ */
+void
+seed_context_unref (JSGlobalContextRef ctx)
+{
+ JSGlobalContextRelease (ctx);
+}
+
+/**
+ * seed_context_collect:
+ * @ctx: A #SeedContext.
+ *
+ * Instructs JavaScriptCore to make a garbage collection pass.
+ * The context parameter is currently unused, and a pass is made
+ * through all contexts.
+ *
+ */
+void
+seed_context_collect (JSGlobalContextRef ctx)
+{
+ JSGarbageCollect(ctx);
+}
+
+/**
+ * seed_make_object:
+ * @ctx: The #SeedContext in which to create the new object.
+ * @class: The #SeedClass to use to create the new object, or %NULL to use the
+ * default object class.
+ * @private: The initial private data of the new object.
+ *
+ * Return value: A new #SeedObject.
+ *
+ */
+JSObjectRef
+seed_make_object (JSContextRef ctx, JSClassRef class, gpointer private)
+{
+ return JSObjectMake (ctx, class, private);
+}
+
+/**
+ * seed_object_set_property_at_index:
+ * @ctx: A #SeedContext.
+ * @object: A #SeedObject on which to set the property.
+ * @index: The index of the property to set.
+ * @value: The #SeedValue to use as the property's value.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Sets the property @index on @object to @value.
+ *
+ */
+void
+seed_object_set_property_at_index (JSContextRef ctx,
+ JSObjectRef object,
+ gint index,
+ JSValueRef value, JSValueRef * exception)
+{
+ JSObjectSetPropertyAtIndex (ctx, object, index, value, exception);
+}
+
+JSValueRef
+seed_object_get_property_at_index (JSContextRef ctx,
+ JSObjectRef object,
+ gint index, JSValueRef * exception)
+{
+ return JSObjectGetPropertyAtIndex (ctx, object, index, exception);
+}
+
+/**
+ * seed_object_call
+ * @ctx: A #SeedContext.
+ * @object: A #SeedObject to call.
+ * @this: The #SeedObject to use as the 'this' object inside the called function.
+ * @argument_count: The number of arguments in the @arguments array.
+ * @arguments: An array (@argument_count long) of #SeedValues to pass in as the
+ * function's arguments.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Calls @object as a function.
+ *
+ * Return value: The @SeedValue returned by the called function, or %NULL if an
+ * exception occurs or the object is not a function.
+ *
+ */
+JSValueRef
+seed_object_call (JSContextRef ctx,
+ JSObjectRef object,
+ JSObjectRef this,
+ size_t argument_count,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ return JSObjectCallAsFunction (ctx, object, this,
+ argument_count, arguments, exception);
+}
+
+/**
+ * seed_make_script:
+ * @ctx: A #SeedContext.
+ * @js: A string representing the contents of the script.
+ * @source_url: The filename of the script, for reference in errors, or %NULL.
+ * @line_number: The line number of the beginning of the script, for reference
+ * in error messages, or %NULL.
+ *
+ * Creates a new #SeedScript instance with @js as the contents, then
+ * checks for proper syntax.
+ *
+ * Note: seed_make_script() does not handle the shebang line, and will return a
+ * parse error if one is included in @js.
+ *
+ * Return value: The newly created #SeedScript.
+ *
+ */
+SeedScript *
+seed_make_script (JSContextRef ctx,
+ const gchar * js,
+ const gchar * source_url, gint line_number)
+{
+ SeedScript *ret = g_new0 (SeedScript, 1);
+
+ if (js)
+ ret->script = JSStringCreateWithUTF8CString (js);
+ else
+ ret->script = JSStringCreateWithUTF8CString ("");
+
+ if (source_url)
+ {
+ ret->source_url = JSStringCreateWithUTF8CString (source_url);
+ }
+ ret->line_number = line_number;
+
+ JSCheckScriptSyntax (ctx, ret->script,
+ ret->source_url, ret->line_number, &ret->exception);
+
+ return ret;
+}
+
+/**
+ * seed_script_new_from_file:
+ * @ctx: A #SeedContext.
+ * @file: The filename of the script to load.
+ *
+ * Uses seed_make_script() to create a #SeedScript from the contents of @file.
+ *
+ * Return value: The newly created #SeedScript.
+ *
+ */
+SeedScript *
+seed_script_new_from_file (JSContextRef ctx, gchar * file)
+{
+ SeedScript *script;
+ GError *e = NULL;
+ gchar *contents = NULL;
+
+ g_file_get_contents (file, &contents, NULL, &e);
+ script = seed_make_script (ctx, contents, file, 0);
+ if (e)
+ {
+ seed_make_exception_from_gerror (ctx, &script->exception, e);
+ g_error_free (e);
+ }
+
+ return script;
+}
+
+/**
+ * seed_evaluate:
+ * @ctx: A #SeedContext.
+ * @s: A #SeedScript to evaluate.
+ * @this: The object which should be assigned to the "this" global.
+ *
+ * Evaluates a #SeedScript with @this as the global "this" object.
+ *
+ * Return value: The #SeedValue returned by evaluating the script.
+ *
+ */
+JSValueRef
+seed_evaluate (JSContextRef ctx, SeedScript * s, JSObjectRef this)
+{
+ JSValueRef ret;
+
+ s->exception = 0;
+ ret = JSEvaluateScript (ctx,
+ s->script, this, s->source_url,
+ s->line_number, &s->exception);
+
+ return ret;
+}
+
+/**
+ * seed_simple_evaluate:
+ * @ctx: A #SeedContext.
+ * @source: A string representing the JavaScript to evaluate.
+ * @exception: A #SeedException pointer to store an exception in.
+ *
+ * Evaluates a string of JavaScript in @ctx; if an exception
+ * is raised in the context of the script, it will be placed in @exception.
+ *
+ * Return value: The #SeedValue returned by evaluating the script.
+ *
+ */
+JSValueRef
+seed_simple_evaluate (JSContextRef ctx,
+ const gchar * source, JSValueRef * exception)
+{
+ JSValueRef ret;
+ JSStringRef script = JSStringCreateWithUTF8CString (source);
+
+ ret = JSEvaluateScript (ctx, script, NULL, NULL, 0, exception);
+
+ JSStringRelease (script);
+ return ret;
+}
+
+/**
+ * seed_script_exception:
+ * @s: A #SeedScript.
+ *
+ * Retrieves the exception (if any) raised during the evaluation of @s.
+ *
+ * Return value: A #SeedException representing the exception of @s.
+ *
+ */
+JSValueRef
+seed_script_exception (SeedScript * s)
+{
+ return s->exception;
+}
+
+/**
+ * seed_string_get_maximum_size:
+ * @string: A #SeedString.
+ *
+ * Return value: The maximum number of bytes @string will take up if converted
+ * to a null-terminated UTF8 string.
+ *
+ */
+gsize
+seed_string_get_maximum_size (JSStringRef string)
+{
+ return JSStringGetMaximumUTF8CStringSize (string);
+}
+
+/**
+ * seed_string_to_utf8_buffer:
+ * @string: A #SeedString.
+ * @buffer: An allocated string.
+ * @buffer_size: The length of @buffer, in bytes.
+ *
+ * Return value: A the number of bytes copied into @buffer.
+ *
+ */
+gsize
+seed_string_to_utf8_buffer (JSStringRef string, gchar * buffer,
+ size_t buffer_size)
+{
+ return JSStringGetUTF8CString (string, buffer, buffer_size);
+}
+
+/**
+ * seed_string_is_equal:
+ * @a: The first #SeedString to compare.
+ * @b: The second #SeedString to compare.
+ *
+ * Return value: #true, if a and b are equal, #false otherwise.
+ *
+ */
+gboolean
+seed_string_is_equal (JSStringRef a, JSStringRef b)
+{
+ return JSStringIsEqual (a, b);
+}
+
+/**
+ * seed_string_is_equal_utf8:
+ * @a: The #SeedString to compare.
+ * @b: A #gchar* to compare to.
+ *
+ * Tests the equality of a SeedString and a UTF-8 C-style string.
+ *
+ * Return value: #true, if a and b are equal, #false otherwise.
+ *
+ */
+gboolean
+seed_string_is_equal_utf8 (JSStringRef a, const gchar * b)
+{
+ return JSStringIsEqualToUTF8CString (a, b);
+}
+
+/**
+ * seed_string_ref:
+ * @string: A #SeedString.
+ *
+ * Increments the reference count of @string.
+ *
+ * Return value: @string
+ *
+ */
+JSStringRef
+seed_string_ref (JSStringRef string)
+{
+ return JSStringRetain (string);
+}
+
+/**
+ * seed_string_unref:
+ * @string: A #SeedString.
+ *
+ * Decrements the reference count of @string.
+ *
+ */
+void
+seed_string_unref (JSStringRef string)
+{
+ JSStringRelease (string);
+}
+
+void
+seed_script_destroy (SeedScript * s)
+{
+ seed_string_unref (s->script);
+ seed_string_unref (s->source_url);
+
+ g_free (s);
+}
+
+// TODO:FIXME: Do we have an external typedef or anything for JSClassDefinition?
+
+/**
+ * seed_create_class:
+ * @def: A #JSClassDefinition.
+ *
+ * Return value: A #SeedClass, described by @def.
+ *
+ */
+JSClassRef
+seed_create_class (JSClassDefinition * def)
+{
+ return JSClassCreate (def);
+}
+
+/* TODO:FIXME: GtkDoc is choking on JSObjectCallAsConstructorCallback, and
+ merging it into the parameter name...??! */
+
+/**
+ * seed_make_constructor:
+ * @ctx: A #SeedContext.
+ * @class: A #SeedClass to use as the default for constructed objects.
+ * @constructor: The #JSObjectCallAsConstructorCallback function to call when
+ * the constructor is invoked with 'new'.
+ *
+ * Return value: A #SeedObject, which is a constructor function.
+ *
+ */
+JSObjectRef
+seed_make_constructor (JSContextRef ctx,
+ JSClassRef class,
+ JSObjectCallAsConstructorCallback constructor)
+{
+ return JSObjectMakeConstructor (ctx, class, constructor);
+}
+
+/**
+ * seed_object_get_private:
+ * @object: A #SeedObject.
+ *
+ * Retrieves the private data of @object.
+ *
+ * Return value: A pointer to the private data of @object.
+ *
+ */
+gpointer
+seed_object_get_private (JSObjectRef object)
+{
+ return (gpointer) JSObjectGetPrivate (object);
+}
+
+/**
+ * seed_object_set_private:
+ * @object: A #SeedObject.
+ * @value: A #gpointer to set the private data of @object to.
+ *
+ * Sets the private data of @object to @value.
+ *
+ */
+void
+seed_object_set_private (JSObjectRef object, gpointer value)
+{
+ JSObjectSetPrivate (object, value);
+}
+
+/**
+ * seed_value_is_null:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value represents the JavaScript null value
+ *
+ * Return value: A #gboolean (%true if @value is 'null')
+ *
+ */
+gboolean
+seed_value_is_null (JSContextRef ctx, JSValueRef value)
+{
+ return JSValueIsNull (ctx, value);
+}
+
+/**
+ * seed_value_is_undefined:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value represents the JavaScript undefined value
+ *
+ * Return value: A #gboolean (%true if @value is 'undefined')
+ *
+ */
+gboolean
+seed_value_is_undefined (JSContextRef ctx, JSValueRef value)
+{
+ return JSValueIsUndefined (ctx, value);
+}
+
+/**
+ * seed_value_is_object:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value is a JavaScript object
+ *
+ * Return value: A #gboolean (%true if @value is an object)
+ *
+ */
+gboolean
+seed_value_is_object (JSContextRef ctx, JSValueRef value)
+{
+ return !seed_value_is_null (ctx, value) && JSValueIsObject (ctx, value);
+}
+
+/**
+ * seed_value_is_object_of_class:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ * @klass: A #SeedClass.
+ *
+ * Determine whether or not @value is an object of the specified class
+ *
+ * Return value: A #gboolean (%true if @value is of class @klass)
+ *
+ */
+gboolean
+seed_value_is_object_of_class (JSContextRef ctx, JSValueRef value,
+ JSClassRef klass)
+{
+ return !seed_value_is_null (ctx, value)
+ && JSValueIsObjectOfClass (ctx, value, klass);
+}
+
+/**
+ * seed_value_is_function:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value is a JavaScript function (and, therefore,
+ * an object)
+ *
+ * Return value: A #gboolean (%true if @value is a function)
+ *
+ */
+gboolean
+seed_value_is_function (JSContextRef ctx, JSObjectRef value)
+{
+ return seed_value_is_object (ctx, value) && JSObjectIsFunction (ctx, value);
+}
+
+/**
+ * seed_value_is_string:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value is a JavaScript string
+ *
+ * Return value: A #gboolean (%true if @value is a string)
+ *
+ */
+gboolean
+seed_value_is_string (JSContextRef ctx, JSValueRef value)
+{
+ return JSValueIsString (ctx, value);
+}
+
+/**
+ * seed_value_is_number:
+ * @ctx: A #SeedContext.
+ * @value: A #SeedValue.
+ *
+ * Determine whether or not @value is a JavaScript number
+ *
+ * Return value: A #gboolean (%true if @value is a number)
+ *
+ */
+gboolean
+seed_value_is_number (JSContextRef ctx, JSValueRef value)
+{
+ return JSValueIsNumber (ctx, value);
+}
+
+/**
+ * seed_engine_set_search_path:
+ * @eng: A #SeedEngine, on which to set the path.
+ * @path: A #const gchar*, a colon separated string containing the path to set
+ *
+ * Sets the search path for the imports system.
+ *
+ */
+void
+seed_engine_set_search_path (SeedEngine * eng, const gchar * path)
+{
+ /* this should be null from seed_init unless there's already a path set. */
+
+ g_strfreev (eng->search_path);
+ eng->search_path = g_strsplit (path, ":", -1);
+}
+
+/**
+ * seed_engine_get_search_path:
+ * @eng: A #SeedEngine, to get the currently set search path.
+ *
+ * Retrieves the search path for the imports system. The returned value is
+ * owned by the #SeedEngine, and shouldn't be freed by the application writer.
+ *
+ * Return value: A null-terminated array of strings containing the paths.
+ *
+ */
+gchar **
+seed_engine_get_search_path (SeedEngine * eng)
+{
+ return eng->search_path;
+}
+
+/**
+ * seed_signal_connect_full:
+ * @ctx: A valid #SeedContext
+ * @object: A #GObject, to connect the signal on.
+ * @signal: A signal specification.
+ * @function: The JavaScript function to connect to the signal.
+ * @user_data: An additional parameter to pass to the function.
+ *
+ * Connects @function to the signal specified by @signal on @object. @user_data
+ * is passed as the user_data argument to the callback function.
+ *
+ */
+void
+seed_signal_connect_full (JSContextRef ctx,
+ GObject * object,
+ const gchar * signal,
+ JSObjectRef function, JSObjectRef user_data)
+{
+ seed_gobject_signal_connect (ctx, signal, object, function,
+ NULL, user_data);
+}
+
+/**
+ * seed_signal_connect:
+ * @ctx: A valid #SeedContext
+ * @object: A #GObject, to connect the signal on.
+ * @signal: A signal specification.
+ * @script: The script to connect to the signal. Should return a function.
+ *
+ * Evaluates @script, which should return a function, then connects the returned
+ * function to the signal specified by @signal on @object. @user_data
+ * is passed as the user_data argument to the callback function.
+ *
+ */
+void
+seed_signal_connect (JSContextRef ctx,
+ GObject * object,
+ const gchar * signal, const gchar * script)
+{
+ JSValueRef func;
+
+ func = seed_simple_evaluate (ctx, script, NULL);
+ seed_signal_connect_full (ctx, object, signal, (JSObjectRef) func, NULL);
+}
+
+/**
+ * seed_context_get_global_object:
+ * @ctx: A valid #SeedContext
+ *
+ * Return value: The global object for @ctx.
+ */
+JSObjectRef
+seed_context_get_global_object (JSGlobalContextRef ctx)
+{
+ return JSContextGetGlobalObject (ctx);
+}
+
+
+/**
+ * seed_make_array:
+ * @ctx: A valid #SeedContext
+ * @elements: An array of #SeedValue's with which to populate the array.
+ * @num_elements: The number of values, in @elements
+ * @exception: A #SeedException in which to store an exception.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Creates a JavaScript Array object from @elements, a C-style array of
+ * SeedValues.
+ *
+ * Return value: A new array object, populated with @elements.
+ */
+
+JSObjectRef
+seed_make_array (JSContextRef ctx,
+ const JSValueRef elements[],
+ gsize num_elements, JSValueRef * exception)
+{
+ return JSObjectMakeArray (ctx, num_elements, elements, exception);
+}
+
+/**
+ * seed_make_null:
+ * @ctx: A valid #SeedContext
+ *
+ * Note that this function returns a valid SeedValue,
+ * representing the null JavaScript value, and not a
+ * null SeedValue.
+ *
+ * Return value: A #SeedValue of the 'null' type.
+ *
+ */
+JSValueRef
+seed_make_null (JSContextRef ctx)
+{
+ return JSValueMakeNull (ctx);
+}
+
+/**
+ * seed_make_undefined:
+ * @ctx: A valid #SeedContext
+ *
+ * Note that this function returns a valid SeedValue,
+ * representing the undefined JavaScript value, and not an
+ * undefined SeedValue.
+ *
+ * Return value: A #SeedValue of the 'undefined' type.
+ */
+JSValueRef
+seed_make_undefined (JSContextRef ctx)
+{
+ return JSValueMakeUndefined (ctx);
+}
+
+/**
+ * seed_value_get_type:
+ * @ctx: A valid #SeedContext
+ * @value: A #SeedValue
+ *
+ * Return value: The type of @value
+ */
+JSType
+seed_value_get_type (JSContextRef ctx, JSValueRef value)
+{
+ return JSValueGetType (ctx, value);
+}
+
+/**
+ * seed_object_copy_property_names:
+ * @ctx: A valid #SeedContext
+ * @object: An object from which to copy property names.
+ *
+ * Return value: A %NULL terminated array containing the property names of @object
+ */
+gchar **
+seed_object_copy_property_names (JSContextRef ctx, JSObjectRef object)
+{
+ JSPropertyNameArrayRef names;
+ JSStringRef name;
+ guint i, length;
+ gsize max_length;
+ gchar *c_name;
+ gchar **ret;
+
+ names = JSObjectCopyPropertyNames (ctx, object);
+ length = JSPropertyNameArrayGetCount (names);
+ ret = (gchar **) g_malloc ((length + 1) * sizeof (gchar *));
+ for (i = 0; i < length; i++)
+ {
+ name = JSPropertyNameArrayGetNameAtIndex (names, i);
+ max_length = JSStringGetMaximumUTF8CStringSize (name);
+ c_name = (gchar *) g_malloc (max_length * sizeof (gchar));
+ JSStringGetUTF8CString (name, c_name, max_length);
+ ret[i] = c_name;
+
+ }
+ ret[length] = NULL;
+ JSPropertyNameArrayRelease (names);
+
+ return ret;
+}
+
+/**
+ * seed_object_get_prototype:
+ * @ctx: A valid #SeedContext
+ * @obj: A #SeedObject
+ *
+ * Return value: The prototype of @obj.
+ */
+JSObjectRef
+seed_object_get_prototype (JSContextRef ctx, JSObjectRef obj)
+{
+ return (JSObjectRef) JSObjectGetPrototype (ctx, obj);
+}
+
+gboolean
+seed_object_is_of_class (JSContextRef ctx, JSObjectRef obj, JSClassRef class)
+{
+ return JSValueIsObjectOfClass (ctx, obj, class);
+}
+
+/**
+ * seed_make_function:
+ * @ctx: A valid #SeedContext
+ * @func: A #SeedFunctionCallback to implement the function.
+ * @name: The name of the function (used in exceptions).
+ *
+ * Creates a JavaScript object representing a first-class function; when
+ * the function is called from JavaScript, @func will be called.
+ *
+ * Return value: A #SeedObject representing the function
+ */
+JSObjectRef
+seed_make_function (JSContextRef ctx, gpointer func, gchar * name)
+{
+ JSObjectRef oref;
+ JSStringRef jsname = NULL;
+ if (name)
+ jsname = JSStringCreateWithUTF8CString (name);
+ oref = JSObjectMakeFunctionWithCallback (ctx, NULL, func);
+
+ if (jsname)
+ JSStringRelease (jsname);
+
+ return oref;
+}
+
+/**
+ * seed_value_to_format:
+ * @ctx: A valid #SeedContext
+ * @format: Format string to use.
+ * @exception: Location to store an exception.
+ * @values: The values to convert.
+ * @Varargs: A %NULL-terminated list of locations to store the results of conversion.
+ *
+ * A convenience API for converting multiple values at once, the format string
+ * is composed of single characters specifying types, for example:
+ * i: gint
+ * u: guint
+ * o: GObject *
+ * s: gchar *
+ * f: gdouble
+ * c: gchar
+ *
+ * and a valid format string could be "iuo".
+ *
+ * This function may be in particular useful in converting arguments
+ * in a #SeedFunctionCallback.
+ * Return value: Whether conversion was successful.
+ */
+gboolean
+seed_value_to_format (JSContextRef ctx,
+ const gchar * format,
+ JSValueRef * values, JSValueRef * exception, ...)
+{
+ va_list argp;
+ const gchar *c;
+ guint i = 0;
+
+ c = format;
+
+ va_start (argp, exception);
+
+ for (c = format; *c; c++)
+ {
+ JSValueRef val = values[i];
+ gpointer p = va_arg (argp, gpointer);
+
+ if (!val || !p)
+ {
+ va_end (argp);
+ return FALSE;
+ }
+ switch (*c)
+ {
+ case 'i':
+ {
+ *((gint *) p) = seed_value_to_int (ctx, val, exception);
+ break;
+ }
+ case 'u':
+ {
+ *((guint *) p) = seed_value_to_uint (ctx, val, exception);
+ break;
+ }
+ case 's':
+ {
+ *((gchar **) p) = seed_value_to_string (ctx, val, exception);
+ break;
+ }
+ case 'f':
+ {
+ *((gdouble *) p) = seed_value_to_int (ctx, val, exception);
+ break;
+ }
+ case 'o':
+ {
+ *((GObject **) p) = seed_value_to_object (ctx, val, exception);
+ break;
+ }
+ case 'c':
+ {
+ *((gchar *) c) = seed_value_to_char (ctx, val, exception);
+ break;
+ }
+ }
+ i++;
+ }
+
+ va_end (argp);
+ return TRUE;
+}
+
+/*************************** CALLBACK DOCUMENTATION **************************/
+
+/**
+ * SeedFunctionCallback:
+ * @ctx: A #SeedContext
+ * @function: The #SeedObject representing the function
+ * @this_object: The #SeedObject representing the "this" object in the caller
+ * @argument_count: The number of arguments passed into the callback
+ * @arguments: An array of #SeedValues; the value of the arguments passed in
+ * @exception: A reference to a #SeedException; use seed_make_exception() in order
+ * to throw a JavaScript exception from the callback.
+ *
+ * All native C function callbacks should use the prototype of
+ * SeedFunctionCallback.
+ *
+ * Return value: The #SeedValue to return to the caller
+ */
diff --git a/libseed/seed-builtins.c b/libseed/seed-builtins.c
new file mode 100644
index 0000000..b5b14fc
--- /dev/null
+++ b/libseed/seed-builtins.c
@@ -0,0 +1,557 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <unistd.h>
+#include "seed-private.h"
+#include <sys/mman.h>
+#include <stdio.h>
+#include <signal.h>
+
+JSValueRef seed_print_ref;
+JSValueRef seed_printerr_ref;
+
+static JSValueRef
+seed_include (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ JSStringRef file_contents, file_name;
+
+ GDir *dir;
+ gchar *import_file, *abs_path;
+ gchar *buffer, *walk;
+ guint i, len;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.include expected 1 argument, "
+ "got %zd", argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ import_file = seed_value_to_string (ctx, arguments[0], exception);
+
+ /* just try current dir if no path set, or use the absolute path */
+ if (!eng->search_path || g_path_is_absolute (import_file))
+ g_file_get_contents (import_file, &buffer, 0, NULL);
+ else /* A search path is set and path given is not absolute. */
+ {
+ len = g_strv_length (eng->search_path);
+ for (i = 0; i < len; ++i)
+ {
+ dir = g_dir_open (eng->search_path[i], 0, NULL);
+
+ if (!dir) /* skip bad path entries */
+ continue;
+
+ abs_path =
+ g_build_filename (eng->search_path[i], import_file, NULL);
+
+ if (g_file_get_contents (abs_path, &buffer, 0, NULL))
+ {
+ g_free (abs_path);
+ g_dir_close (dir);
+ break;
+ }
+
+ g_dir_close (dir);
+ g_free (abs_path);
+ }
+ }
+
+ if (!buffer)
+ {
+ seed_make_exception (ctx, exception, "FileNotFound",
+ "File not found: %s", import_file);
+
+ g_free (import_file);
+ g_free (buffer);
+ return JSValueMakeNull (ctx);
+ }
+
+ walk = buffer;
+
+ if (*walk == '#')
+ {
+ while (*walk != '\n')
+ walk++;
+ walk++;
+ }
+
+ walk = g_strdup (walk);
+ g_free (buffer);
+
+ file_contents = JSStringCreateWithUTF8CString (walk);
+ file_name = JSStringCreateWithUTF8CString (import_file);
+
+ JSEvaluateScript (ctx, file_contents, NULL, file_name, 0, exception);
+
+ JSStringRelease (file_contents);
+ JSStringRelease (file_name);
+ g_free (import_file);
+ g_free (walk);
+
+ return JSValueMakeUndefined (ctx);
+}
+
+static JSValueRef
+seed_scoped_include (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ JSContextRef nctx;
+ JSObjectRef global;
+ JSStringRef file_contents, file_name;
+ GDir *dir;
+ gchar *import_file, *abs_path;
+ gchar *buffer, *walk;
+ guint i;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.include expected 1 argument, "
+ "got %zd", argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ import_file = seed_value_to_string (ctx, arguments[0], exception);
+
+ /* just try current dir if no path set, or use the absolute path */
+ if (!eng->search_path || g_path_is_absolute (import_file))
+ g_file_get_contents (import_file, &buffer, 0, NULL);
+ else /* A search path is set and path given is not absolute. */
+ {
+ for (i = 0; i < g_strv_length (eng->search_path); ++i)
+ {
+ dir = g_dir_open (eng->search_path[i], 0, NULL);
+
+ if (!dir) /* skip bad path entries */
+ continue;
+
+ abs_path =
+ g_build_filename (eng->search_path[i], import_file, NULL);
+
+ if (g_file_get_contents (abs_path, &buffer, 0, NULL))
+ {
+ g_free (abs_path);
+ break;
+ }
+
+ g_dir_close (dir);
+ g_free (abs_path);
+ }
+ }
+
+ if (!buffer)
+ {
+ seed_make_exception (ctx, exception, "FileNotFound",
+ "File not found: %s", import_file);
+
+ g_free (import_file);
+ g_free (buffer);
+ return JSValueMakeNull (ctx);
+ }
+
+ walk = buffer;
+
+ if (*walk == '#')
+ {
+ while (*walk != '\n')
+ walk++;
+ walk++;
+ }
+
+ walk = g_strdup (walk);
+ g_free (buffer);
+
+ file_contents = JSStringCreateWithUTF8CString (walk);
+ file_name = JSStringCreateWithUTF8CString (import_file);
+
+
+ nctx = JSGlobalContextCreateInGroup (context_group, 0);
+ seed_prepare_global_context (nctx);
+
+ JSEvaluateScript (nctx, file_contents, NULL, file_name, 0, exception);
+
+ global = JSContextGetGlobalObject (nctx);
+
+ JSGlobalContextRelease ((JSGlobalContextRef) nctx);
+
+ JSStringRelease (file_contents);
+ JSStringRelease (file_name);
+ g_free (import_file);
+ g_free (walk);
+
+ return global;
+}
+
+static JSValueRef
+seed_print (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ gchar *buf;
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "print expected 1 argument, got %zd",
+ argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ buf = seed_value_to_string (ctx, arguments[0], exception);
+
+ g_print ("%s\n", buf);
+ g_free (buf);
+
+ return JSValueMakeUndefined (ctx);
+}
+
+static JSValueRef
+seed_printerr (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef *exception)
+{
+ gchar *buf;
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "printerr expected 1 argument, got %zd",
+ argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ buf = seed_value_to_string (ctx, arguments[0], exception);
+
+ g_printerr ("%s\n", buf);
+ g_free (buf);
+
+ return JSValueMakeUndefined (ctx);
+}
+
+const gchar *
+seed_g_type_name_to_string (GITypeInfo * type)
+{
+ GITypeTag type_tag = g_type_info_get_tag (type);
+
+ const gchar *type_name;
+ GIBaseInfo *interface;
+
+ if (type_tag == GI_TYPE_TAG_INTERFACE)
+ {
+ interface = g_type_info_get_interface (type);
+
+ type_name = g_base_info_get_name (interface);
+ g_base_info_unref (interface);
+ }
+ else
+ {
+ type_name = g_type_tag_to_string (type_tag);
+ }
+
+ return type_name;
+}
+
+static JSValueRef
+seed_introspect (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ // TODO: LEAKY!
+
+ GICallableInfo *info;
+ JSObjectRef data_obj, args_obj, argument;
+ guint i, nargs;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.introspect expected 1 argument, "
+ "got %zd", argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ if (!JSValueIsObject (ctx, arguments[0]))
+ return JSValueMakeNull (ctx);
+ if (!JSValueIsObjectOfClass (ctx, arguments[0], gobject_method_class))
+ return JSValueMakeNull (ctx);
+
+ info = (GICallableInfo *) JSObjectGetPrivate ((JSObjectRef) arguments[0]);
+ data_obj = JSObjectMake (ctx, NULL, NULL);
+
+ seed_object_set_property (ctx, data_obj, "name", (JSValueRef)
+ seed_value_from_string (ctx, g_base_info_get_name
+ ((GIBaseInfo *) info),
+ exception));
+
+ seed_object_set_property (ctx, data_obj, "return_type",
+ seed_value_from_string
+ (ctx, seed_g_type_name_to_string
+ (g_callable_info_get_return_type (info)),
+ exception));
+
+ args_obj = JSObjectMake (ctx, NULL, NULL);
+
+ seed_object_set_property (ctx, data_obj, "args", args_obj);
+
+ nargs = g_callable_info_get_n_args (info);
+ for (i = 0; i < nargs; ++i)
+ {
+ argument = JSObjectMake (ctx, NULL, NULL);
+ GIArgInfo* arg_info = g_callable_info_get_arg (info, i);
+ const gchar *arg_type = seed_g_type_name_to_string (
+ g_arg_info_get_type(arg_info));
+ const gchar *arg_name = g_base_info_get_name((GIBaseInfo*) arg_info);
+ GIDirection dir = g_arg_info_get_direction (arg_info);
+
+
+ seed_object_set_property (ctx, argument, "type",
+ seed_value_from_string (ctx,
+ arg_type, exception));
+ seed_object_set_property (ctx, argument, "name",
+ seed_value_from_string (ctx,
+ arg_name, exception));
+
+ seed_object_set_property (ctx, argument, "allow_none",
+ seed_value_from_boolean (ctx,
+ g_arg_info_may_be_null (arg_info) ? 1 : 0, exception));
+
+
+ seed_object_set_property (ctx, argument, "direction",
+ seed_value_from_string (ctx,
+ dir == GI_DIRECTION_OUT ? "out" :
+ (dir == GI_DIRECTION_IN ? "in" : "inout")
+ , exception));
+
+ JSObjectSetPropertyAtIndex (ctx, args_obj, i, argument, NULL);
+ }
+
+ return data_obj;
+}
+
+static JSValueRef
+seed_check_syntax (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ JSStringRef jsstr;
+ if (argumentCount == 1)
+ {
+ jsstr = JSValueToStringCopy (ctx, arguments[0], exception);
+
+ JSCheckScriptSyntax (ctx, jsstr, 0, 0, exception);
+ if (jsstr)
+ JSStringRelease (jsstr);
+ }
+ else
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.check_syntax expected "
+ "1 argument, got %zd", argumentCount);
+ }
+ return JSValueMakeNull (ctx);
+}
+
+static JSValueRef
+seed_spawn (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ gchar *line, *stdoutstr, *stderrstr;
+ JSObjectRef ret;
+ GError *error = NULL;
+
+ if (argumentCount != 1)
+ {
+ // I am so lazy
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.spawn expected 1 argument");
+ return JSValueMakeNull (ctx);
+ }
+
+ line = seed_value_to_string (ctx, arguments[0], exception);
+ g_spawn_command_line_sync (line, &stdoutstr, &stderrstr, NULL, &error);
+ if (error)
+ {
+ seed_make_exception_from_gerror (ctx, exception, error);
+
+ g_free (line);
+ g_error_free (error);
+ return JSValueMakeNull (ctx);
+ }
+
+ ret = JSObjectMake (ctx, NULL, NULL);
+ seed_object_set_property (ctx, ret, "stdout",
+ seed_value_from_string (ctx, stdoutstr,
+ exception));
+ seed_object_set_property (ctx, ret, "stderr",
+ seed_value_from_string (ctx, stderrstr,
+ exception));
+
+ g_free (line);
+ g_free (stdoutstr);
+ g_free (stderrstr);
+
+ return ret;
+}
+
+static JSValueRef
+seed_quit (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ if (argumentCount == 1)
+ {
+ exit (seed_value_to_int (ctx, arguments[0], NULL));
+ }
+ else if (argumentCount > 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Seed.quit expected " "1 argument, got %zd",
+ argumentCount);
+ }
+
+ exit (EXIT_SUCCESS);
+}
+
+static JSValueRef
+seed_breakpoint (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ G_BREAKPOINT ();
+ return JSValueMakeUndefined (ctx);
+}
+
+
+static JSValueRef
+seed_argv_get_property (JSContextRef ctx,
+ JSObjectRef object,
+ JSStringRef property_name, JSValueRef * exception)
+{
+ SeedArgvPrivates *priv;
+ gchar *cproperty_name;
+ gsize length;
+ guint index;
+
+ priv = JSObjectGetPrivate (object);
+ if (!priv->argc)
+ return JSValueMakeUndefined (ctx);
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ if (!g_strcmp0 (cproperty_name, "length"))
+ {
+ return seed_value_from_int (ctx, priv->argc, exception);
+ }
+ index = atoi (cproperty_name);
+ return seed_value_from_string (ctx, priv->argv[index], exception);
+}
+
+JSClassDefinition seed_argv_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype, /* JSClassAttributes */
+ "argv_array", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL,
+ NULL,
+ NULL,
+ NULL, /* Has Property */
+ seed_argv_get_property, /* Get Property */
+ NULL,
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassRef seed_argv_class;
+
+void
+seed_init_builtins (SeedEngine * local_eng, gint * argc, gchar *** argv)
+{
+ SeedArgvPrivates *priv;
+ JSObjectRef arrayObj;
+ JSObjectRef obj =
+ (JSObjectRef) seed_object_get_property (local_eng->context,
+ local_eng->global,
+ "Seed");
+
+ seed_create_function (local_eng->context, "include", &seed_include, obj);
+ seed_create_function (local_eng->context, "scoped_include",
+ &seed_scoped_include, obj);
+
+ seed_print_ref =
+ JSObjectMakeFunctionWithCallback (local_eng->context, NULL, &seed_print);
+ seed_object_set_property (local_eng->context, obj, "print", seed_print_ref);
+ seed_object_set_property (local_eng->context, local_eng->global, "print",
+ seed_print_ref);
+ JSValueProtect (local_eng->context, seed_print_ref);
+
+ seed_printerr_ref =
+ JSObjectMakeFunctionWithCallback (local_eng->context, NULL, &seed_printerr);
+ seed_object_set_property (local_eng->context, obj, "printerr", seed_printerr_ref);
+ seed_object_set_property (local_eng->context, local_eng->global, "printerr",
+ seed_printerr_ref);
+ JSValueProtect (local_eng->context, seed_printerr_ref);
+
+ seed_create_function (local_eng->context,
+ "check_syntax", &seed_check_syntax, obj);
+ seed_create_function (local_eng->context,
+ "introspect", &seed_introspect, obj);
+ seed_create_function (local_eng->context, "spawn", &seed_spawn, obj);
+ seed_create_function (local_eng->context, "quit", &seed_quit, obj);
+ seed_create_function (local_eng->context, "breakpoint",
+ &seed_breakpoint, obj);
+
+ priv = g_new0 (SeedArgvPrivates, 1);
+ priv->argv = argv ? *argv : 0;
+ priv->argc = argc ? *argc : 0;
+
+ seed_argv_class = JSClassCreate (&seed_argv_def);
+ arrayObj = JSObjectMake (local_eng->context, seed_argv_class, priv);
+
+ seed_object_set_property (local_eng->context, obj, "argv", arrayObj);
+
+}
diff --git a/libseed/seed-builtins.h b/libseed/seed-builtins.h
new file mode 100644
index 0000000..762ecc9
--- /dev/null
+++ b/libseed/seed-builtins.h
@@ -0,0 +1,38 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_BUILTINS_H_
+#define _SEED_BUILTINS_H_
+
+#include "seed-private.h"
+
+extern JSValueRef seed_print_ref;
+extern JSValueRef seed_printerr_ref;
+
+void seed_init_builtins (SeedEngine * local_eng, gint * argc, gchar *** argv);
+
+extern JSClassRef seed_argv_class;
+typedef struct _SeedArgvPrivates
+{
+ gchar **argv;
+ gint argc;
+} SeedArgvPrivates;
+
+
+#endif
diff --git a/libseed/seed-closure.c b/libseed/seed-closure.c
new file mode 100644
index 0000000..d273c25
--- /dev/null
+++ b/libseed/seed-closure.c
@@ -0,0 +1,482 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include <sys/types.h>
+#include <sys/mman.h>
+
+JSClassRef seed_native_callback_class;
+
+static void
+seed_closure_finalize (JSObjectRef object)
+{
+ SeedNativeClosure *privates =
+ (SeedNativeClosure *) JSObjectGetPrivate (object);
+
+ SEED_NOTE (FINALIZATION, "Finalizing closure object %p with "
+ "GIBaseInfo: %s \n", object,
+ g_base_info_get_name ((GIBaseInfo *) privates->info));
+
+ g_free (privates->cif->arg_types);
+ g_free (privates->cif);
+ g_callable_info_free_closure (privates->info, privates->closure);
+ g_base_info_unref ((GIBaseInfo *) privates->info);
+
+ JSValueUnprotect (eng->context, object);
+}
+
+static void
+seed_handle_closure (ffi_cif * cif, void *result, void **args, gpointer userdata)
+{
+ SeedNativeClosure *privates = userdata;
+ gint num_args, i;
+ JSValueRef *jsargs;
+ JSValueRef return_value, exception = 0;
+ GITypeTag return_tag;
+ GIArgInfo *arg_info;
+ GITypeInfo *return_type;
+ GITypeInfo *arg_type;
+ GITypeTag tag;
+ GArgument rarg, return_arg;
+ JSContextRef ctx = JSGlobalContextCreateInGroup (
+ context_group, 0);
+ GArgument *arg = &rarg;
+ gchar *mes;
+
+ seed_prepare_global_context (ctx);
+
+ SEED_NOTE (INVOCATION, "Invoking closure of type: %s \n",
+ g_base_info_get_name ((GIBaseInfo *) privates->info));
+
+ num_args = g_callable_info_get_n_args (privates->info);
+ return_type = g_callable_info_get_return_type (privates->info);
+ return_tag = g_type_info_get_tag (return_type);
+ jsargs = (JSValueRef *) g_newa (JSValueRef, num_args);
+
+ for (i = 0; i < num_args; i++)
+ {
+
+ arg_info = g_callable_info_get_arg (privates->info, i);
+ arg_type = g_arg_info_get_type (arg_info);
+ tag = g_type_info_get_tag (arg_type);
+
+ switch (tag)
+ {
+#if GOBJECT_INTROSPECTION_VERSION < 0x000900
+ case GI_TYPE_TAG_LONG:
+ arg->v_long = *(glong *) args[i];
+ break;
+ case GI_TYPE_TAG_ULONG:
+ arg->v_ulong = *(gulong *) args[i];
+ break;
+ case GI_TYPE_TAG_INT:
+ arg->v_int = *(gint *) args[i];
+ break;
+ case GI_TYPE_TAG_SSIZE:
+ arg->v_ssize = *(gssize *) args[i];
+ break;
+ case GI_TYPE_TAG_SIZE:
+ arg->v_size = *(gsize *) args[i];
+ break;
+ case GI_TYPE_TAG_UINT:
+ arg->v_uint = *(guint *) args[i];
+ break;
+#endif
+ case GI_TYPE_TAG_BOOLEAN:
+ arg->v_boolean = *(gboolean *) args[i];
+ break;
+ case GI_TYPE_TAG_INT8:
+ arg->v_int8 = *(gint8 *) args[i];
+ break;
+ case GI_TYPE_TAG_UINT8:
+ arg->v_uint8 = *(guint8 *) args[i];
+ break;
+ case GI_TYPE_TAG_INT16:
+ arg->v_int16 = *(gint16 *) args[i];
+ break;
+ case GI_TYPE_TAG_UINT16:
+ arg->v_uint16 = *(guint16 *) args[i];
+ break;
+ case GI_TYPE_TAG_INT32:
+ arg->v_int32 = *(gint32 *) args[i];
+ break;
+ case GI_TYPE_TAG_UINT32:
+ arg->v_uint32 = *(guint32 *) args[i];
+ break;
+ case GI_TYPE_TAG_INT64:
+ arg->v_int64 = *(gint64 *) args[i];
+ break;
+ case GI_TYPE_TAG_UINT64:
+ arg->v_uint64 = *(guint64 *) args[i];
+ break;
+ case GI_TYPE_TAG_FLOAT:
+ arg->v_float = *(gfloat *) args[i];
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ arg->v_double = *(gdouble *) args[i];
+ break;
+ case GI_TYPE_TAG_UTF8:
+ arg->v_string = *(gchar **) args[i];
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface;
+ GIInfoType interface_type;
+
+ interface = g_type_info_get_interface (arg_type);
+ interface_type = g_base_info_get_type (interface);
+
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
+ {
+ arg->v_pointer = *(gpointer *) args[i];
+ g_base_info_unref (interface);
+ break;
+ }
+
+ else if (interface_type == GI_INFO_TYPE_ENUM ||
+ interface_type == GI_INFO_TYPE_FLAGS)
+ {
+ arg->v_double = *(double *) args[i];
+ g_base_info_unref (interface);
+ break;
+ }
+ else if (interface_type == GI_INFO_TYPE_STRUCT)
+ {
+ arg->v_pointer = *(gpointer *) args[i];
+ g_base_info_unref (interface);
+ break;
+ }
+
+ g_base_info_unref (interface);
+ }
+ case GI_TYPE_TAG_GLIST:
+ case GI_TYPE_TAG_GSLIST:
+ arg->v_pointer = *(gpointer *) args[i];
+ break;
+ default:
+ arg->v_pointer = 0;
+ }
+ jsargs[i] = seed_value_from_gi_argument (ctx, arg, arg_type, 0);
+ seed_gi_release_arg (g_arg_info_get_ownership_transfer (arg_info),
+ arg_type, arg);
+ g_base_info_unref ((GIBaseInfo *) arg_info);
+ g_base_info_unref ((GIBaseInfo *) arg_type);
+ }
+
+ return_value = (JSValueRef)
+ JSObjectCallAsFunction (ctx,
+ (JSObjectRef) privates->function, 0,
+ num_args, jsargs, &exception);
+
+ if (exception)
+ {
+ mes = seed_exception_to_string (ctx, exception);
+ g_warning ("Exception in closure marshal. %s \n", mes);
+ g_free (mes);
+ exception = 0;
+ }
+
+ seed_value_to_gi_argument (ctx, (JSValueRef) return_value, return_type,
+ &return_arg, 0);
+ switch (return_tag)
+ {
+#if GOBJECT_INTROSPECTION_VERSION < 0x000900
+ case GI_TYPE_TAG_LONG:
+ *(glong *) result = return_arg.v_long;
+ break;
+ case GI_TYPE_TAG_ULONG:
+ *(gulong *) result = return_arg.v_ulong;
+ break;
+ case GI_TYPE_TAG_INT:
+ *(gint *) result = return_arg.v_int;
+ break;
+ case GI_TYPE_TAG_SSIZE:
+ *(gssize *) result = return_arg.v_ssize;
+ break;
+ case GI_TYPE_TAG_SIZE:
+ *(gsize *) result = return_arg.v_size;
+ break;
+ case GI_TYPE_TAG_UINT:
+ *(guint *) result = return_arg.v_uint;
+ break;
+#endif
+ case GI_TYPE_TAG_BOOLEAN:
+ *(gboolean *) result = return_arg.v_boolean;
+ break;
+ case GI_TYPE_TAG_INT8:
+ *(gint8 *) result = return_arg.v_int8;
+ break;
+ case GI_TYPE_TAG_UINT8:
+ *(guint8 *) result = return_arg.v_uint8;
+ break;
+ case GI_TYPE_TAG_INT16:
+ *(gint16 *) result = return_arg.v_int16;
+ break;
+ case GI_TYPE_TAG_UINT16:
+ *(guint16 *) result = return_arg.v_uint16;
+ break;
+ case GI_TYPE_TAG_INT32:
+ *(gint32 *) result = return_arg.v_int32;
+ break;
+ case GI_TYPE_TAG_UINT32:
+ *(guint32 *) result = return_arg.v_uint32;
+ break;
+ case GI_TYPE_TAG_INT64:
+ *(gint64 *) result = return_arg.v_int64;
+ break;
+ case GI_TYPE_TAG_UINT64:
+ *(guint64 *) result = return_arg.v_uint64;
+ break;
+ case GI_TYPE_TAG_FLOAT:
+ *(gfloat *) result = return_arg.v_float;
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ *(gdouble *) result = return_arg.v_double;
+ break;
+ case GI_TYPE_TAG_UTF8:
+ *(gchar **) result = return_arg.v_string;
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface;
+ GIInfoType interface_type;
+
+ interface = g_type_info_get_interface (return_type);
+ interface_type = g_base_info_get_type (interface);
+
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
+ {
+ *(gpointer *) result = return_arg.v_pointer;
+ break;
+ }
+
+ else if (interface_type == GI_INFO_TYPE_ENUM ||
+ interface_type == GI_INFO_TYPE_FLAGS)
+ {
+ *(double *) result = return_arg.v_double;
+ break;
+ }
+ else if (interface_type == GI_INFO_TYPE_STRUCT)
+ {
+ *(gpointer *) result = return_arg.v_pointer;
+ break;
+ }
+ }
+ case GI_TYPE_TAG_GLIST:
+ case GI_TYPE_TAG_GSLIST:
+ *(gpointer *) result = return_arg.v_pointer;
+ break;
+ default:
+ *(gpointer *) result = 0;
+ }
+
+ g_base_info_unref ((GIBaseInfo *) return_type);
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+}
+
+SeedNativeClosure *
+seed_make_native_closure (JSContextRef ctx,
+ GICallableInfo * info,
+ JSValueRef function)
+{
+ ffi_cif *cif;
+ ffi_closure *closure;
+ ffi_type **arg_types;
+ GITypeInfo *return_type;
+ gint num_args;
+ SeedNativeClosure *privates;
+ JSObjectRef cached;
+
+ cached =
+ (JSObjectRef) seed_object_get_property (ctx, (JSObjectRef) function,
+ "__seed_native_closure");
+ if (cached
+ && JSValueIsObjectOfClass (ctx, cached, seed_native_callback_class))
+ {
+ return (SeedNativeClosure *) JSObjectGetPrivate (cached);
+ }
+
+ num_args = g_callable_info_get_n_args (info);
+ return_type = g_callable_info_get_return_type (info);
+ arg_types = (ffi_type **) g_new0 (ffi_type *, num_args + 1);
+ cif = g_new0 (ffi_cif, 1);
+
+ privates = g_new0 (SeedNativeClosure, 1);
+ privates->ctx = ctx;
+ privates->info = (GICallableInfo *) g_base_info_ref ((GIBaseInfo *) info);
+ privates->function = function;
+ privates->cif = cif;
+
+ closure =
+ g_callable_info_prepare_closure (info, cif, seed_handle_closure,
+ privates);
+ privates->closure = closure;
+
+ JSValueProtect (ctx, function);
+
+ seed_object_set_property (ctx, (JSObjectRef) function,
+ "__seed_native_closure",
+ (JSValueRef) JSObjectMake (ctx,
+ seed_native_callback_class,
+ privates));
+
+ g_base_info_unref ((GIBaseInfo *) return_type);
+
+ return privates;
+}
+
+static void
+closure_invalidated (gpointer data, GClosure * c)
+{
+ SeedClosure *closure = (SeedClosure *) c;
+
+ SEED_NOTE (FINALIZATION, "Finalizing closure.");
+ if (closure->user_data
+ && !JSValueIsUndefined (eng->context, closure->user_data))
+ JSValueUnprotect (eng->context, closure->user_data);
+ if (!JSValueIsUndefined (eng->context, closure->function))
+ JSValueUnprotect (eng->context, closure->function);
+
+ g_free (closure->description);
+
+}
+
+JSObjectRef
+seed_closure_get_callable (GClosure * c)
+{
+ return ((SeedClosure *) c)->function;
+}
+
+JSValueRef
+seed_closure_invoke (GClosure * closure, JSValueRef * args, guint argc,
+ JSValueRef * exception)
+{
+ JSContextRef ctx = JSGlobalContextCreateInGroup (context_group, 0);
+ JSValueRef *real_args = g_newa (JSValueRef, argc + 1);
+ JSValueRef ret;
+ guint i;
+
+ seed_prepare_global_context (ctx);
+ for (i = 0; i < argc; i++)
+ real_args[i] = args[i];
+ args[argc] =
+ ((SeedClosure *) closure)->user_data ? ((SeedClosure *) closure)->
+ user_data : JSValueMakeNull (ctx);
+
+ ret =
+ JSObjectCallAsFunction (ctx, ((SeedClosure *) closure)->function, NULL,
+ argc + 1, real_args, exception);
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+
+ return ret;
+}
+
+JSValueRef
+seed_closure_invoke_with_context (JSContextRef ctx, GClosure * closure,
+ JSValueRef * args, guint argc,
+ JSValueRef * exception)
+{
+ JSValueRef *real_args = g_newa (JSValueRef, argc + 1);
+ JSValueRef ret;
+ guint i;
+
+ for (i = 0; i < argc; i++)
+ real_args[i] = args[i];
+ args[argc] =
+ ((SeedClosure *) closure)->user_data ? ((SeedClosure *) closure)->
+ user_data : JSValueMakeNull (ctx);
+
+ ret =
+ JSObjectCallAsFunction (ctx, ((SeedClosure *) closure)->function, NULL,
+ argc + 1, real_args, exception);
+
+ return ret;
+}
+
+GClosure *
+seed_closure_new (JSContextRef ctx, JSObjectRef function,
+ JSObjectRef user_data, const gchar * description)
+{
+ GClosure *closure;
+
+ closure = g_closure_new_simple (sizeof (SeedClosure), 0);
+ g_closure_add_finalize_notifier (closure, 0, closure_invalidated);
+ g_closure_set_marshal (closure, seed_signal_marshal_func);
+
+ JSValueProtect (ctx, function);
+ ((SeedClosure *) closure)->function = function;
+ if (user_data && !JSValueIsNull (ctx, user_data))
+ {
+ ((SeedClosure *) closure)->user_data = user_data;
+ JSValueProtect (ctx, user_data);
+ }
+
+ if (description)
+ ((SeedClosure *) closure)->description = g_strdup (description);
+
+ return closure;
+}
+
+void
+seed_closure_warn_exception (GClosure * c,
+ JSContextRef ctx, JSValueRef exception)
+{
+ JSObjectRef callable = seed_closure_get_callable (c);
+ gchar *name = seed_value_to_string (ctx,
+ seed_object_get_property (ctx, callable,
+ "name"),
+ NULL);
+ gchar *mes = seed_exception_to_string (ctx, exception);
+
+ g_warning ("Exception in closure (%p) for %s (handler %s). %s", c,
+ ((SeedClosure *) c)->description,
+ *name == '\0' ? "[anonymous]" : name, mes);
+
+ g_free (name);
+ g_free (mes);
+}
+
+JSClassDefinition seed_native_callback_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "seed_native_callback", /* Class Name */
+ 0, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ seed_closure_finalize, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+void
+seed_closures_init (void)
+{
+ seed_native_callback_class = JSClassCreate (&seed_native_callback_def);
+ JSClassRetain (seed_native_callback_class);
+}
diff --git a/libseed/seed-closure.h b/libseed/seed-closure.h
new file mode 100644
index 0000000..46a4563
--- /dev/null
+++ b/libseed/seed-closure.h
@@ -0,0 +1,73 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_CLOSURE_H_
+#define _SEED_CLOSURE_H_
+
+#include "seed-private.h"
+
+typedef struct _SeedClosure
+{
+ GClosure closure;
+
+ JSObjectRef function;
+ JSValueRef user_data;
+
+ GType return_type;
+ gchar *description;
+} SeedClosure;
+
+typedef struct _SeedNativeClosure
+{
+ JSContextRef ctx;
+ GICallableInfo *info;
+ JSValueRef function;
+
+ ffi_closure *closure;
+ ffi_cif *cif;
+} SeedNativeClosure;
+
+extern JSClassRef seed_native_callback_class;
+
+SeedNativeClosure *seed_make_native_closure (JSContextRef ctx,
+ GICallableInfo * info,
+ JSValueRef function);
+GClosure *seed_closure_new (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef user_data, const gchar * description);
+
+JSObjectRef seed_closure_get_callable (GClosure * c);
+
+JSValueRef
+seed_closure_invoke (GClosure * closure, JSValueRef * args, guint argc,
+ JSValueRef * exception);
+JSValueRef seed_closure_invoke_with_context (JSContextRef ctx,
+ GClosure * closure,
+ JSValueRef * args, guint argc,
+ JSValueRef * exception);
+
+void
+seed_closure_warn_exception (GClosure * c,
+ JSContextRef ctx, JSValueRef exception);
+
+
+
+void seed_closures_init ();
+
+#endif
diff --git a/libseed/seed-debug.h b/libseed/seed-debug.h
new file mode 100644
index 0000000..32bd87d
--- /dev/null
+++ b/libseed/seed-debug.h
@@ -0,0 +1,67 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_DEBUG_H
+#define _SEED_DEBUG_H
+
+// Borrowed from Clutter, more or less.
+
+#include <glib.h>
+
+typedef enum
+{
+ SEED_DEBUG_ALL = 1 << 0,
+ SEED_DEBUG_MISC = 1 << 1,
+ SEED_DEBUG_FINALIZATION = 1 << 2,
+ SEED_DEBUG_INITIALIZATION = 1 << 3,
+ SEED_DEBUG_CONSTRUCTION = 1 << 4,
+ SEED_DEBUG_INVOCATION = 1 << 5,
+ SEED_DEBUG_SIGNAL = 1 << 6,
+ SEED_DEBUG_STRUCTS = 1 << 7,
+ SEED_DEBUG_GTYPE = 1 << 8,
+ SEED_DEBUG_IMPORTER = 1 << 9,
+ SEED_DEBUG_MODULE = 1 << 10
+} SeedDebugFlag;
+
+#ifdef SEED_ENABLE_DEBUG
+
+#define SEED_NOTE(type,...) G_STMT_START { \
+ if ((seed_debug_flags & SEED_DEBUG_##type) || \
+ seed_debug_flags & SEED_DEBUG_ALL) \
+ { \
+ gchar * _fmt = g_strdup_printf (__VA_ARGS__); \
+ g_message ("[" #type "] " G_STRLOC ": %s",_fmt); \
+ g_free (_fmt); \
+ } \
+} G_STMT_END
+
+#define SEED_MARK() SEED_NOTE(MISC, "== mark ==")
+#define SEED_DBG(x) { a }
+
+#else /* !SEED_ENABLE_DEBUG */
+
+#define SEED_NOTE(type,...)
+#define SEED_MARK()
+#define SEED_DBG(x)
+
+#endif /* SEED_ENABLE_DEBUG */
+
+extern guint seed_debug_flags;
+
+#endif
diff --git a/libseed/seed-engine.c b/libseed/seed-engine.c
new file mode 100644
index 0000000..62ec8d3
--- /dev/null
+++ b/libseed/seed-engine.c
@@ -0,0 +1,1879 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include "seed-path.h"
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <stdarg.h>
+#include <string.h>
+#include <pthread.h>
+
+#include "config.h"
+
+JSObjectRef function_proto;
+
+JSObjectRef seed_obj_ref;
+
+GQuark qname;
+GQuark qprototype;
+
+JSClassRef gobject_signal_class;
+JSClassRef gobject_named_constructor_class;
+JSClassRef seed_struct_constructor_class;
+
+JSContextGroupRef context_group;
+
+JSStringRef defaults_script;
+
+gchar *glib_message = 0;
+
+GIBaseInfo *base_info_info = 0;
+
+GQuark js_ref_quark;
+
+guint seed_debug_flags = 0; /* global seed debug flag */
+gboolean seed_arg_print_version = FALSE; // Flag to print version and quit
+
+pthread_key_t seed_next_gobject_wrapper_key;
+
+#ifdef SEED_ENABLE_DEBUG
+static const GDebugKey seed_debug_keys[] = {
+ {"misc", SEED_DEBUG_MISC},
+ {"finalization", SEED_DEBUG_FINALIZATION},
+ {"initialization", SEED_DEBUG_INITIALIZATION},
+ {"signal", SEED_DEBUG_SIGNAL},
+ {"invocation", SEED_DEBUG_INVOCATION},
+ {"structs", SEED_DEBUG_STRUCTS},
+ {"construction", SEED_DEBUG_CONSTRUCTION},
+ {"gtype", SEED_DEBUG_GTYPE},
+ {"importer", SEED_DEBUG_IMPORTER},
+ {"module", SEED_DEBUG_MODULE}
+};
+#endif /* SEED_ENABLE_DEBUG */
+
+static bool
+seed_gobject_has_instance (JSContextRef ctx, JSObjectRef constructor,
+ JSValueRef possible_instance, JSValueRef* exception)
+{
+ GType constructor_type, value_type;
+ if (JSValueIsNull (ctx, possible_instance) ||
+ !JSValueIsObject (ctx, possible_instance) ||
+ !JSValueIsObjectOfClass (ctx, possible_instance, gobject_class))
+ return FALSE;
+
+ constructor_type = (GType) JSObjectGetPrivate (constructor);
+ value_type = G_OBJECT_TYPE ((GObject *)
+ JSObjectGetPrivate ((JSObjectRef) possible_instance));
+
+ return g_type_is_a (value_type, constructor_type);
+}
+
+
+/**
+ * seed_prepare_global_context:
+ * @ctx: A #SeedContext on which to add the default set of global objects.
+ *
+ * Adds the default set of global objects (imports, GType, Seed, and print)
+ * to a fresh #SeedContext.
+ *
+ */
+void
+seed_prepare_global_context (JSContextRef ctx)
+{
+ JSObjectRef global = JSContextGetGlobalObject (ctx);
+
+ seed_object_set_property (ctx, global, "imports", importer);
+ seed_object_set_property (ctx, global, "GType", seed_gtype_constructor);
+ seed_object_set_property (ctx, global, "Seed", seed_obj_ref);
+ seed_object_set_property (ctx, global, "print", seed_print_ref);
+ seed_object_set_property (ctx, global, "printerr", seed_printerr_ref);
+
+
+ JSEvaluateScript (ctx, defaults_script, NULL, NULL, 0, NULL);
+}
+
+static JSObjectRef
+seed_struct_constructor_invoked (JSContextRef ctx,
+ JSObjectRef constructor,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GIBaseInfo *info = JSObjectGetPrivate (constructor);
+ JSValueRef ret;
+ JSObjectRef parameters = 0;
+
+ if (argumentCount == 1)
+ {
+ if (!JSValueIsObject (ctx, arguments[0]))
+ {
+
+ // new GObject.GValue() can accept anything as a argument...
+ GType gtype = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *) info);
+ if (!g_type_is_a (gtype, G_TYPE_VALUE)) {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Constructor expects object as argument");
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ }
+ parameters = (JSObjectRef) arguments[0];
+ }
+ ret = seed_construct_struct_type_with_parameters (ctx, info,
+ parameters, exception);
+
+ return (JSObjectRef) ret;
+}
+
+static JSObjectRef
+seed_gobject_constructor_invoked (JSContextRef ctx,
+ JSObjectRef constructor,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GType type;
+ GParameter *params;
+ GObjectClass *oclass;
+ GObject *gobject;
+ GParamSpec *param_spec;
+ gchar *prop_name;
+ gint i, nparams = 0, length, ri;
+ JSObjectRef ret;
+ JSPropertyNameArrayRef jsprops = 0;
+ JSStringRef jsprop_name;
+ JSValueRef jsprop_value;
+
+ type = (GType) JSObjectGetPrivate (constructor);
+ if (!type)
+ return 0;
+
+ oclass = g_type_class_ref (type);
+
+ // Check for an exception in class init (which may have just been called
+ // by g_type_class_ref, if this is the first construction of this class).
+ // Bubble up the exception, and clear it from the class's qdata so that
+ // this doesn't happen on subsequent construction.
+ GQuark class_init_exception_q =
+ g_quark_from_static_string("type-class-init-exception");
+ JSValueRef class_init_exception =
+ (JSValueRef)g_type_get_qdata(type, class_init_exception_q);
+ if(class_init_exception)
+ {
+ *exception = class_init_exception;
+ g_type_set_qdata(type, class_init_exception_q, NULL);
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ if (argumentCount > 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Constructor expects"
+ " 1 argument, got %zd", argumentCount);
+
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ if (argumentCount == 1)
+ {
+ if (!JSValueIsObject (ctx, arguments[0]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Constructor expects object as argument");
+ g_type_class_unref (oclass);
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ jsprops = JSObjectCopyPropertyNames (ctx, (JSObjectRef) arguments[0]);
+ nparams = JSPropertyNameArrayGetCount (jsprops);
+ }
+ ri = i = 0;
+
+ params = g_new0 (GParameter, nparams + 1);
+ SEED_NOTE (INITIALIZATION, "Constructing object of type %s",
+ g_type_name (type));
+
+
+ pthread_setspecific (seed_next_gobject_wrapper_key,
+ seed_make_wrapper_for_type (ctx, type));
+
+ while (i < nparams)
+ {
+ GType type;
+ jsprop_name = JSPropertyNameArrayGetNameAtIndex (jsprops, i);
+
+ length = JSStringGetMaximumUTF8CStringSize (jsprop_name);
+ prop_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (jsprop_name, prop_name, length);
+
+ param_spec = g_object_class_find_property (oclass, prop_name);
+
+ jsprop_value = JSObjectGetProperty (ctx,
+ (JSObjectRef) arguments[0],
+ jsprop_name, NULL);
+
+ if (param_spec == NULL)
+ {
+ JSObjectSetProperty (ctx, pthread_getspecific(seed_next_gobject_wrapper_key), jsprop_name,
+ jsprop_value, 0, NULL);
+ ++i;
+ continue;
+ }
+ // TODO: exception handling
+
+ if (g_type_is_a (param_spec->value_type, G_TYPE_ENUM))
+ type = G_TYPE_INT;
+ else
+ type = param_spec->value_type;
+
+ seed_value_to_gvalue (ctx, jsprop_value,
+ type, &params[ri].value, exception);
+
+ if (*exception)
+ {
+ g_free (params);
+ JSPropertyNameArrayRelease (jsprops);
+ pthread_setspecific(seed_next_gobject_wrapper_key, NULL);
+ return 0;
+ }
+ params[ri].name = prop_name;
+
+ ++i;
+ ++ri;
+ }
+
+ if (jsprops)
+ JSPropertyNameArrayRelease (jsprops);
+
+
+ gobject = g_object_newv (type, ri, params);
+
+
+ if (G_IS_INITIALLY_UNOWNED (gobject) && !g_object_is_floating (gobject))
+ g_object_ref (gobject);
+ else if (g_object_is_floating (gobject))
+ g_object_ref_sink (gobject);
+
+ if (!gobject)
+ ret = (JSObjectRef) JSValueMakeNull (ctx);
+ else
+ ret = (JSObjectRef) seed_value_from_object (ctx, gobject, exception);
+
+ for (i = 0; i < ri; i++)
+ {
+ g_value_unset (&params[i].value);
+ }
+
+ g_object_unref (gobject);
+
+ g_type_class_unref (oclass);
+
+ g_free (params);
+
+ return ret;
+}
+
+static JSValueRef
+seed_gobject_property_type (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GParamSpec *spec;
+ gchar *name;
+ GObject *this;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "__property_type expects 1 argument"
+ "got %zd", argumentCount);
+ return JSValueMakeNull (ctx);
+ }
+
+ this = seed_value_to_object (ctx, this_object, exception);
+ name = seed_value_to_string (ctx, arguments[0], exception);
+
+ spec = g_object_class_find_property (G_OBJECT_GET_CLASS (this), name);
+ g_free (name);
+
+ return seed_value_from_long (ctx, spec->value_type, exception);
+}
+
+static JSValueRef
+seed_gobject_ref_count (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[], JSValueRef * exception)
+{
+ GObject *this;
+
+ this = seed_value_to_object (ctx, (JSValueRef) this_object, exception);
+
+ return seed_value_from_int (ctx, this->ref_count, exception);
+}
+
+static void
+seed_gobject_method_finalize (JSObjectRef method)
+{
+ GIBaseInfo *info = (GIBaseInfo *) JSObjectGetPrivate (method);
+ if (info)
+ g_base_info_unref (info);
+}
+
+typedef void (*InitMethodCallback) (gint * argc, gchar *** argv);
+
+static gboolean
+seed_gobject_init_build_argv (JSContextRef ctx,
+ JSObjectRef array,
+ SeedArgvPrivates * priv, JSValueRef * exception)
+{
+ guint i, length;
+ JSValueRef jsl;
+
+ jsl = seed_object_get_property (ctx, array, "length");
+ if (JSValueIsNull (ctx, jsl) || JSValueIsUndefined (ctx, jsl))
+ return FALSE;
+
+ length = seed_value_to_uint (ctx, jsl, exception);
+ priv->argv = g_new (gchar *, length);
+ priv->argc = length;
+
+ for (i = 0; i < length; i++)
+ {
+ priv->argv[i] = seed_value_to_string (ctx,
+ JSObjectGetPropertyAtIndex (ctx,
+ array,
+ i,
+ exception),
+ exception);
+ }
+ return TRUE;
+
+}
+
+static JSValueRef
+seed_gobject_init_method_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GIBaseInfo *info;
+ GTypelib *typelib;
+ InitMethodCallback c;
+ SeedArgvPrivates *priv = NULL;
+ gboolean allocated = FALSE;
+
+ if (argumentCount != 1 && argumentCount != 2)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError",
+ "init method expects 1 argument, got %zd",
+ argumentCount);
+ return JSValueMakeUndefined (ctx);
+ }
+
+ if (argumentCount == 1)
+ {
+ if (JSValueIsNull (ctx, arguments[0])
+ || !JSValueIsObject (ctx, arguments[0]))
+
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError",
+ "init method expects an array object as argument");
+ return JSValueMakeUndefined (ctx);
+ }
+ if (JSValueIsObjectOfClass (ctx, arguments[0], seed_argv_class))
+ {
+ priv = JSObjectGetPrivate ((JSObjectRef) arguments[0]);
+ }
+ else
+ {
+ priv = g_newa (SeedArgvPrivates, 1);
+ if (!seed_gobject_init_build_argv (ctx,
+ (JSObjectRef) arguments[0],
+ priv, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Init method expects an array as argument");
+ return JSValueMakeUndefined (ctx);
+
+ }
+ allocated = TRUE;
+ }
+ }
+
+ info = JSObjectGetPrivate (function);
+ typelib = g_base_info_get_typelib (info);
+ g_typelib_symbol (typelib,
+ g_function_info_get_symbol ((GIFunctionInfo *) info),
+ (gpointer *) & c);
+ // Backwards compatibility
+ if (!priv)
+ {
+ c (NULL, NULL);
+ return JSValueMakeUndefined (ctx);
+ }
+
+ c (&priv->argc, &priv->argv);
+
+ if (allocated)
+ g_free (priv->argv);
+
+ return JSValueMakeUndefined (ctx);
+}
+
+static JSValueRef
+seed_gobject_method_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef this_object,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GIBaseInfo *info;
+ GObject *object = NULL;
+ gboolean instance_method = TRUE;
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ gboolean is_caller_allocates = FALSE;
+ GIBaseInfo *iface_info;
+#endif
+ GArgument retval;
+ GArgument *in_args;
+ GArgument *out_args;
+ GArgument *out_values;
+ gint first_out = -1;
+ guint use_return_as_out = 0;
+ guint n_args, n_in_args, n_out_args, i;
+ guint in_args_pos, out_args_pos;
+ GIArgInfo *arg_info;
+ GITypeInfo *type_info;
+
+ GIDirection dir;
+ JSValueRef retval_ref;
+ GError *error = 0;
+
+ info = JSObjectGetPrivate (function);
+ // We just want to check if there IS an object, not actually throw an
+ // exception if we don't get it.
+ if (!this_object || !
+ ((object = seed_value_to_object (ctx, this_object, 0)) ||
+ (object = seed_pointer_get_pointer (ctx, this_object))))
+ instance_method = FALSE;
+
+ n_args = g_callable_info_get_n_args ((GICallableInfo *) info);
+
+ in_args = g_new0 (GArgument, n_args + 1);
+ out_args = g_new0 (GArgument, n_args + 1);
+ out_values = g_new0 (GArgument, n_args + 1);
+ n_in_args = n_out_args = 0;
+
+ if (instance_method)
+ in_args[n_in_args++].v_pointer = object;
+
+ for (i = 0; (i < (n_args)); i++)
+ {
+
+ arg_info = g_callable_info_get_arg ((GICallableInfo *) info, i);
+ dir = g_arg_info_get_direction (arg_info);
+ type_info = g_arg_info_get_type (arg_info);
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ is_caller_allocates = (dir == GI_DIRECTION_OUT) && g_arg_info_is_caller_allocates (arg_info);
+ iface_info = NULL;
+
+ /* caller allocates only applies to structures but GI has
+ * no way to denote that yet, so we only use caller allocates
+ * if we see a structure
+ */
+ if (is_caller_allocates)
+ {
+ GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+ is_caller_allocates = FALSE;
+
+
+ if (type_tag == GI_TYPE_TAG_INTERFACE)
+ {
+ GIInfoType info_type;
+
+ iface_info = g_type_info_get_interface (type_info);
+ g_assert (info != NULL);
+ info_type = g_base_info_get_type (iface_info);
+
+ if (info_type == GI_INFO_TYPE_STRUCT)
+ is_caller_allocates = TRUE;
+ }
+ }
+#endif
+
+
+ SEED_NOTE (INVOCATION,
+ "Converting arg: %s (%d) of function %s, exception is %p",
+ g_base_info_get_name ((GIBaseInfo *)arg_info), i,
+ g_base_info_get_name (info), exception);
+
+
+
+ if (i + 1 > argumentCount)
+ {
+
+ if (dir == GI_DIRECTION_OUT)
+ {
+ GArgument *out_value = &out_values[n_out_args];
+ out_values[n_out_args].v_pointer = NULL;
+ out_args[n_out_args].v_pointer = out_value;
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ if (is_caller_allocates)
+ {
+ gsize size = g_struct_info_get_size ( (GIStructInfo *) iface_info) ;
+ out_args[n_out_args].v_pointer = g_malloc0 (size);
+ out_values[n_out_args].v_pointer = out_args[n_out_args].v_pointer;
+ }
+#endif
+ n_out_args++;
+ }
+ else
+ in_args[n_in_args++].v_pointer = 0;
+
+ }
+ else if (dir == GI_DIRECTION_IN || dir == GI_DIRECTION_INOUT)
+ {
+
+ if ( !g_arg_info_may_be_null (arg_info) )
+ {
+ gboolean is_null = ( !arguments[i] || JSValueIsNull (ctx, arguments[i]) );
+
+ if (!is_null && (g_type_info_get_tag (type_info) == GI_TYPE_TAG_INTERFACE))
+ {
+ /* see if the pointer is null for struct/unions. */
+ GIBaseInfo *interface = g_type_info_get_interface (type_info);
+ GIInfoType interface_type = g_base_info_get_type (interface);
+
+ gboolean arg_is_object = JSValueIsObject (ctx, arguments[i]);
+ gboolean is_struct_or_union = (
+ interface_type == GI_INFO_TYPE_STRUCT ||
+ interface_type == GI_INFO_TYPE_UNION
+ );
+
+ /* this test ignores non-objects being sent where interfaces are expected
+ hopefully our type manipluation code will pick that up. */
+ if (is_struct_or_union && arg_is_object &&
+ (seed_pointer_get_pointer (ctx, arguments[i]) == 0))
+ is_null = TRUE;
+
+ g_base_info_unref (interface);
+ }
+
+ if (is_null)
+ {
+ GIBaseInfo *ctr = g_base_info_get_container((GIBaseInfo *) info);
+ // note - ctr does not need unref'ing (see ginfo.c source for why)
+
+ // RE-INSTATE THIS CODE LATER.. - when gtk etc. has be release with fixes
+ //seed_make_exception (ctx, exception,
+ // "ArgumentError",
+ g_warning( "ArgumentError - probably due to incorrect gir file (which may be fixed upstream)"
+ " argument %d must not be null for"
+ " function: %s%s%s \n",
+ i + 1,
+ ctr ? g_base_info_get_name ((GIBaseInfo *) ctr) : "",
+ ctr ? "." : "",
+ g_base_info_get_name ((GIBaseInfo *)
+ info));
+ //goto arg_error;
+ }
+ }
+
+ if (!seed_value_to_gi_argument (ctx, arguments[i], type_info,
+ &in_args[n_in_args++], exception))
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError",
+ "Unable to make argument %d for"
+ " function: %s. \n",
+ i + 1,
+ g_base_info_get_name ((GIBaseInfo *)
+ info));
+
+// FIXME - SEE NOTE ABOVE ABOUT gtk allow_null bugs
+// arg_error:
+ g_base_info_unref ((GIBaseInfo *) type_info);
+ g_base_info_unref ((GIBaseInfo *) arg_info);
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ if (iface_info) g_base_info_unref (iface_info);
+#endif
+ g_free (in_args);
+ g_free (out_args);
+ g_free (out_values);
+
+ return JSValueMakeNull (ctx);
+ }
+ if (dir == GI_DIRECTION_INOUT)
+ {
+ GArgument *out_value = &out_values[n_out_args];
+ out_args[n_out_args++].v_pointer = out_value;
+ }
+
+ }
+ else if (dir == GI_DIRECTION_OUT)
+ {
+ GArgument *out_value = &out_values[n_out_args];
+ out_values[n_out_args].v_pointer = NULL;
+ out_args[n_out_args].v_pointer = out_value;
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ if (is_caller_allocates)
+ {
+ gsize size = g_struct_info_get_size ( (GIStructInfo *) iface_info) ;
+ out_args[n_out_args].v_pointer = g_malloc0 (size);
+ out_values[n_out_args].v_pointer = out_args[n_out_args].v_pointer;
+ }
+#endif
+ n_out_args++;
+ first_out = first_out > -1 ? first_out : i;
+
+ }
+
+ g_base_info_unref ((GIBaseInfo *) type_info);
+ g_base_info_unref ((GIBaseInfo *) arg_info);
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ if (iface_info) g_base_info_unref (iface_info);
+#endif
+ }
+ SEED_NOTE (INVOCATION, "Invoking method: %s with %d 'in' arguments"
+ " and %d 'out' arguments",
+ g_base_info_get_name (info), n_in_args, n_out_args);
+ if (g_function_info_invoke ((GIFunctionInfo *) info,
+ in_args,
+ n_in_args,
+ out_args, n_out_args, &retval, &error))
+ {
+ GITypeTag tag;
+
+ type_info = g_callable_info_get_return_type ((GICallableInfo *) info);
+ tag = g_type_info_get_tag (type_info);
+
+ // might need to add g_type_info_is_pointer (type_info) check here..
+
+ if (tag == GI_TYPE_TAG_VOID)
+ {
+ // if we have no out args - returns undefined
+ // otherwise we return an object, and put the return values into that
+ // along with supporting the old object.value way
+ if (n_out_args < 1)
+ retval_ref = JSValueMakeUndefined (ctx);
+ else
+ {
+
+ retval_ref = JSObjectMake (ctx, NULL, NULL);
+ use_return_as_out = 1;
+ }
+ }
+ else
+ {
+ GIBaseInfo *interface;
+ gboolean sunk = FALSE;
+
+ if (tag == GI_TYPE_TAG_INTERFACE)
+ {
+ GIInfoType interface_type;
+
+ interface = g_type_info_get_interface (type_info);
+ interface_type = g_base_info_get_type (interface);
+ g_base_info_unref (interface);
+
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
+ {
+ if (G_IS_OBJECT (retval.v_pointer))
+ {
+ sunk =
+ G_IS_INITIALLY_UNOWNED (G_OBJECT (retval.v_pointer));
+ if (sunk)
+ g_object_ref_sink (G_OBJECT (retval.v_pointer));
+ }
+ }
+
+ }
+ retval_ref =
+ seed_value_from_gi_argument (ctx, &retval, type_info, exception);
+
+ if (sunk)
+ g_object_unref (G_OBJECT (retval.v_pointer));
+ else
+ seed_gi_release_arg (g_callable_info_get_caller_owns
+ ((GICallableInfo *) info),
+ type_info, &retval);
+ }
+ g_base_info_unref ((GIBaseInfo *) type_info);
+ }
+ else
+ {
+ seed_make_exception_from_gerror (ctx, exception, error);
+
+ g_free (in_args);
+ g_free (out_args);
+ g_error_free (error);
+ g_free (out_values);
+
+ // FIXME - caller allocates needs freeing.
+ return JSValueMakeNull (ctx);
+ }
+
+ in_args_pos = out_args_pos = 0;
+ for (i = 0; (i < n_args); i++)
+ {
+ JSValueRef jsout_val;
+ arg_info = g_callable_info_get_arg ((GICallableInfo *) info, i);
+ dir = g_arg_info_get_direction (arg_info);
+ type_info = g_arg_info_get_type (arg_info);
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ is_caller_allocates = (dir == GI_DIRECTION_OUT) && g_arg_info_is_caller_allocates (arg_info);
+ iface_info = NULL;
+#endif
+
+
+ if (dir == GI_DIRECTION_IN || dir == GI_DIRECTION_INOUT)
+ {
+ seed_gi_release_in_arg (g_arg_info_get_ownership_transfer
+ (arg_info), type_info,
+ &in_args[in_args_pos +
+ (instance_method ? 1 : 0)]);
+ in_args_pos++;
+
+ g_base_info_unref ((GIBaseInfo *) type_info);
+ g_base_info_unref ((GIBaseInfo *) arg_info);
+ continue;
+ }
+
+ // we are now only dealing with OUT arguments.
+ jsout_val = seed_value_from_gi_argument (ctx, &out_values[out_args_pos],
+ type_info, exception);
+
+
+#if GOBJECT_INTROSPECTION_VERSION > 0x000613
+ /* caller allocates only applies to structures but GI has
+ * no way to denote that yet, so we only use caller allocates
+ * if we see a structure
+ */
+ if (is_caller_allocates)
+ {
+ GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+ is_caller_allocates = FALSE;
+
+
+ if (type_tag == GI_TYPE_TAG_INTERFACE)
+ {
+ GIInfoType info_type;
+
+ iface_info = g_type_info_get_interface (type_info);
+ g_assert (info != NULL);
+ info_type = g_base_info_get_type (iface_info);
+
+ if (info_type == GI_INFO_TYPE_STRUCT)
+ is_caller_allocates = TRUE;
+
+ g_base_info_unref ( iface_info );
+ }
+ }
+
+
+
+ // make sure we do not free the caller allocates when we free the values.
+ // Not sure if we need it - python does this..
+ //if (is_caller_allocates)
+ // {
+ // // gvalues - do we need to unset...
+ // //if (g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) iface_info) == G_TYPE_VALUE)
+ // // g_value_unset ( (GValue *) state->args[i]);
+ //
+ // }
+
+ // old ? depreciated ? way to handle out args -> set 'value' on object that was send through.
+#endif
+ out_args_pos++;
+
+ if ( (i < argumentCount) &&
+ !JSValueIsNull (ctx, arguments[i]) &&
+ JSValueIsObject (ctx, arguments[i]))
+ {
+ seed_object_set_property (ctx, (JSObjectRef) arguments[i],
+ "value", jsout_val);
+ }
+
+
+ // if we add it to the return argument and/or the first out arguement
+
+ if (use_return_as_out)
+ {
+ seed_object_set_property (ctx, (JSObjectRef) retval_ref,
+ g_base_info_get_name((GIBaseInfo*) arg_info) , jsout_val);
+ }
+
+
+ if ( (first_out > -1) &&
+ !JSValueIsNull (ctx, arguments[first_out]) &&
+ JSValueIsObject (ctx, arguments[first_out]) )
+
+ {
+ seed_object_set_property (ctx, (JSObjectRef) arguments[first_out],
+ g_base_info_get_name((GIBaseInfo*) arg_info) , jsout_val);
+ }
+
+
+ g_base_info_unref ((GIBaseInfo *) arg_info);
+ g_base_info_unref ((GIBaseInfo *) type_info);
+ }
+
+ g_free (in_args);
+ g_free (out_args);
+ g_free (out_values);
+ return retval_ref;
+}
+
+static JSObjectRef
+seed_gobject_named_constructor_invoked (JSContextRef ctx,
+ JSObjectRef constructor,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ return (JSObjectRef) seed_gobject_method_invoked (ctx, constructor,
+ NULL, argumentCount,
+ arguments, exception);
+}
+
+void
+seed_gobject_define_property_from_function_info (JSContextRef ctx,
+ GIFunctionInfo * info,
+ JSObjectRef object,
+ gboolean instance)
+{
+ GIFunctionInfoFlags flags;
+ JSObjectRef method_ref;
+ const gchar *name;
+
+ //if (g_base_info_is_deprecated ((GIBaseInfo *) info))
+ //g_printf("Not defining deprecated symbol: %s \n",
+ //g_base_info_get_name((GIBaseInfo *)info));
+
+ flags = g_function_info_get_flags (info);
+
+ if (instance && (flags & GI_FUNCTION_IS_CONSTRUCTOR))
+ {
+ return;
+ }
+
+ method_ref = JSObjectMake (ctx, gobject_method_class,
+ g_base_info_ref ((GIBaseInfo *) info));
+
+ JSObjectSetPrototype (ctx, method_ref, function_proto);
+
+ name = g_base_info_get_name ((GIBaseInfo *) info);
+ if (!g_strcmp0 (name, "new"))
+ name = "c_new";
+ seed_object_set_property (ctx, object, name, method_ref);
+ seed_object_set_property (ctx, method_ref, "info",
+ seed_make_struct (ctx,
+ g_base_info_ref ((GIBaseInfo *)
+ info),
+ base_info_info));
+
+}
+
+static void
+seed_gobject_add_methods_for_interfaces (JSContextRef ctx,
+ GIObjectInfo * oinfo,
+ JSObjectRef object)
+{
+ GIInterfaceInfo *interface;
+ GIFunctionInfo *function;
+ gint n_interfaces, i, n_functions, k;
+
+ n_interfaces = g_object_info_get_n_interfaces (oinfo);
+
+ for (i = 0; i < n_interfaces; i++)
+ {
+ interface = g_object_info_get_interface (oinfo, i);
+
+ n_functions = g_interface_info_get_n_methods (interface);
+ for (k = 0; k < n_functions; k++)
+ {
+ function = g_interface_info_get_method (interface, k);
+ seed_gobject_define_property_from_function_info
+ (ctx, function, object, TRUE);
+ }
+ // g_base_info_unref((GIBaseInfo*)interface);
+ }
+}
+
+static void
+seed_gobject_add_methods_for_type (JSContextRef ctx,
+ GIObjectInfo * oinfo, JSObjectRef object)
+{
+ gint n_methods;
+ gint i;
+ GIFunctionInfo *info;
+
+ n_methods = g_object_info_get_n_methods (oinfo);
+
+ for (i = 0; i < n_methods; i++)
+ {
+ info = g_object_info_get_method (oinfo, i);
+ seed_gobject_define_property_from_function_info (ctx,
+ info, object, TRUE);
+ g_base_info_unref ((GIBaseInfo *) info);
+ }
+}
+
+JSClassRef
+seed_gobject_get_class_for_gtype (JSContextRef ctx, GType type)
+{
+ JSClassDefinition def;
+ GType parent;
+ JSClassRef ref;
+ JSClassRef parent_class = 0;
+ GIBaseInfo *info;
+ JSObjectRef prototype_obj;
+ JSObjectRef parent_prototype;
+
+ if ((ref = g_type_get_qdata (type, qname)) != NULL)
+ {
+ return ref;
+ }
+
+ info = g_irepository_find_by_gtype (g_irepository_get_default (), type);
+
+ memset (&def, 0, sizeof (JSClassDefinition));
+
+ def.className = g_type_name (type);
+ if ((parent = g_type_parent (type)))
+ parent_class = seed_gobject_get_class_for_gtype (ctx, parent);
+ def.parentClass = parent_class;
+ def.attributes = kJSClassAttributeNoAutomaticPrototype;
+
+ prototype_obj = JSObjectMake (ctx, 0, 0);
+ if (parent)
+ {
+ parent_prototype = seed_gobject_get_prototype_for_gtype (parent);
+ if (parent_prototype)
+ JSObjectSetPrototype (ctx, prototype_obj, parent_prototype);
+ }
+
+ ref = JSClassCreate (&def);
+ JSClassRetain (ref);
+
+ JSValueProtect (ctx, prototype_obj);
+
+ g_type_set_qdata (type, qname, ref);
+ g_type_set_qdata (type, qprototype, prototype_obj);
+
+ if (info && (g_base_info_get_type (info) == GI_INFO_TYPE_OBJECT))
+ {
+ seed_gobject_add_methods_for_interfaces (ctx, (GIObjectInfo *) info,
+ prototype_obj);
+ seed_gobject_add_methods_for_type (ctx,
+ (GIObjectInfo *) info,
+ prototype_obj);
+ g_base_info_unref (info);
+ }
+ else
+ {
+ GType *interfaces;
+ GIFunctionInfo *function;
+ GIBaseInfo *interface;
+ gint n_functions, k;
+ guint i, n;
+
+ interfaces = g_type_interfaces (type, &n);
+ for (i = 0; i < n; i++)
+ {
+ interface = g_irepository_find_by_gtype (0, interfaces[i]);
+ if (!interface)
+ break;
+ n_functions =
+ g_interface_info_get_n_methods ((GIInterfaceInfo *) interface);
+ for (k = 0; k < n_functions; k++)
+ {
+ function =
+ g_interface_info_get_method ((GIInterfaceInfo
+ *) interface, k);
+ seed_gobject_define_property_from_function_info
+ (ctx, function, prototype_obj, TRUE);
+ }
+ }
+ }
+
+ return ref;
+}
+
+JSObjectRef
+seed_gobject_get_prototype_for_gtype (GType type)
+{
+ JSObjectRef prototype = 0;
+ while (type && !prototype)
+ {
+ prototype = g_type_get_qdata (type, qprototype);
+ type = g_type_parent (type);
+ }
+
+ return prototype;
+}
+
+static void
+seed_gobject_finalize (JSObjectRef object)
+{
+ GObject *gobject;
+
+ gobject = (GObject *) JSObjectGetPrivate ((JSObjectRef) object);
+ if (!gobject)
+ {
+ SEED_NOTE (FINALIZATION,
+ "Attempting to finalize already destroyed object.");
+ return;
+ }
+
+ SEED_NOTE (FINALIZATION, "%s at %p (%d refs)",
+ g_type_name (G_OBJECT_TYPE (gobject)), gobject,
+ gobject->ref_count);
+
+ if (g_object_get_data (gobject, "js-ref"))
+ {
+ g_object_set_data_full (gobject, "js-ref", NULL, NULL);
+
+ g_object_remove_toggle_ref (gobject, seed_toggle_ref, 0);
+ }
+ g_object_run_dispose (gobject);
+}
+
+static JSValueRef
+seed_gobject_get_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name, JSValueRef * exception)
+{
+ GParamSpec *spec;
+ GObject *b;
+ GValue gval = { 0 };
+ char *cproperty_name;
+ gint length;
+ JSValueRef ret;
+ guint i;
+ gsize len;
+
+ b = seed_value_to_object (context, (JSValueRef) object, exception);
+ if (!b)
+ return 0;
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ spec =
+ g_object_class_find_property (G_OBJECT_GET_CLASS (b), cproperty_name);
+
+ if (!spec)
+ {
+ len = strlen (cproperty_name) - 1;
+ for (i = 0; i < len; i++)
+ {
+ if (cproperty_name[i] == '_')
+ cproperty_name[i] = '-';
+ }
+ spec = g_object_class_find_property (G_OBJECT_GET_CLASS (b),
+ cproperty_name);
+ if (spec)
+ goto found;
+ else
+ {
+ GIFieldInfo *field = NULL;
+ GIBaseInfo *info = (GIBaseInfo *)
+ g_irepository_find_by_gtype (0, G_OBJECT_TYPE (b));
+ gint n;
+ const gchar *name;
+
+ for (i = 0; i < len; i++)
+ {
+ if (cproperty_name[i] == '-')
+ cproperty_name[i] = '_';
+ }
+
+ if (!info)
+ {
+ return NULL;
+ }
+
+ n = g_object_info_get_n_fields ((GIObjectInfo *) info);
+ for (i = 0; i < n; i++)
+ {
+ field = g_object_info_get_field ((GIObjectInfo *) info, i);
+ name = g_base_info_get_name ((GIBaseInfo *) field);
+
+ if (!g_strcmp0 (name, cproperty_name))
+ goto found_field;
+ else
+ {
+ g_base_info_unref ((GIBaseInfo *) field);
+ field = 0;
+ }
+ }
+ found_field:
+ if (field)
+ {
+ ret = seed_field_get_value (context, b, field, exception);
+ g_base_info_unref ((GIBaseInfo *) info);
+ return ret;
+ }
+ g_base_info_unref ((GIBaseInfo *) info);
+ }
+ return NULL;
+ }
+found:
+
+ g_value_init (&gval, spec->value_type);
+ g_object_get_property (b, cproperty_name, &gval);
+ ret = seed_value_from_gvalue (context, &gval, exception);
+ g_value_unset (&gval);
+
+ return (JSValueRef) ret;
+}
+
+static bool
+seed_gobject_set_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef value, JSValueRef * exception)
+{
+ GParamSpec *spec = 0;
+ GObject *obj;
+ GValue gval = { 0 };
+ GType type;
+ gchar *cproperty_name;
+ gsize length;
+ gsize i, len;
+
+ if (pthread_getspecific(seed_next_gobject_wrapper_key) ||
+ JSValueIsNull (context, value))
+ return 0;
+
+
+ obj = seed_value_to_object (context, object, 0);
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ spec = g_object_class_find_property (G_OBJECT_GET_CLASS (obj),
+ cproperty_name);
+
+ if (!spec)
+ {
+ len = strlen (cproperty_name);
+ for (i = 0; i < len; i++)
+ {
+ if (cproperty_name[i] == '_')
+ cproperty_name[i] = '-';
+ }
+ spec = g_object_class_find_property (G_OBJECT_GET_CLASS (obj),
+ cproperty_name);
+ if (!spec)
+ {
+ return FALSE;
+ }
+ }
+
+ if (g_type_is_a (spec->value_type, G_TYPE_ENUM))
+ type = G_TYPE_LONG;
+ else
+ type = spec->value_type;
+
+ seed_value_to_gvalue (context, value, type, &gval, exception);
+ if (*exception)
+ {
+ return FALSE;
+ }
+
+ if (glib_message)
+ {
+ g_free (glib_message);
+ glib_message = 0;
+ }
+ g_object_set_property (obj, cproperty_name, &gval);
+ if (glib_message != 0)
+ {
+ seed_make_exception (context, exception, "PropertyError",
+ glib_message, NULL);
+
+ return FALSE;
+ }
+
+ g_value_unset (&gval);
+
+ return TRUE;
+}
+
+static JSValueRef
+seed_gobject_constructor_convert_to_type (JSContextRef ctx,
+ JSObjectRef object,
+ JSType type, JSValueRef * exception)
+{
+ GType gtype;
+ gchar *as_string;
+
+ if (type == kJSTypeString)
+ {
+ JSValueRef ret;
+ gtype = (GType) JSObjectGetPrivate (object);
+
+ as_string =
+ g_strdup_printf ("[gobject_constructor %s]", g_type_name (gtype));
+ ret = seed_value_from_string (ctx, as_string, exception);
+ g_free (as_string);
+
+ return ret;
+ }
+ return FALSE;
+}
+
+JSStaticFunction gobject_static_funcs[] = {
+ {"__debug_ref_count", seed_gobject_ref_count, 0}
+ ,
+ {"__property_type", seed_gobject_property_type, 0}
+ ,
+ {0, 0, 0}
+};
+
+JSClassDefinition gobject_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype, /* JSClassAttributes */
+ "gobject", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ gobject_static_funcs, /* Static Functions */
+ NULL,
+ seed_gobject_finalize, /* Finalize */
+ NULL, /* Has Property */
+ seed_gobject_get_property, /* Get Property */
+ seed_gobject_set_property, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition gobject_method_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "gobject_method", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ seed_gobject_method_finalize, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ seed_gobject_method_invoked, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition gobject_init_method_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "init_method", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ seed_gobject_method_finalize, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ seed_gobject_init_method_invoked, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition seed_callback_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "seed_callback", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition gobject_constructor_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "gobject_constructor", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ seed_gobject_constructor_invoked, /* Call As Constructor */
+ seed_gobject_has_instance, /* Has Instance */
+ seed_gobject_constructor_convert_to_type
+};
+
+JSClassDefinition gobject_named_constructor_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "gobject_named_constructor", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ seed_gobject_named_constructor_invoked, /* Call As Constructor */
+ seed_gobject_has_instance, /* Has Instance */
+ seed_gobject_constructor_convert_to_type
+};
+
+JSClassDefinition struct_constructor_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "struct_constructor", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ seed_struct_constructor_invoked, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+/**
+ * seed_create_function:
+ * @ctx: A valid #SeedContext
+ * @name: The name of the function (used in exceptions).
+ * @func: A #SeedFunctionCallback to implement the function.
+ * @obj: The #SeedObject on which to put the function.
+ *
+ * Creates a JavaScript object representing a first-class function; when
+ * the function is called from JavaScript, @func will be called. Places
+ * the created function as the property @name on @obj.
+ *
+ */
+void
+seed_create_function (JSContextRef ctx,
+ gchar * name, gpointer func, JSObjectRef obj)
+{
+ JSObjectRef oref;
+
+ oref = JSObjectMakeFunctionWithCallback (ctx, NULL, func);
+ seed_object_set_property (ctx, obj, name, oref);
+}
+
+void
+seed_repl_expose (JSContextRef ctx, ...)
+{
+ va_list argp;
+ void *expose;
+ JSObjectRef arrayObj;
+ guint i = 0;
+ JSStringRef script;
+ JSObjectRef seed = (JSObjectRef) seed_object_get_property (ctx,
+ JSContextGetGlobalObject
+ (ctx),
+ "Seed");
+ va_start (argp, ctx);
+
+ arrayObj = JSObjectMake (ctx, NULL, NULL);
+
+ g_print ("Seed Debug REPL\n\nExposing:\n");
+
+ while ((expose = va_arg (argp, void *)))
+ {
+ g_print (" Seed.debug_argv[%u] = %p\n", i, expose);
+ JSObjectSetPropertyAtIndex (ctx, arrayObj, i++, expose, NULL);
+ }
+
+ g_print ("\n");
+
+ seed_object_set_property (ctx, seed, "debug_argv", arrayObj);
+
+ script = JSStringCreateWithUTF8CString ("readline = imports.readline;"
+ "while(1) { try { print(eval("
+ "readline.readline(\"> \"))); } catch(e) {"
+ "print(e.name + \" \" + e.message);}}");
+
+ JSEvaluateScript (ctx, script, NULL, NULL, 0, NULL);
+
+ JSStringRelease (script);
+
+ va_end (argp);
+}
+
+static void
+seed_log_handler (const gchar * domain,
+ GLogLevelFlags log_level,
+ const gchar * message, gpointer user_data)
+{
+ if (glib_message)
+ g_free (glib_message);
+ glib_message = g_strdup (message);
+}
+
+#ifdef SEED_ENABLE_DEBUG
+static gboolean
+seed_arg_debug_cb (const char *key, const char *value, gpointer user_data)
+{
+ seed_debug_flags |=
+ g_parse_debug_string (value,
+ seed_debug_keys, G_N_ELEMENTS (seed_debug_keys));
+ return TRUE;
+}
+
+static gboolean
+seed_arg_no_debug_cb (const char *key, const char *value, gpointer user_data)
+{
+ seed_debug_flags &=
+ ~g_parse_debug_string (value,
+ seed_debug_keys, G_N_ELEMENTS (seed_debug_keys));
+ return TRUE;
+}
+#endif /* SEED_ENABLE_DEBUG */
+
+static GOptionEntry seed_args[] = {
+#ifdef SEED_ENABLE_DEBUG
+ {"seed-debug", 0, 0, G_OPTION_ARG_CALLBACK, seed_arg_debug_cb,
+ "Seed debugging messages to show. Comma separated list of: all, misc, finalization, initialization, construction, invocation, signal, structs, gtype.",
+ "FLAGS"},
+ {"seed-no-debug", 0, 0, G_OPTION_ARG_CALLBACK, seed_arg_no_debug_cb,
+ "Disable Seed debugging", "FLAGS"},
+#endif /* SEED_ENABLE_DEBUG */
+ {"seed-version", 0, 0, G_OPTION_ARG_NONE, &seed_arg_print_version,
+ "Print libseed version", 0},
+ {NULL,},
+};
+
+GOptionGroup *
+seed_get_option_group (void)
+{
+ GOptionGroup *group;
+
+ group = g_option_group_new ("seed", "Seed Options",
+ "Show Seed Options", NULL, NULL);
+ g_option_group_add_entries (group, seed_args);
+
+ return group;
+}
+
+static gboolean
+seed_parse_args (int *argc, char ***argv)
+{
+ GOptionContext *option_context;
+ GOptionGroup *seed_group;
+
+ GError *error = NULL;
+ gboolean ret = TRUE;
+
+ option_context = g_option_context_new (NULL);
+ g_option_context_set_ignore_unknown_options (option_context, TRUE);
+ g_option_context_set_help_enabled (option_context, TRUE);
+
+ /* Initiate any command line options from the backend */
+
+ seed_group = seed_get_option_group ();
+ g_option_context_add_group (option_context, seed_group);
+
+ if (!g_option_context_parse (option_context, argc, argv, &error))
+ {
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
+
+ ret = FALSE;
+ }
+
+ g_option_context_free (option_context);
+
+ return ret;
+}
+
+void
+seed_engine_destroy (SeedEngine *eng)
+{
+ JSValueUnprotect (eng->context, eng->global);
+ JSGlobalContextRelease (eng->context);
+ JSContextGroupRelease (eng->group);
+
+ g_free (eng);
+}
+
+/**
+ * seed_init_constrained_with_context_and_group:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ * @context A reference to an existing JavascriptCore context
+ * @group: A #SeedContextGroup within which to create the initial context.
+ *
+ * Initializes an empty new #SeedEngine. The Javascript context of this engine is
+ * *not* filled with any builtins functions and the import system.
+ *
+ * The javascript code executed with this engine can't import arbitrary
+ * GObject introspected librairies.
+ *
+ * Use this when control over what is exposed in the Javascript context is required,
+ * for security concerns for example.
+ * GObject instances can be selectively exposed by calling @seed_engine_expose_gobject.
+ * Namespaces can be selectively exposed by calling
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init_constrained_with_context_and_group (gint * argc,
+ gchar *** argv,
+ JSGlobalContextRef context,
+ JSContextGroupRef group)
+{
+ g_type_init ();
+ g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_WARNING, seed_log_handler, 0);
+
+ if ((argc != 0) && seed_parse_args (argc, argv) == FALSE)
+ {
+ SEED_NOTE (MISC, "failed to parse arguments.");
+ return FALSE;
+ }
+
+ if (seed_arg_print_version)
+ {
+ g_print("%s\n", "Seed " VERSION);
+ exit(EXIT_SUCCESS);
+ }
+
+ qname = g_quark_from_static_string ("js-type");
+ qprototype = g_quark_from_static_string ("js-prototype");
+ js_ref_quark = g_quark_from_static_string ("js-ref");
+
+ eng = (SeedEngine *) g_malloc (sizeof (SeedEngine));
+
+ context_group = group;
+
+ eng->context = context;
+ eng->global = JSContextGetGlobalObject (eng->context);
+ eng->group = context_group;
+ eng->search_path = NULL;
+
+ function_proto = (JSObjectRef)
+ seed_simple_evaluate (eng->context, "Function.prototype", NULL);
+
+ gobject_class = JSClassCreate (&gobject_def);
+ JSClassRetain (gobject_class);
+ gobject_method_class = JSClassCreate (&gobject_method_def);
+ JSClassRetain (gobject_method_class);
+ gobject_constructor_class = JSClassCreate (&gobject_constructor_def);
+ JSClassRetain (gobject_constructor_class);
+ gobject_named_constructor_class =
+ JSClassCreate (&gobject_named_constructor_def);
+ JSClassRetain (gobject_named_constructor_class);
+ gobject_signal_class = JSClassCreate (seed_get_signal_class ());
+ JSClassRetain (gobject_signal_class);
+ seed_callback_class = JSClassCreate (&seed_callback_def);
+ JSClassRetain (seed_callback_class);
+ seed_struct_constructor_class = JSClassCreate (&struct_constructor_def);
+ JSClassRetain (seed_struct_constructor_class);
+ gobject_init_method_class = JSClassCreate (&gobject_init_method_def);
+ JSClassRetain (gobject_init_method_class);
+
+ g_type_set_qdata (G_TYPE_OBJECT, qname, gobject_class);
+
+ seed_obj_ref = JSObjectMake (eng->context, NULL, NULL);
+ seed_object_set_property (eng->context, eng->global, "Seed", seed_obj_ref);
+ JSValueProtect (eng->context, seed_obj_ref);
+
+ g_irepository_require (g_irepository_get_default (), "GObject", NULL, 0, 0);
+ g_irepository_require (g_irepository_get_default (), "GIRepository",
+ NULL, 0, 0);
+
+ seed_structs_init ();
+ seed_closures_init ();
+
+ return eng;
+}
+
+/**
+ * seed_init_with_context_and_group:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ * @context A reference to an existing JavascriptCore context
+ * @group: A #SeedContextGroup within which to create the initial context.
+ *
+ * Initializes a new #SeedEngine using an existing JavascriptCore context.
+ * This involves initializing GLib, adding @instance to @group, adding the
+ * default globals to the provided context, and initializing various internal
+ * parts of Seed.
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init_with_context_and_group (gint * argc,
+ gchar *** argv, JSGlobalContextRef context, JSContextGroupRef group)
+{
+
+ eng = seed_init_constrained_with_context_and_group (argc, argv, context, group);
+ seed_init_builtins (eng, argc, argv);
+ seed_initialize_importer (eng->context, eng->global);
+ seed_gtype_init (eng);
+
+ defaults_script =
+ JSStringCreateWithUTF8CString ("Seed.include(\"" SEED_PREFIX_PATH
+ "extensions/Seed.js\");");
+
+ JSEvaluateScript (eng->context, defaults_script, NULL, NULL, 0, NULL);
+
+ base_info_info =
+ g_irepository_find_by_name (0, "GIRepository", "IBaseInfo");
+
+ return eng;
+}
+
+
+
+/**
+ * seed_init_with_context_group:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ * @group: A #SeedContextGroup within which to create the initial context.
+ *
+ * Initializes a new #SeedEngine. This involves initializing GLib, creating
+ * an initial context (in #group) with all of the default globals, and
+ * initializing various internal parts of Seed.
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init_with_context_group (gint * argc,
+ gchar *** argv, JSContextGroupRef group)
+{
+ return seed_init_with_context_and_group (argc, argv, JSGlobalContextCreateInGroup (group, NULL), group);
+}
+
+/**
+ * seed_init:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ *
+ * Initializes a new #SeedEngine. This involves initializing GLib, creating
+ * an initial context with all of the default globals, and initializing
+ * various internal parts of Seed.
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init (gint * argc, gchar *** argv)
+{
+ context_group = JSContextGroupCreate ();
+ pthread_key_create(&seed_next_gobject_wrapper_key, NULL);
+
+ return seed_init_with_context_group (argc, argv, context_group);
+}
+
+/**
+ * seed_init_with_context:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ * @context A reference to an existing JavascriptCore context
+
+ * Initializes a new #SeedEngine using an existing JavascriptCore context.
+ * This involves initializing GLib, adding the default globals to the provided
+ * @context and initializing various internal parts of Seed.
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init_with_context (gint * argc, gchar *** argv, JSGlobalContextRef context)
+{
+ context_group = JSContextGroupCreate ();
+ pthread_key_create(&seed_next_gobject_wrapper_key, NULL);
+
+ return seed_init_with_context_and_group (argc, argv, context, context_group);
+}
+
+/**
+ * seed_init_constrained:
+ * @argc: A reference to the number of arguments remaining to parse.
+ * @argv: A reference to an array of string arguments remaining to parse.
+ *
+ * Initializes an empty new #SeedEngine. The Javascript context of this engine is
+ * *not* filled with any builtins functions and the import system.
+ *
+ * The javascript code executed with this engine can't import arbitrary
+ * GObject introspected librairies.
+ *
+ * Use this when control over what is exposed in the Javascript context is required,
+ * for security concerns for example.
+ * GObject instances can be selectively exposed by calling @seed_engine_expose_gobject.
+ * Namespaces can be selectively exposed by calling
+ *
+ * This function should only be called once within a single Seed application.
+ *
+ * Return value: The newly created and initialized #SeedEngine.
+ *
+ */
+SeedEngine *
+seed_init_constrained (gint * argc, gchar *** argv)
+{
+ context_group = JSContextGroupCreate ();
+ pthread_key_create(&seed_next_gobject_wrapper_key, NULL);
+
+ return seed_init_constrained_with_context_and_group(argc, argv,
+ JSGlobalContextCreateInGroup (context_group, NULL),
+ context_group);
+}
+
+/*
+ * seed_engine_expose_gobject:
+ * @engine:
+ * @name: The name of the global javascript variable pointing to @object
+ * @object: The #GObject instance that will be exposed in the the javascript context
+ * @gir_namespace: The Introspection namespace containing the type of the provided
+ * object.
+ *
+ * Expose a GObject instance to the global Javascript context and makes it accessible
+ * under the provided @js_name
+ *
+ * return: the SeedValue representing @object, NULL in case of error
+ */
+JSValueRef
+seed_engine_expose_gobject (SeedEngine *engine,
+ gchar *js_name,
+ GObject *object,
+ gchar *gir_namespace,
+ JSValueRef * exception)
+{
+ GError *error = NULL;
+
+ g_assert (engine != NULL && gir_namespace != NULL && js_name != NULL);
+
+ GITypelib *type_lib = g_irepository_require (g_irepository_get_default(),
+ gir_namespace, NULL, 0, &error);
+ if (type_lib == NULL)
+ {
+ seed_make_exception_from_gerror (engine->context, exception, error);
+ g_error_free (error);
+ return NULL;
+ }
+
+ JSValueRef obj_js_value = seed_value_from_object (engine->context,
+ G_OBJECT(object),
+ exception);
+ g_return_val_if_fail (obj_js_value != NULL, NULL);
+
+ g_return_val_if_fail (engine->global != NULL, NULL);
+
+ gboolean ok = seed_object_set_property (engine->context,
+ engine->global, js_name, obj_js_value);
+ g_return_val_if_fail (ok == TRUE, NULL);
+
+ return obj_js_value;
+}
+
+/*
+ * seed_engine_expose_namespace:
+ * @engine:
+ * @namespace: Name of the GIR Namespace that should be exposed in the JS context.
+ *
+ * Expose a GIR namespace in the global Javascript context and makes it accessible
+ * under a variable named after the namespace (ex: the namespace 'Notify' is held
+ * by the 'Notify' javascript variable.
+ *
+ * return: the SeedValue representing @namespace in the javascript context,
+ * NULL in case of error
+ */
+JSValueRef
+seed_engine_expose_namespace (SeedEngine *engine,
+ gchar *namespace_name,
+ JSValueRef *exception)
+{
+ g_assert (engine != NULL && namespace_name != NULL);
+
+ JSValueRef namespace = seed_gi_importer_do_namespace (engine->context,
+ namespace_name, exception);
+ g_return_val_if_fail (namespace != NULL, NULL);
+ gboolean ok = seed_object_set_property (engine->context,
+ engine->global, namespace_name, namespace);
+ g_return_val_if_fail (ok == TRUE, FALSE);
+
+ return namespace;
+}
diff --git a/libseed/seed-engine.h b/libseed/seed-engine.h
new file mode 100644
index 0000000..4adcde5
--- /dev/null
+++ b/libseed/seed-engine.h
@@ -0,0 +1,85 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_ENGINE_H
+#define _SEED_ENGINE_H
+
+#include "seed-private.h"
+
+extern JSClassRef gobject_class;
+extern JSClassRef gobject_method_class;
+extern JSClassRef gobject_constructor_class;
+extern JSClassRef gobject_named_constructor_class;
+extern JSClassRef seed_struct_constructor_class;
+extern JSClassRef gobject_init_method_class;
+
+extern pthread_key_t seed_next_gobject_wrapper_key;
+
+extern JSClassRef seed_callback_class;
+extern SeedEngine *eng;
+
+extern JSObjectRef seed_obj_ref;
+
+extern JSContextGroupRef context_group;
+
+extern JSStringRef defaults_script;
+
+typedef struct _SeedScript
+{
+ JSStringRef script;
+ JSValueRef exception;
+
+ JSStringRef source_url;
+ gint line_number;
+} SeedScript;
+
+JSObjectRef seed_gobject_get_prototype_for_gtype (GType type);
+JSClassRef seed_gobject_get_class_for_gtype (JSContextRef ctx, GType type);
+
+void
+seed_gobject_define_property_from_function_info (JSContextRef ctx,
+ GIFunctionInfo * info,
+ JSObjectRef object,
+ gboolean instance);
+void seed_create_function (JSContextRef ctx, gchar * name,
+ gpointer func, JSObjectRef obj);
+
+void seed_repl_expose (JSContextRef ctx, ...);
+
+typedef JSObjectRef (*SeedModuleInitCallback) (SeedEngine * eng);
+
+void seed_prepare_global_context (JSContextRef ctx);
+
+SeedScript *seed_make_script (JSContextRef ctx,
+ const gchar * js,
+ const gchar * source_url, gint line_number);
+SeedScript *seed_script_new_from_file (JSContextRef ctx, gchar * file);
+JSValueRef seed_script_exception (SeedScript * s);
+
+JSValueRef seed_evaluate (JSContextRef ctx, SeedScript * script,
+ JSObjectRef this);
+
+void seed_script_destroy (SeedScript * s);
+
+JSValueRef seed_simple_evaluate (JSContextRef ctx, const gchar * script,
+ JSValueRef * exception);
+
+GOptionGroup * seed_get_option_group (void);
+
+#endif
diff --git a/libseed/seed-exceptions.c b/libseed/seed-exceptions.c
new file mode 100644
index 0000000..2025e77
--- /dev/null
+++ b/libseed/seed-exceptions.c
@@ -0,0 +1,243 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include <stdarg.h>
+
+/**
+ * seed_make_exception:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException in which to store the exception.
+ * @name: The #gchar* representing the exception name.
+ * @message: The #gchar*, as a printf format string, representing the
+ * details of the exception.
+ * @VarArgs: A list of printf-style format arguments to substitute in @message.
+ *
+ * Creates a new JavaScript exception with the given attributes.
+ *
+ * The line number and file name of the exception created will be undefined.
+ *
+ */
+void
+seed_make_exception (JSContextRef ctx,
+ JSValueRef * exception,
+ const gchar * name, const gchar * message, ...)
+{
+ JSStringRef js_name = 0;
+ JSStringRef js_message = 0;
+ JSValueRef js_name_ref = 0, js_message_ref = 0;
+ JSObjectRef exception_obj;
+ gchar *mes;
+ va_list args;
+
+ if (!exception)
+ return;
+
+ va_start (args, message);
+
+ if (name)
+ {
+ js_name = JSStringCreateWithUTF8CString (name);
+ js_name_ref = JSValueMakeString (ctx, js_name);
+ }
+ if (message)
+ {
+ mes = g_strdup_vprintf (message, args);
+ js_message = JSStringCreateWithUTF8CString (mes);
+ js_message_ref = JSValueMakeString (ctx, js_message);
+ g_free (mes);
+ }
+
+ // TODO: needs to create a global class named 'name', and this needs to
+ // be an instance of it, for integration with normal JS!
+
+ exception_obj = JSObjectMake (ctx, 0, NULL);
+ seed_object_set_property (ctx, exception_obj, "message", js_message_ref);
+ seed_object_set_property (ctx, exception_obj, "name", js_name_ref);
+
+ *exception = exception_obj;
+
+ JSStringRelease (js_name);
+ JSStringRelease (js_message);
+
+ va_end (args);
+}
+
+/**
+ * seed_make_exception_from_gerror:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException in which to store the exception.
+ * @error: A #GError* from which to copy the properties of the exception.
+ *
+ * Generates @exception with the name and description of @error.
+ *
+ */
+void
+seed_make_exception_from_gerror (JSContextRef ctx,
+ JSValueRef * exception, GError * error)
+{
+ const gchar *domain = g_quark_to_string (error->domain);
+ GString *string = g_string_new (domain);
+ guint i;
+ gsize len = string->len;
+
+ *(string->str) = g_unichar_toupper (*(string->str));
+ for (i = 0; i < len; i++)
+ {
+ if (*(string->str + i) == '-')
+ {
+ *(string->str + i + 1) = g_unichar_toupper (*(string->str + i + 1));
+ g_string_erase (string, i, 1);
+ }
+ else if (!g_strcmp0 (string->str + i - 1, "Quark"))
+ g_string_truncate (string, i - 1);
+
+ }
+ seed_make_exception (ctx, exception, string->str, error->message, NULL);
+
+ g_string_free (string, TRUE);
+}
+
+/**
+ * seed_exception_get_name:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException.
+ *
+ * Retrieves the name of the given exception; this could be one of the
+ * predefined exception names given above, or your own name, which should
+ * be a single CamelCase word, preferably ending in something like "Error".
+ *
+ * Return value: A #gchar* representing the name of @exception.
+ *
+ */
+gchar *
+seed_exception_get_name (JSContextRef ctx, JSValueRef e)
+{
+ JSValueRef name;
+ g_assert ((e));
+ if (!JSValueIsObject (ctx, e))
+ return NULL;
+
+ name = seed_object_get_property (ctx, (JSObjectRef) e, "name");
+ return seed_value_to_string (ctx, name, NULL);
+}
+
+/**
+ * seed_exception_get_message:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException.
+ *
+ * Retrieves the message of the given exception; this should be a
+ * human-readable string describing the exception enough that a developer
+ * could utilize the message in order to determine where to look to debug
+ * the problem.
+ *
+ * Return value: A #gchar* representing the detailed message of @exception.
+ *
+ */
+gchar *
+seed_exception_get_message (JSContextRef ctx, JSValueRef e)
+{
+ JSValueRef name;
+ g_assert ((e));
+ if (!JSValueIsObject (ctx, e))
+ return 0;
+
+ name = seed_object_get_property (ctx, (JSObjectRef) e, "message");
+ return seed_value_to_string (ctx, name, NULL);
+}
+
+/**
+ * seed_exception_get_line:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException.
+ *
+ * Retrieves the line number the given exception was thrown from; keep in mind
+ * that exceptions created from C have an undefined line number.
+ *
+ * Return value: A #guint representing the line number from which @exception
+ * was thrown.
+ *
+ */
+guint
+seed_exception_get_line (JSContextRef ctx, JSValueRef e)
+{
+ JSValueRef line;
+ g_assert ((e));
+ if (!JSValueIsObject (ctx, e))
+ return 0;
+ line = seed_object_get_property (ctx, (JSObjectRef) e, "line");
+ return seed_value_to_uint (ctx, line, NULL);
+}
+
+/**
+ * seed_exception_get_file:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException.
+ *
+ * Retrieves the file name the given exception was thrown from; keep in mind
+ * that exceptions created from C have an undefined file name.
+ *
+ * Return value: A #gchar* representing the name of the file from which
+ * @exception was thrown.
+ *
+ */
+gchar *
+seed_exception_get_file (JSContextRef ctx, JSValueRef e)
+{
+ JSValueRef line;
+ g_assert ((e));
+ if (!JSValueIsObject (ctx, e))
+ return 0;
+ line = seed_object_get_property (ctx, (JSObjectRef) e, "sourceURL");
+ return seed_value_to_string (ctx, line, 0);
+}
+
+/**
+ * seed_exception_to_string:
+ * @ctx: A #SeedContext.
+ * @exception: A reference to a #SeedException.
+ *
+ * Properly formats the name, detailed message, line number, and file name of
+ * the given extension. This provides a consistent format for printed
+ * exceptions, to reduce confusion. Please use it if you're exposing exception
+ * data to the outside world.
+ *
+ * Return value: A #gchar* representing the @exception.
+ *
+ */
+gchar *
+seed_exception_to_string (JSContextRef ctx, JSValueRef e)
+{
+ guint line;
+ gchar *mes, *name, *file, *ret;
+
+ line = seed_exception_get_line (ctx, e);
+ mes = seed_exception_get_message (ctx, e);
+ file = seed_exception_get_file (ctx, e);
+ name = seed_exception_get_name (ctx, e);
+
+ ret = g_strdup_printf ("Line %d in %s: %s %s", line, file, name, mes);
+
+ g_free (mes);
+ g_free (file);
+ g_free (name);
+
+ return ret;
+}
diff --git a/libseed/seed-exceptions.h b/libseed/seed-exceptions.h
new file mode 100644
index 0000000..cefdf70
--- /dev/null
+++ b/libseed/seed-exceptions.h
@@ -0,0 +1,40 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_EXCEPTIONS_H
+#define _SEED_EXCEPTIONS_H
+
+#include "seed-private.h"
+
+void
+seed_make_exception (JSContextRef ctx, JSValueRef * exception,
+ const gchar * name, const gchar * message, ...)
+G_GNUC_PRINTF (4, 5);
+
+ void seed_make_exception_from_gerror (JSContextRef ctx,
+ JSValueRef * exception,
+ GError * e);
+
+ gchar *seed_exception_get_name (JSContextRef ctx, JSValueRef e);
+ gchar *seed_exception_get_message (JSContextRef ctx, JSValueRef e);
+ guint seed_exception_get_line (JSContextRef ctx, JSValueRef e);
+ gchar *seed_exception_get_file (JSContextRef ctx, JSValueRef e);
+ gchar *seed_exception_to_string (JSContextRef ctx, JSValueRef e);
+
+#endif
diff --git a/libseed/seed-gtype.c b/libseed/seed-gtype.c
new file mode 100644
index 0000000..6686702
--- /dev/null
+++ b/libseed/seed-gtype.c
@@ -0,0 +1,1063 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include <sys/mman.h>
+
+typedef GObject *(*GObjectConstructCallback) (GType, guint,
+ GObjectConstructParam *);
+
+JSClassRef seed_gtype_class;
+GIBaseInfo *objectclass_info = NULL;
+GIBaseInfo *paramspec_info = NULL;
+
+JSObjectRef seed_gtype_constructor;
+
+GQuark qgetter;
+GQuark qsetter;
+
+GQuark qiinit;
+GQuark qcinit;
+
+typedef struct _SeedGClassPrivates {
+ JSObjectRef constructor;
+ JSObjectRef func;
+
+ JSObjectRef definition;
+} SeedGClassPrivates;
+
+static JSValueRef
+seed_property_method_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GParamSpec *spec;
+ GObjectClass *class;
+ guint property_count;
+ JSValueRef newcount, oldcount;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Property installation expected 1 argument"
+ " got %zd \n", argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+
+ if (JSValueIsNull (ctx, arguments[0]) ||
+ // Might need to check if JSValueIsObject? Who knows with WebKit.
+ !JSValueIsObjectOfClass (ctx, arguments[0], seed_struct_class))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Property installation expected a "
+ "GParamSpec as argument");
+ return JSValueMakeNull (ctx);
+ }
+
+ spec = (GParamSpec *) seed_pointer_get_pointer (ctx, arguments[0]);
+
+ oldcount = seed_object_get_property (ctx, thisObject, "property_count");
+ property_count = seed_value_to_int (ctx, oldcount, exception);
+
+ class = seed_pointer_get_pointer (ctx, thisObject);
+ g_object_class_install_property (class, property_count, spec);
+
+ newcount = seed_value_from_int (ctx, property_count + 1, exception);
+ seed_object_set_property (ctx, thisObject, "property_count", newcount);
+
+ return oldcount;
+}
+
+static JSValueRef
+seed_gsignal_method_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ // TODO: class_closure, and accumlator. Not useful until we have structs.
+ JSValueRef jsname, jstype, jsflags, jsreturn_type, jsparams;
+ GType itype, return_type;
+ guint n_params = 0;
+ GType *param_types = 0;
+ gchar *name;
+ guint signal_id;
+ GSignalFlags flags;
+
+ /* Sanity check */
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal constructor expected 1 argument"
+ " got %zd \n", argumentCount);
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ if (JSValueIsNull (ctx, arguments[0])
+ || !JSValueIsObject (ctx, arguments[0]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal constructor expected object"
+ " as first argument");
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ /* Signal name */
+ jsname = seed_object_get_property (ctx, (JSObjectRef) arguments[0], "name");
+ /* seed_value_to_string can handle non strings, however the kind
+ * of strings we want as a signal name are rather small, so make sure
+ * we have an actual string */
+ if (JSValueIsNull (ctx, jsname) || !JSValueIsString (ctx, jsname))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal definition needs name property");
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ name = seed_value_to_string (ctx, jsname, exception);
+
+ /* Type to install on. Comes from class. */
+ jstype = seed_object_get_property (ctx, thisObject, "type");
+ itype = seed_value_to_int (ctx, jstype, exception);
+
+ SEED_NOTE (GTYPE, "Installing signal with name: %s on type: %s",
+ name, g_type_name (itype));
+
+ /* Signal flags */
+ jsflags = seed_object_get_property (ctx,
+ (JSObjectRef) arguments[0], "flags");
+ if (JSValueIsNull (ctx, jsflags) || !JSValueIsNumber (ctx, jsflags))
+ flags = G_SIGNAL_RUN_LAST;
+ else
+ flags = seed_value_to_long (ctx, jsflags, exception);
+
+ /* Return type */
+ jsreturn_type = seed_object_get_property (ctx, (JSObjectRef) arguments[0],
+ "return_type");
+ if (JSValueIsNull (ctx, jsreturn_type) ||
+ !JSValueIsNumber (ctx, jsreturn_type))
+ return_type = G_TYPE_NONE;
+ else
+ return_type = seed_value_to_int (ctx, jsreturn_type, exception);
+
+ /* Number of params and types */
+ jsparams = seed_object_get_property (ctx, (JSObjectRef) arguments[0],
+ "parameters");
+ if (!JSValueIsNull (ctx, jsparams) && JSValueIsObject (ctx, jsparams))
+ {
+ n_params = seed_value_to_int
+ (ctx,
+ seed_object_get_property (ctx, (JSObjectRef) jsparams, "length"),
+ exception);
+ if (n_params > 0)
+ {
+ guint i;
+ JSValueRef ptype;
+
+ param_types = g_new0 (GType, n_params);
+ for (i = 0; i < n_params; i++)
+ {
+ ptype = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ jsparams, i, exception);
+
+ param_types[i] = seed_value_to_int (ctx, ptype, exception);
+ }
+ }
+ }
+
+ signal_id = g_signal_newv (name, itype,
+ flags, 0, 0, 0,
+ gi_cclosure_marshal_generic,
+ return_type, n_params, param_types);
+
+ g_free (name);
+ g_free (param_types);
+
+ return (JSValueRef) seed_value_from_uint (ctx, signal_id, exception);
+}
+
+static void
+seed_gtype_builtin_set_property (GObject * object,
+ guint property_id,
+ const GValue * value, GParamSpec * spec)
+{
+ JSContextRef ctx = JSGlobalContextCreateInGroup (context_group, 0);
+ gchar *name = g_strjoin (NULL, "_", spec->name, NULL);
+ JSObjectRef jsobj = (JSObjectRef) seed_value_from_object (ctx, object, 0);
+
+ seed_prepare_global_context (ctx);
+
+ seed_object_set_property (ctx,
+ jsobj,
+ name,
+ seed_value_from_gvalue (ctx, (GValue *) value,
+ 0));
+
+ g_free (name);
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+}
+
+static void
+seed_gtype_builtin_get_property (GObject * object,
+ guint property_id,
+ GValue * value, GParamSpec * spec)
+{
+ // TODO: Exceptions
+ JSContextRef ctx = JSGlobalContextCreateInGroup (context_group, 0);
+ gchar *name = g_strjoin (NULL, "_", spec->name, NULL);
+ JSObjectRef jsobj = (JSObjectRef) seed_value_from_object (ctx, object, 0);
+ JSValueRef jsval = seed_object_get_property (ctx, jsobj,
+ name);
+
+ seed_prepare_global_context (ctx);
+
+ seed_value_to_gvalue (ctx, jsval, spec->value_type, value, 0);
+
+ g_free (name);
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+}
+
+static void
+seed_gtype_set_property (GObject * object,
+ guint property_id,
+ const GValue * value, GParamSpec * spec)
+{
+ gpointer data = g_param_spec_get_qdata (spec, qsetter);
+
+ if (!data)
+ {
+ seed_gtype_builtin_set_property (object, property_id, value, spec);
+ return;
+ }
+}
+
+static void
+seed_gtype_get_property (GObject * object,
+ guint property_id, GValue * value, GParamSpec * spec)
+{
+ gpointer data = g_param_spec_get_qdata (spec, qgetter);
+
+ if (!data)
+ {
+ seed_gtype_builtin_get_property (object, property_id, value, spec);
+ return;
+ }
+}
+
+static GIBaseInfo *
+seed_get_class_info_for_type (GType type)
+{
+ GIBaseInfo *object_info;
+
+ // Note to self: Investigate the entire premise of this function.
+ while ((type = g_type_parent (type)))
+ {
+ GIBaseInfo *ret;
+
+ object_info = g_irepository_find_by_gtype (NULL, type);
+ if (object_info)
+ {
+ ret = g_object_info_get_class_struct ((GIObjectInfo *)object_info);
+ g_base_info_unref (object_info);
+
+ return ret;
+ }
+ }
+
+ return NULL;
+}
+
+static void
+seed_attach_methods_to_class_object (JSContextRef ctx,
+ JSObjectRef object,
+ JSValueRef * exception)
+{
+ seed_create_function (ctx, "c_install_property",
+ &seed_property_method_invoked, object);
+ seed_create_function (ctx, "install_signal",
+ &seed_gsignal_method_invoked, object);
+}
+
+static void
+seed_gtype_call_construct (GType type, GObject * object)
+{
+ JSContextRef ctx;
+ JSObjectRef func, this_object;
+ JSValueRef exception = NULL, args[1];
+ gchar *mes;
+
+ func = g_type_get_qdata (type, qiinit);
+
+ if (func)
+ {
+ ctx = JSGlobalContextCreateInGroup (context_group, 0);
+ seed_prepare_global_context (ctx);
+
+ SEED_NOTE (GTYPE, "Handling constructor for: %p with type: %s",
+ object, g_type_name (type));
+ this_object = (JSObjectRef) seed_value_from_object (ctx, object, NULL);
+ args[0] = this_object;
+
+ JSObjectCallAsFunction (ctx, func, this_object, 1, args, &exception);
+ if (exception)
+ {
+ mes = seed_exception_to_string (ctx, exception);
+ g_warning ("Exception in instance construction. %s \n", mes);
+ g_free (mes);
+ }
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+ }
+
+
+}
+
+static GObject *
+seed_gtype_construct (GType type,
+ guint n_construct_params,
+ GObjectConstructParam * construct_params)
+{
+ GObject *object;
+ GType parent;
+ GObjectClass *parent_class;
+
+ parent = g_type_parent (type);
+ parent_class = g_type_class_ref (parent);
+
+ if (parent_class->constructor == seed_gtype_construct)
+ {
+ GType t = parent;
+ parent = g_type_parent (parent);
+
+ g_type_class_unref (parent_class);
+ parent_class = g_type_class_ref (parent);
+
+ object =
+ parent_class->constructor (type, n_construct_params,
+ construct_params);
+
+ seed_gtype_call_construct (t, object);
+
+ g_type_class_unref (parent_class);
+ }
+ else
+ object =
+ parent_class->constructor (type, n_construct_params, construct_params);
+
+ seed_gtype_call_construct (type, object);
+
+ g_type_class_unref (parent_class);
+
+ return object;
+}
+
+static void
+seed_gtype_install_signals (JSContextRef ctx,
+ JSObjectRef definition, GType type,
+ JSValueRef * exception)
+{
+ JSObjectRef signals, signal_def;
+ JSValueRef jslength;
+ guint i, j, length;
+ GType return_type;
+ GType *param_types = NULL;
+ guint n_params = 0;
+ GSignalFlags flags;
+ JSValueRef jsname, jsflags, jsreturn_type, jsparams;
+ gchar *name;
+
+ signals =
+ (JSObjectRef) seed_object_get_property (ctx, definition, "signals");
+ if (JSValueIsNull (ctx, signals) || !JSValueIsObject (ctx, signals))
+ return;
+
+ jslength = seed_object_get_property (ctx, signals, "length");
+ if (JSValueIsNull (ctx, jslength))
+ return;
+
+ length = seed_value_to_uint (ctx, jslength, exception);
+ for (i = 0; i < length; i++)
+ {
+ signal_def = (JSObjectRef) JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ signals, i,
+ exception);
+
+ if (JSValueIsNull (ctx, signal_def)
+ || !JSValueIsObject (ctx, signal_def))
+ continue;
+
+ // TODO: Error checking
+ jsname = seed_object_get_property (ctx, signal_def, "name");
+ name = seed_value_to_string (ctx, jsname, exception);
+
+ SEED_NOTE (GTYPE, "Installing signal with name: %s on type: %s",
+ name, g_type_name (type));
+
+ jsflags =
+ seed_object_get_property (ctx, (JSObjectRef) signal_def, "flags");
+ if (JSValueIsNull (ctx, jsflags) || !JSValueIsNumber (ctx, jsflags))
+ flags = G_SIGNAL_RUN_LAST;
+ else
+ flags = seed_value_to_long (ctx, jsflags, exception);
+
+ jsreturn_type =
+ seed_object_get_property (ctx, signal_def, "return_type");
+ if (JSValueIsNull (ctx, jsreturn_type)
+ || !JSValueIsNumber (ctx, jsreturn_type))
+ return_type = G_TYPE_NONE;
+ else
+ return_type = seed_value_to_long (ctx, jsreturn_type, exception);
+
+ jsparams = seed_object_get_property (ctx, signal_def, "parameters");
+
+ if (!JSValueIsNull (ctx, jsparams) && JSValueIsObject (ctx, jsparams))
+ {
+ n_params =
+ seed_value_to_int (ctx,
+ seed_object_get_property (ctx,
+ (JSObjectRef)
+ jsparams, "length"),
+ exception);
+ if (n_params > 0)
+ {
+ param_types = g_alloca (sizeof (GType) * n_params);
+ for (j = 0; j < n_params; j++)
+ {
+ JSValueRef ptype = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ jsparams,
+ j,
+ exception);
+ param_types[j] =
+ (GType) seed_value_to_long (ctx, ptype, exception);
+ }
+ }
+ }
+
+ g_signal_newv (name, type,
+ flags, 0, 0, 0,
+ gi_cclosure_marshal_generic,
+ return_type, n_params, param_types);
+ g_free (name);
+
+ }
+}
+
+static unsigned int
+seed_gtype_install_properties (JSContextRef ctx,
+ JSObjectRef definition,
+ GType type, GObjectClass *g_class,
+ JSValueRef * exception)
+{
+ JSObjectRef properties, property_def;
+ JSValueRef jslength;
+ guint i, length;
+ GType property_type, object_type;
+ GParamFlags flags;
+ JSValueRef jsname, jsflags, jsproperty_type, jsdefault_value, jsobject_type;
+ JSValueRef jsnick, jsblurb, jsmin_value, jsmax_value;
+ gchar *name , *nick, *blurb;
+ GParamSpec *pspec;
+ guint property_count = 0;
+
+ properties = (JSObjectRef) seed_object_get_property (ctx, definition,
+ "properties");
+ if (JSValueIsNull (ctx, properties) || !JSValueIsObject (ctx, properties))
+ return 0;
+
+ jslength = seed_object_get_property (ctx, properties, "length");
+ if (JSValueIsNull (ctx, jslength))
+ return 0;
+
+ length = seed_value_to_uint (ctx, jslength, exception);
+ for (i = 0; i < length; i++)
+ {
+ property_def = (JSObjectRef) JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ properties, i,
+ NULL);
+
+ if (JSValueIsNull (ctx, property_def)
+ || !JSValueIsObject (ctx, property_def))
+ continue;
+
+ jsname = seed_object_get_property (ctx, property_def, "name");
+ if (!JSValueIsString(ctx, jsname))
+ {
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property requires name attribute");
+ return property_count;
+ }
+ name = seed_value_to_string (ctx, jsname, exception);
+
+ // Check for "nick" property; set to name if nonexistent
+ jsnick = seed_object_get_property (ctx, property_def, "nick");
+ if (!JSValueIsString(ctx, jsnick))
+ nick = name;
+ else
+ nick = seed_value_to_string (ctx, jsnick, exception);
+
+ // Check for "blurb" property; set to name if nonexistent
+ jsblurb = seed_object_get_property (ctx, property_def, "blurb");
+ if (!JSValueIsString(ctx, jsblurb))
+ blurb = name;
+ else
+ blurb = seed_value_to_string (ctx, jsblurb, exception);
+
+ SEED_NOTE (GTYPE, "Installing property with name: %s on type: %s",
+ name, g_type_name (type));
+
+ // Flags default to read/write, non-construct
+ jsflags =
+ seed_object_get_property (ctx, (JSObjectRef) property_def, "flags");
+ if (JSValueIsNull (ctx, jsflags) || !JSValueIsNumber (ctx, jsflags))
+ flags = G_PARAM_READABLE | G_PARAM_WRITABLE;
+ else
+ flags = seed_value_to_long (ctx, jsflags, exception);
+
+ jsproperty_type = seed_object_get_property (ctx, property_def, "type");
+
+ if (JSValueIsNull (ctx, jsproperty_type) ||
+ !JSValueIsNumber (ctx, jsproperty_type))
+ property_type = G_TYPE_NONE;
+ else
+ property_type = seed_value_to_long (ctx, jsproperty_type, exception);
+
+ jsdefault_value = seed_object_get_property (ctx, property_def,
+ "default_value");
+
+ if (JSValueIsNull (ctx, jsdefault_value) ||
+ JSValueIsUndefined (ctx, jsdefault_value))
+ {
+ if(property_type == G_TYPE_OBJECT)
+ continue;
+
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property of type %s requires default_value attribute",
+ g_type_name(property_type));
+ return property_count;
+ }
+
+ jsmin_value = seed_object_get_property (ctx, property_def,
+ "minimum_value");
+ jsmax_value = seed_object_get_property (ctx, property_def,
+ "maximum_value");
+
+ // Make sure min/max properties are defined, based on type
+ if(property_type == G_TYPE_CHAR ||
+ property_type == G_TYPE_UCHAR ||
+ property_type == G_TYPE_INT ||
+ property_type == G_TYPE_UINT ||
+ property_type == G_TYPE_INT64 ||
+ property_type == G_TYPE_UINT64 ||
+ property_type == G_TYPE_FLOAT ||
+ property_type == G_TYPE_DOUBLE)
+ {
+ if (JSValueIsNull (ctx, jsmin_value) ||
+ !JSValueIsNumber (ctx, jsmin_value))
+ {
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property of type %s requires minimum_value attribute",
+ g_type_name(property_type));
+ return property_count;
+ }
+ if (JSValueIsNull (ctx, jsmax_value) ||
+ !JSValueIsNumber (ctx, jsmax_value))
+ {
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property of type %s requires maximum_value attribute",
+ g_type_name(property_type));
+ return property_count;
+ }
+ }
+
+
+ switch(property_type)
+ {
+ case G_TYPE_BOOLEAN:
+ pspec = g_param_spec_boolean(name, nick, blurb,
+ seed_value_to_boolean(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_CHAR:
+ pspec = g_param_spec_char(name, nick, blurb,
+ seed_value_to_char(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_char(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_char(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_UCHAR:
+ pspec = g_param_spec_uchar(name, nick, blurb,
+ seed_value_to_uchar(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_uchar(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_uchar(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_INT:
+ pspec = g_param_spec_int(name, nick, blurb,
+ seed_value_to_int(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_int(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_int(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_UINT:
+ pspec = g_param_spec_uint(name, nick, blurb,
+ seed_value_to_uint(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_uint(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_uint(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_LONG:
+ pspec = g_param_spec_long(name, nick, blurb,
+ seed_value_to_long(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_long(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_long(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_ULONG:
+ pspec = g_param_spec_ulong(name, nick, blurb,
+ seed_value_to_ulong(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_ulong(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_ulong(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_INT64:
+ pspec = g_param_spec_int64(name, nick, blurb,
+ seed_value_to_int64(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_int64(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_int64(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_UINT64:
+ pspec = g_param_spec_uint64(name, nick, blurb,
+ seed_value_to_uint64(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_uint64(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_uint64(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_FLOAT:
+ pspec = g_param_spec_float(name, nick, blurb,
+ seed_value_to_float(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_float(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_float(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_DOUBLE:
+ pspec = g_param_spec_double(name, nick, blurb,
+ seed_value_to_double(ctx,
+ jsmin_value,
+ exception),
+ seed_value_to_double(ctx,
+ jsmax_value,
+ exception),
+ seed_value_to_double(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ // TODO: support enums/flags/params
+ case G_TYPE_STRING:
+ // TODO: leaky?
+ pspec = g_param_spec_string(name, nick, blurb,
+ seed_value_to_string(ctx,
+ jsdefault_value,
+ exception), flags);
+ break;
+ case G_TYPE_OBJECT:
+ jsobject_type = seed_object_get_property (ctx, property_def,
+ "object_type");
+
+ if (JSValueIsNull (ctx, jsobject_type) ||
+ !JSValueIsNumber (ctx, jsobject_type))
+ object_type = G_TYPE_NONE;
+ else
+ object_type = seed_value_to_long (ctx, jsobject_type, exception);
+
+ if(object_type == G_TYPE_NONE)
+ {
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property of type %s requires object_type attribute",
+ g_type_name(property_type));
+ return property_count;
+ }
+
+ pspec = g_param_spec_object(name, nick, blurb,
+ object_type, flags);
+ break;
+ case G_TYPE_BOXED: // Boxed types TODO: this is almost certainly wrong
+ pspec = g_param_spec_boxed(name, nick, blurb, type, flags);
+ break;
+ default:
+ case G_TYPE_NONE:
+ seed_make_exception (ctx, exception, "PropertyInstallationError",
+ "Property requires type attribute");
+ return property_count;
+ break;
+ }
+
+ g_object_class_install_property (g_class, ++property_count, pspec);
+
+ if (nick != name)
+ g_free (nick);
+
+ if (blurb != name)
+ g_free (blurb);
+
+ g_free (name);
+ }
+
+ return property_count;
+}
+
+static void
+seed_gtype_class_init (gpointer g_class, gpointer class_data)
+{
+ SeedGClassPrivates *priv;
+ GIBaseInfo *class_info;
+ JSContextRef ctx;
+ JSValueRef jsargs[2];
+ GType type;
+ JSValueRef exception = NULL;
+ int initial_prop_count = 1;
+ GQuark class_init_exception_q =
+ g_quark_from_static_string("type-class-init-exception");
+
+ priv = (SeedGClassPrivates *) class_data;
+
+ ((GObjectClass *)g_class)->get_property = seed_gtype_get_property;
+ ((GObjectClass *)g_class)->set_property = seed_gtype_set_property;
+ ((GObjectClass *)g_class)->constructor = seed_gtype_construct;
+
+ ctx = JSGlobalContextCreateInGroup (context_group, 0);
+
+ type = (GType) JSObjectGetPrivate (priv->constructor);
+ seed_gtype_install_signals (ctx, priv->definition, type, &exception);
+ initial_prop_count = seed_gtype_install_properties (ctx,
+ priv->definition,
+ type,
+ (GObjectClass *) g_class,
+ &exception);
+
+ if (!priv->func)
+ {
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+ if (exception)
+ {
+ g_type_set_qdata(type, class_init_exception_q, (gpointer)exception);
+ }
+ return;
+ }
+
+ seed_prepare_global_context (ctx);
+
+ class_info = seed_get_class_info_for_type (type);
+
+ jsargs[0] = seed_make_struct (ctx, g_class, class_info);
+ jsargs[1] = seed_gobject_get_prototype_for_gtype (type);
+
+ seed_attach_methods_to_class_object (ctx, (JSObjectRef) jsargs[0],
+ &exception);
+
+ g_base_info_unref ((GIBaseInfo *) class_info);
+
+ SEED_NOTE (GTYPE, "Marshalling class init for type: %s",
+ g_type_name (type));
+
+ seed_object_set_property (ctx, (JSObjectRef) jsargs[0],
+ "type", seed_value_from_int (ctx, type, 0));
+ seed_object_set_property (ctx, (JSObjectRef) jsargs[0],
+ "property_count",
+ seed_value_from_int (ctx, initial_prop_count + 1,
+ 0));
+
+ JSObjectCallAsFunction (ctx, priv->func, 0, 2, jsargs, &exception);
+ if (exception)
+ {
+ g_type_set_qdata(type, class_init_exception_q, (gpointer)exception);
+ }
+
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+}
+
+static JSObjectRef
+seed_gtype_constructor_invoked (JSContextRef ctx,
+ JSObjectRef constructor,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ JSValueRef class_init, instance_init, name, parent_ref;
+ GType parent_type, new_type;
+ gchar *new_name;
+ GTypeInfo type_info = {
+ 0,
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) NULL,
+ (GClassFinalizeFunc) NULL,
+ NULL,
+ 0,
+ 0,
+ NULL
+ };
+ GTypeQuery query;
+ JSObjectRef constructor_ref;
+ SeedGClassPrivates *priv;
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "GType constructor expected 1 "
+ "argument, got %zd \n", argumentCount);
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ if (!JSValueIsObject (ctx, arguments[0]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "GType constructor expected a"
+ "class definition object. Got a nonobject");
+
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ parent_ref = seed_object_get_property (ctx,
+ (JSObjectRef) arguments[0],
+ "parent");
+ class_init =
+ seed_object_get_property (ctx, (JSObjectRef) arguments[0], "class_init");
+ instance_init =
+ seed_object_get_property (ctx, (JSObjectRef) arguments[0], "init");
+ name = seed_object_get_property (ctx, (JSObjectRef) arguments[0], "name");
+
+ new_name = seed_value_to_string (ctx, name, exception);
+ if (!JSValueIsNumber (ctx, parent_ref))
+ {
+ seed_make_exception (ctx, exception, "TypeError",
+ "GType constructor expected GType for parent");
+
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+
+ // TODO: GType is of variable length, so this is an incorrect fix
+ parent_type = (GType) seed_value_to_long (ctx, parent_ref, exception);
+
+ SEED_NOTE (GTYPE, "Registering new GType with name: %s as child of %s.",
+ new_name, g_type_name (parent_type));
+
+ g_type_query (parent_type, &query);
+ type_info.class_size = query.class_size;
+ type_info.instance_size = query.instance_size;
+ type_info.class_init = seed_gtype_class_init;
+
+ priv = g_slice_alloc (sizeof (SeedGClassPrivates));
+
+ if (!JSValueIsNull (ctx, class_init) &&
+ JSValueIsObject (ctx, class_init) &&
+ JSObjectIsFunction (ctx, (JSObjectRef) class_init))
+ {
+ priv->func = (gpointer) class_init;
+ JSValueProtect (ctx, class_init);
+ }
+
+
+ constructor_ref = JSObjectMake (ctx, gobject_constructor_class,
+ (gpointer) 0);
+ JSValueProtect (ctx, constructor_ref);
+
+ priv->constructor = constructor_ref;
+
+ JSValueProtect (ctx, arguments[0]);
+ priv->definition = (JSObjectRef) arguments[0];
+
+ type_info.class_data = priv;
+
+ new_type = g_type_register_static (parent_type, new_name, &type_info, 0);
+ seed_gobject_get_class_for_gtype (ctx, new_type);
+ JSObjectSetPrivate (constructor_ref, (gpointer) new_type);
+
+ seed_object_set_property (ctx, constructor_ref,
+ "type", seed_value_from_int (ctx, new_type,
+ exception));
+
+ if (!JSValueIsNull (ctx, instance_init) &&
+ JSValueIsObject (ctx, instance_init) &&
+ JSObjectIsFunction (ctx, (JSObjectRef) instance_init))
+ {
+ g_type_set_qdata (new_type, qiinit, (gpointer) instance_init);
+ JSValueProtect (ctx, instance_init);
+ }
+
+ g_free (new_name);
+ return constructor_ref;
+}
+
+static JSValueRef
+seed_param_getter_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GParamSpec *pspec = seed_pointer_get_pointer (ctx, thisObject);
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "ParamSpec.get expected "
+ "1 argument, got %zd", argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+ else if (JSValueIsNull (ctx, arguments[0]) ||
+ !JSValueIsObject (ctx, arguments[0]) ||
+ !JSObjectIsFunction (ctx, (JSObjectRef) arguments[0]))
+ {
+ // Maybe should accept C functions
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "ParamSpec.get expected a function");
+ return JSValueMakeNull (ctx);
+ }
+
+ g_param_spec_set_qdata (pspec, qgetter, (gpointer) arguments[0]);
+
+ return seed_value_from_boolean (ctx, TRUE, exception);
+}
+
+static JSValueRef
+seed_param_setter_invoked (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GParamSpec *pspec = seed_pointer_get_pointer (ctx, thisObject);
+
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "ParamSpec.set expected "
+ "1 argument, got %zd", argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+ else if (JSValueIsNull (ctx, arguments[0]) ||
+ !JSValueIsObject (ctx, arguments[0]) ||
+ !JSObjectIsFunction (ctx, (JSObjectRef) arguments[0]))
+ {
+ // Maybe should accept C functions
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "ParamSpec.set expected a function");
+ return JSValueMakeNull (ctx);
+ }
+
+ g_param_spec_set_qdata (pspec, qsetter, (gpointer) arguments[0]);
+
+ return seed_value_from_boolean (ctx, TRUE, exception);
+}
+
+void
+seed_define_gtype_functions (JSContextRef ctx)
+{
+ JSObjectRef proto;
+
+ objectclass_info = g_irepository_find_by_name (NULL,
+ "GObject", "ObjectClass");
+
+ proto = seed_struct_prototype (ctx, objectclass_info);
+/*
+ // paramspec is remove in newer versions of introspeciton - removing
+ // until we can work out how to replace this.
+ paramspec_info = g_irepository_find_by_name (NULL, "GObject", "ParamSpec");
+ proto = seed_struct_prototype (ctx, paramspec_info);
+*/
+ seed_create_function (ctx, "get", &seed_param_getter_invoked, proto);
+ seed_create_function (ctx, "set", &seed_param_setter_invoked, proto);
+}
+
+void
+seed_gtype_init (SeedEngine * local_eng)
+{
+ JSClassDefinition gtype_def = kJSClassDefinitionEmpty;
+
+ gtype_def.callAsConstructor = seed_gtype_constructor_invoked;
+ seed_gtype_class = JSClassCreate (&gtype_def);
+ JSClassRetain (seed_gtype_class);
+
+ seed_gtype_constructor =
+ JSObjectMake (local_eng->context, seed_gtype_class, 0);
+
+ seed_object_set_property (local_eng->context,
+ local_eng->global, "GType",
+ seed_gtype_constructor);
+
+ qiinit = g_quark_from_static_string("js-instance-init");
+
+ seed_define_gtype_functions (local_eng->context);
+}
diff --git a/libseed/seed-gtype.h b/libseed/seed-gtype.h
new file mode 100644
index 0000000..b16fc58
--- /dev/null
+++ b/libseed/seed-gtype.h
@@ -0,0 +1,29 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_GTYPE_H
+#define _SEED_GTYPE_H
+
+#include "seed-private.h"
+
+void seed_gtype_init (SeedEngine * eng);
+
+extern JSObjectRef seed_gtype_constructor;
+
+#endif
diff --git a/libseed/seed-importer.c b/libseed/seed-importer.c
new file mode 100644
index 0000000..a69bf8e
--- /dev/null
+++ b/libseed/seed-importer.c
@@ -0,0 +1,1068 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <gio/gio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "seed-private.h"
+
+JSClassRef importer_class;
+JSObjectRef importer;
+
+JSClassRef gi_importer_class;
+JSObjectRef gi_importer;
+JSObjectRef gi_importer_versions;
+
+JSObjectRef importer_search_path;
+
+JSClassRef importer_dir_class;
+
+GHashTable *gi_imports;
+GHashTable *file_imports;
+
+/*
+ * Some high level documentation of the importer object.
+ * > imports
+ * - An imports object is declared at the top level of every context
+ * > gi
+ * - The imports object has a special property named gi
+ * - gi.NameSpace represents the namespace object for a specific
+ * girepository namespace.
+ * - The first attempt to access gi.Foo creates the object, all
+ * subsequent attempts access the SAME object.
+ * > versions
+ * - the gi.versions object can be used to set versions of gi imports
+ * - gi.versions.NameSpace being set to "0.8" will cause NameSpace to
+ * require 0.8
+ * > searchPath
+ * - Should be an array, containing a list of paths to be searched for
+ * importing javascript files and native modules.
+ * - Default is set in Seed.js
+ * - If set to an invalid value, this will not become evident until the
+ * next time the imports object is used, at which point it will throw an
+ * exception
+ * > Accessing any other property (call it prop) will proceed as follows
+ * - Look in the search path for a file prop.*
+ * - If we find a file prop.*, see if it is a regular file or directory
+ * - If it is a directory, return a directory object that behaves as does
+ * the toplevel imports object, with the searchPath being exclusively
+ * that directory
+ * - If it is a file and ends in G_MODULE_SUFFIX, attempt to load it as a
+ * native module and return the module object.
+ * - If it is a file and does not end in G_MODULE_SUFFIX, evaluate it as a
+ * JavaScript file in a NEW global context, and return the global object
+ * for that context.
+ */
+
+/*
+* Handle definition of toplevel functions in a namespace.
+* i.e. Gtk.main
+*/
+
+static gboolean
+seed_gi_importer_is_init (GIFunctionInfo * info)
+{
+ if (g_strcmp0 (g_base_info_get_name ((GIBaseInfo *) info), "init"))
+ {
+ return FALSE;
+ }
+ if (g_callable_info_get_n_args ((GICallableInfo *) info) != 2)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void
+seed_gi_importer_handle_function (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIFunctionInfo * info,
+ JSValueRef * exception)
+{
+ if (!seed_gi_importer_is_init (info))
+ seed_gobject_define_property_from_function_info (ctx,
+ (GIFunctionInfo *) info,
+ namespace_ref, FALSE);
+ else
+ {
+ JSObjectRef init_method;
+
+ init_method = JSObjectMake (ctx, gobject_init_method_class,
+ g_base_info_ref ((GIBaseInfo *) info));
+ seed_object_set_property (ctx, namespace_ref, "init", init_method);
+ }
+}
+
+/*
+ * Handle definition of enums in a namespace.
+ * Each enum class gets an object containing
+ * a value for each member, all in uppercase
+ * i.e. Gtk.WindowType.NORMAL
+ */
+static void
+seed_gi_importer_handle_enum (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIEnumInfo * info, JSValueRef * exception)
+{
+ JSObjectRef enum_class;
+ guint num_vals, i, j;
+ gsize name_len;
+ gint value; // TODO: investigate what's up with the glong/gint mystery here
+ gchar *name;
+ GIValueInfo *val;
+
+ enum_class = JSObjectMake (ctx, 0, 0);
+ num_vals = g_enum_info_get_n_values (info);
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ enum_class);
+
+ for (i = 0; i < num_vals; i++)
+ {
+ val = g_enum_info_get_value ((GIEnumInfo *) info, i);
+ value = g_value_info_get_value (val);
+ name = g_strdup (g_base_info_get_name ((GIBaseInfo *) val));
+ name_len = strlen (name);
+ JSValueRef value_ref;
+
+ value_ref = JSValueMakeNumber (ctx, value);
+ JSValueProtect (ctx, (JSValueRef) value_ref);
+
+ for (j = 0; j < name_len; j++)
+ {
+ if (name[j] == '-')
+ name[j] = '_';
+ name[j] = g_ascii_toupper (name[j]);
+ }
+
+ seed_object_set_property (ctx, enum_class, name, value_ref);
+
+ g_free (name);
+ g_base_info_unref ((GIBaseInfo *) val);
+
+ }
+}
+
+/*
+ * Handle setting up the prototype and constructor for a GObject type
+ * Namespace.Type will be the constructor and Namespace.Type.prototype is
+ * the prototype object. Namespace.Type.type will be the GType.
+ */
+static void
+seed_gi_importer_handle_object (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIObjectInfo * info, JSValueRef * exception)
+{
+ GType type;
+ JSClassRef class_ref;
+
+ type = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *) info);
+
+ if (type != 0)
+ {
+ GIFunctionInfo *finfo;
+ GIFunctionInfoFlags flags;
+ JSObjectRef constructor_ref;
+ guint i, n_methods;
+
+ class_ref = seed_gobject_get_class_for_gtype (ctx, type);
+
+ constructor_ref =
+ JSObjectMake (ctx, gobject_constructor_class, (gpointer) type);
+
+ seed_object_set_property (ctx, constructor_ref,
+ "type",
+ seed_value_from_long (ctx, type, exception));
+ n_methods = g_object_info_get_n_methods (info);
+ for (i = 0; i < n_methods; i++)
+ {
+ finfo = g_object_info_get_method (info, i);
+ flags = g_function_info_get_flags (finfo);
+ if (flags & GI_FUNCTION_IS_CONSTRUCTOR)
+ {
+ JSObjectRef constructor = JSObjectMake (ctx,
+ gobject_named_constructor_class,
+ finfo);
+ const gchar *fname =
+ g_base_info_get_name ((GIBaseInfo *) finfo);
+ if (g_strrstr (fname, "new_") == fname)
+ fname += 4;
+ else if (!g_strcmp0 (fname, "new"))
+ fname = "c_new";
+
+ seed_object_set_property (ctx,
+ constructor_ref, fname, constructor);
+ }
+ else if (!(flags & GI_FUNCTION_IS_METHOD))
+ {
+ seed_gobject_define_property_from_function_info
+ (ctx, finfo, constructor_ref, FALSE);
+ }
+ else
+ {
+ g_base_info_unref ((GIBaseInfo *) finfo);
+ }
+ }
+
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ constructor_ref);
+ seed_object_set_property (ctx, constructor_ref,
+ "prototype",
+ seed_gobject_get_prototype_for_gtype (type));
+ }
+}
+
+/*
+ * Set up prototype and constructor for structs. Same semantics as objects except
+ * for the type.
+ */
+static void
+seed_gi_importer_handle_struct (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIStructInfo * info, JSValueRef * exception)
+{
+ JSObjectRef struct_ref;
+ JSObjectRef proto;
+ gint i, n_methods;
+ GIFunctionInfo *finfo;
+
+ struct_ref = JSObjectMake (ctx, seed_struct_constructor_class, info);
+ g_base_info_ref (info);
+
+ n_methods = g_struct_info_get_n_methods (info);
+
+ for (i = 0; i < n_methods; i++)
+ {
+ GIFunctionInfoFlags flags;
+ finfo = g_struct_info_get_method (info, i);
+
+ flags = g_function_info_get_flags (finfo);
+
+ if (flags & GI_FUNCTION_IS_CONSTRUCTOR)
+ {
+ JSObjectRef constructor = JSObjectMake (ctx,
+ gobject_named_constructor_class,
+ finfo);
+ const gchar *fname = g_base_info_get_name ((GIBaseInfo *) finfo);
+ if (g_str_has_prefix (fname, "new_"))
+ fname += 4;
+ else if (!g_strcmp0 (fname, "new"))
+ fname = "c_new";
+
+ seed_object_set_property (ctx, struct_ref, fname, constructor);
+ }
+ else if (flags & GI_FUNCTION_IS_METHOD)
+ g_base_info_unref ((GIBaseInfo *) finfo);
+ else
+ seed_gobject_define_property_from_function_info
+ (ctx, finfo, struct_ref, FALSE);
+ }
+
+ proto = seed_struct_prototype (ctx, (GIBaseInfo *) info);
+ seed_object_set_property (ctx, struct_ref, "prototype", proto);
+
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ struct_ref);
+}
+
+static void
+seed_gi_importer_handle_union (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIUnionInfo * info, JSValueRef * exception)
+{
+ JSObjectRef union_ref;
+ JSObjectRef proto;
+ guint i, n_methods;
+ GIFunctionInfo *finfo;
+
+ union_ref = JSObjectMake (ctx, seed_struct_constructor_class, info);
+ g_base_info_ref (info);
+
+ n_methods = g_union_info_get_n_methods (info);
+
+ for (i = 0; i < n_methods; i++)
+ {
+ GIFunctionInfoFlags flags;
+ finfo = g_union_info_get_method (info, i);
+
+ flags = g_function_info_get_flags (finfo);
+
+ if (flags & GI_FUNCTION_IS_METHOD)
+ g_base_info_unref ((GIBaseInfo *) finfo);
+ else
+ seed_gobject_define_property_from_function_info
+ (ctx, finfo, union_ref, FALSE);
+ }
+
+ proto = seed_union_prototype (ctx, (GIBaseInfo *) info);
+ seed_object_set_property (ctx, union_ref, "prototype", proto);
+
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ union_ref);
+}
+
+static void
+seed_gi_importer_handle_callback (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GICallbackInfo * info,
+ JSValueRef * exception)
+{
+ JSObjectRef callback_ref = JSObjectMake (ctx,
+ seed_callback_class,
+ info);
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ (JSValueRef) callback_ref);
+}
+
+/*
+ * Define constants toplevel. Uses the casing as in the typelib
+ */
+static void
+seed_gi_importer_handle_constant (JSContextRef ctx,
+ JSObjectRef namespace_ref,
+ GIConstantInfo * info,
+ JSValueRef * exception)
+{
+ GArgument argument;
+ GITypeInfo *constant_type = g_constant_info_get_type (info);
+ JSValueRef constant_value;
+
+ g_constant_info_get_value (info, &argument);
+ constant_value =
+ seed_value_from_gi_argument (ctx, &argument, constant_type, exception);
+ seed_object_set_property (ctx, namespace_ref,
+ g_base_info_get_name ((GIBaseInfo *) info),
+ constant_value);
+
+ g_base_info_unref ((GIBaseInfo *) constant_type);
+}
+
+static gchar *
+seed_gi_importer_get_version (JSContextRef ctx,
+ gchar * namespace, JSValueRef * exception)
+{
+ JSValueRef version_ref;
+ gchar *version = NULL;
+
+ version_ref =
+ seed_object_get_property (ctx, gi_importer_versions, namespace);
+ if (!JSValueIsUndefined (ctx, version_ref))
+ version = seed_value_to_string (ctx, version_ref, exception);
+
+ return version;
+}
+
+JSObjectRef
+seed_gi_importer_do_namespace (JSContextRef ctx,
+ gchar * namespace, JSValueRef * exception)
+{
+ GIBaseInfo *info;
+ JSObjectRef namespace_ref;
+ GError *e = NULL;
+ guint n, i;
+ gchar *version = NULL;
+ gchar *jsextension;
+ JSStringRef extension_script;
+
+ if (gi_imports == NULL)
+ gi_imports = g_hash_table_new (g_str_hash, g_str_equal);
+
+ if ((namespace_ref = g_hash_table_lookup (gi_imports, namespace)))
+ {
+ SEED_NOTE (IMPORTER, "Using existing namespace ref (%p) for %s",
+ namespace_ref, namespace);
+ return namespace_ref;
+ }
+
+ if (gi_importer_versions != NULL)
+ version = seed_gi_importer_get_version (ctx, namespace, exception);
+ if (!g_irepository_require (NULL, namespace, version, 0, &e))
+ {
+ seed_make_exception_from_gerror (ctx, exception, e);
+ g_error_free (e);
+ g_free (version);
+ return NULL;
+ }
+ if (version != NULL)
+ g_free (version);
+
+ n = g_irepository_get_n_infos (NULL, namespace);
+
+ namespace_ref = JSObjectMake (ctx, NULL, NULL);
+ SEED_NOTE (IMPORTER, "Constructing namespace ref (%p) for %s",
+ namespace_ref, namespace);
+
+ JSValueProtect (ctx, namespace_ref);
+
+ for (i = 0; i < n; i++)
+ {
+ GIInfoType info_type;
+
+ info = g_irepository_get_info (NULL, namespace, i);
+ info_type = g_base_info_get_type (info);
+
+ switch (info_type)
+ {
+ case GI_INFO_TYPE_FUNCTION:
+ seed_gi_importer_handle_function (ctx, namespace_ref,
+ (GIFunctionInfo *) info,
+ exception);
+ break;
+ case GI_INFO_TYPE_ENUM:
+ case GI_INFO_TYPE_FLAGS:
+ seed_gi_importer_handle_enum (ctx, namespace_ref,
+ (GIEnumInfo *) info, exception);
+ break;
+ case GI_INFO_TYPE_OBJECT:
+ seed_gi_importer_handle_object (ctx, namespace_ref,
+ (GIObjectInfo *) info, exception);
+ break;
+ case GI_INFO_TYPE_STRUCT:
+ seed_gi_importer_handle_struct (ctx, namespace_ref,
+ (GIStructInfo *) info, exception);
+ break;
+ case GI_INFO_TYPE_UNION:
+ seed_gi_importer_handle_union (ctx, namespace_ref,
+ (GIUnionInfo *) info, exception);
+ break;
+ case GI_INFO_TYPE_CALLBACK:
+ seed_gi_importer_handle_callback (ctx, namespace_ref,
+ (GICallbackInfo *) info,
+ exception);
+ break;
+ case GI_INFO_TYPE_CONSTANT:
+ seed_gi_importer_handle_constant (ctx, namespace_ref,
+ (GIConstantInfo *) info,
+ exception);
+ break;
+ default:
+ break;
+ }
+ g_base_info_unref (info);
+ }
+
+ g_hash_table_insert (gi_imports, g_strdup (namespace), namespace_ref);
+
+ jsextension = g_strdup_printf ("imports.extensions.%s", namespace);
+ extension_script = JSStringCreateWithUTF8CString (jsextension);
+ JSEvaluateScript (ctx, extension_script, NULL, NULL, 0, exception);
+ JSStringRelease (extension_script);
+ g_free (jsextension);
+
+
+ return namespace_ref;
+
+}
+
+static JSValueRef
+seed_gi_importer_get_property (JSContextRef ctx,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef * exception)
+{
+ JSObjectRef ret;
+ guint len;
+ gchar *prop;
+
+ len = JSStringGetMaximumUTF8CStringSize (property_name);
+ prop = g_alloca (len * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, prop, len);
+
+ SEED_NOTE (IMPORTER, "seed_gi_importer_get_property with %s", prop);
+
+ if (!g_strcmp0 (prop, "versions"))
+ return gi_importer_versions;
+ // Nasty hack
+ else if (!g_strcmp0 (prop, "toString"))
+ return 0;
+ if (!g_strcmp0 (prop, "valueOf")) // HACK
+ return NULL;
+
+
+ ret = seed_gi_importer_do_namespace (ctx, prop, exception);
+ SEED_NOTE (IMPORTER, "Result (%p) from attempting to import %s: %s",
+ ret, prop, seed_value_to_string (ctx, ret, exception));
+
+ return ret;
+}
+
+static JSObjectRef
+seed_make_importer_dir (JSContextRef ctx, gchar * path)
+{
+ gchar *init;
+ JSObjectRef dir;
+
+ dir = JSObjectMake (ctx, importer_dir_class, path);
+
+ init = g_build_filename (path, "__init__.js", NULL);
+ if (g_file_test (init, G_FILE_TEST_IS_REGULAR))
+ {
+ SeedScript *s;
+ SEED_NOTE (IMPORTER, "Found __init__.js (%s)", path);
+
+ s = seed_script_new_from_file (ctx, init);
+ seed_evaluate (ctx, s, dir);
+ seed_script_destroy (s);
+ }
+
+ g_free (init);
+ return dir;
+}
+
+static void
+seed_importer_free_search_path (GSList * path)
+{
+ GSList *walk = path;
+
+ while (walk)
+ {
+ g_free (walk->data);
+ walk = walk->next;
+ }
+
+ g_slist_free (path);
+}
+
+
+GSList *
+seed_importer_get_search_path (JSContextRef ctx, JSValueRef * exception)
+{
+ GSList *path = NULL;
+ gchar *entry;
+ JSValueRef search_path_ref, length_ref;
+ guint length, i;
+
+ search_path_ref = seed_object_get_property (ctx, importer, "searchPath");
+ if (!JSValueIsObject (ctx, search_path_ref))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Importer searchPath object is not an array");
+ return NULL;
+ }
+
+ length_ref =
+ seed_object_get_property (ctx, (JSObjectRef) search_path_ref, "length");
+ length = seed_value_to_uint (ctx, length_ref, exception);
+
+ for (i = 0; i < length; i++)
+ {
+ JSValueRef entry_ref;
+
+ entry_ref =
+ JSObjectGetPropertyAtIndex (ctx, (JSObjectRef) search_path_ref, i,
+ exception);
+ entry = seed_value_to_string (ctx, entry_ref, exception);
+
+ if (g_file_test (entry, G_FILE_TEST_EXISTS) == TRUE)
+ path = g_slist_append (path, entry);
+ }
+
+ return path;
+}
+
+/* forward reference */
+static JSObjectRef
+seed_importer_handle_file (JSContextRef ctx,
+ const gchar * dir,
+ const gchar * file,
+ JSValueRef * exception);
+
+
+
+static JSObjectRef
+seed_importer_handle_native_module (JSContextRef ctx,
+ const gchar * dir,
+ const gchar * prop,
+ JSValueRef * exception)
+{
+ GModule *module;
+ JSObjectRef module_obj;
+ SeedModuleInitCallback init;
+ gchar *file_path = g_strconcat (dir, "/libseed_", prop, ".", G_MODULE_SUFFIX, NULL);
+
+ SEED_NOTE (IMPORTER, "Trying native module: %s", file_path);
+
+ if ((module_obj = g_hash_table_lookup (file_imports, file_path)))
+ {
+ SEED_NOTE (IMPORTER, "Using existing global");
+ g_free (file_path);
+ return module_obj;
+ }
+
+ module = g_module_open (file_path, 0);
+
+ if (!module)
+ {
+ // Could be a better exception
+ seed_make_exception (ctx, exception, "ModuleError",
+ "Error loading native module at %s: %s",
+ file_path, g_module_error ());
+ g_free (file_path);
+
+ return NULL;
+ }
+ g_module_symbol (module, "seed_module_init", (gpointer *) & init);
+ module_obj = (*init) (eng);
+ g_hash_table_insert (file_imports, file_path, module_obj);
+ SEED_NOTE (IMPORTER, "Loaded native module");
+
+ //protect module_obj since the GC won't find the module in our file_imports cache
+ JSValueProtect (ctx, module_obj);
+
+ file_path = g_strconcat ("libseed_", prop, ".js", NULL);
+ seed_importer_handle_file (ctx, dir, file_path, exception);
+ g_free (file_path);
+
+ return module_obj;
+}
+
+static gchar *
+seed_importer_canonicalize_path (gchar * path)
+{
+ GFile *file;
+ gchar *absolute_path;
+
+ file = g_file_new_for_path (path);
+ absolute_path = g_file_get_path (file);
+ g_object_unref (file);
+
+ return absolute_path;
+}
+
+static JSObjectRef
+seed_importer_handle_file (JSContextRef ctx,
+ const gchar * dir,
+ const gchar * file, JSValueRef * exception)
+{
+ JSContextRef nctx;
+ JSValueRef js_file_dirname;
+ JSObjectRef global, c_global;
+ JSStringRef file_contents, file_name;
+ gchar *contents, *walk, *file_path, *canonical, *absolute_path, *normalp;
+ gchar *normalized_path;
+ gsize path_max;
+
+ file_path = g_build_filename (dir, file, NULL);
+ canonical = seed_importer_canonicalize_path (file_path);
+ SEED_NOTE (IMPORTER, "Trying to import file: %s", file_path);
+
+ if ((global = g_hash_table_lookup (file_imports, canonical)))
+ {
+ SEED_NOTE (IMPORTER, "Using existing global");
+
+ g_free (file_path);
+ g_free (canonical);
+ return global;
+ }
+
+ if (!g_file_test (file_path, G_FILE_TEST_IS_REGULAR))
+ {
+ if (g_file_test (file_path, G_FILE_TEST_IS_DIR))
+ {
+ SEED_NOTE (IMPORTER, "File is directory");
+ return seed_make_importer_dir (ctx, file_path);
+ }
+ return NULL;
+ }
+
+ g_file_get_contents (file_path, &contents, 0, NULL);
+ walk = contents;
+ if (*walk == '#')
+ {
+ while (*walk != '\n')
+ walk++;
+ walk++;
+ }
+ walk = g_strdup (walk);
+ g_free (contents);
+
+ file_contents = JSStringCreateWithUTF8CString (walk);
+ file_name = JSStringCreateWithUTF8CString (canonical);
+
+ nctx = JSGlobalContextCreateInGroup (context_group, 0);
+ seed_prepare_global_context (nctx);
+
+ global = JSContextGetGlobalObject (nctx);
+ c_global = JSContextGetGlobalObject (ctx);
+ JSValueProtect (eng->context, global);
+
+ absolute_path = g_path_get_dirname (file_path);
+ if (!g_path_is_absolute (absolute_path))
+ {
+ g_free (absolute_path);
+ absolute_path = g_build_filename (g_get_current_dir (),
+ g_path_get_dirname (file_path), NULL);
+ }
+
+#ifdef PATH_MAX
+ path_max = PATH_MAX;
+#else
+ path_max = pathconf (absolute_path, _PC_PATH_MAX);
+ if (path_max <= 0)
+ path_max = 4096;
+#endif
+ normalized_path = (gchar *) g_malloc (path_max);
+ normalp = realpath (absolute_path, normalized_path);
+
+ js_file_dirname = seed_value_from_string (ctx, normalp, NULL);
+
+ seed_object_set_property (nctx, global, "__script_path__", js_file_dirname);
+
+ g_hash_table_insert (file_imports, canonical, global);
+ g_free (file_path);
+ g_free (absolute_path);
+ g_free (normalized_path);
+
+ JSEvaluateScript (nctx, file_contents, NULL, file_name, 0, exception);
+
+ // Does leak...but it's a debug statement.
+ SEED_NOTE (IMPORTER, "Evaluated file, exception: %s",
+ *exception ? seed_exception_to_string (ctx,
+ *exception) : "(null)");
+
+ JSGlobalContextRelease ((JSGlobalContextRef) nctx);
+
+ JSStringRelease (file_contents);
+ JSStringRelease (file_name);
+ g_free (walk);
+
+ return global;
+}
+
+static JSObjectRef
+seed_importer_search_dirs (JSContextRef ctx, GSList *path, gchar *prop, JSValueRef *exception)
+{
+ GSList *walk;
+ JSObjectRef ret, global;
+ JSValueRef script_path_prop;
+ gchar *prop_as_lib, *prop_as_js, *script_path;
+
+ prop_as_lib = g_strconcat ("libseed_", prop, ".", G_MODULE_SUFFIX, NULL);
+ prop_as_js = g_strconcat (prop, ".js", NULL);
+
+ // get the current script_path
+ global = JSContextGetGlobalObject (ctx);
+ script_path_prop = seed_object_get_property (ctx, global, "__script_path__");
+ if (script_path_prop==NULL || JSValueIsUndefined (ctx, script_path_prop))
+ script_path = NULL;
+ else
+ script_path = seed_value_to_string (ctx, script_path_prop, exception);
+
+ ret = NULL;
+ walk = path;
+ while (walk) {
+ gchar *test_path = walk->data;
+ gchar *file_path;
+
+ // replace '.' with current script_path if not null
+ if(script_path && !g_strcmp0(".",test_path))
+ test_path = script_path;
+
+ // check if prop is a file or dir (imports['foo.js'] or imports.mydir)
+ file_path = g_build_filename (test_path, prop, NULL);
+ if (g_file_test (file_path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_DIR)) {
+ ret = seed_importer_handle_file (ctx, test_path, prop, exception);
+ g_free (file_path);
+ break;
+ }
+ g_free (file_path);
+
+ // check if prop is file ending with '.js'
+ file_path = g_build_filename (test_path, prop_as_js, NULL);
+ if (g_file_test (file_path, G_FILE_TEST_IS_REGULAR)) {
+ ret = seed_importer_handle_file (ctx, test_path, prop_as_js, exception);
+ g_free (file_path);
+ break;
+ }
+ g_free (file_path);
+
+ // check if file is native module
+ file_path = g_build_filename (test_path, prop_as_lib, NULL);
+ if (g_file_test (file_path, G_FILE_TEST_IS_REGULAR)) {
+ ret = seed_importer_handle_native_module (ctx, test_path, prop, exception);
+ g_free (file_path);
+ break;
+ }
+ g_free (file_path);
+
+ walk = walk->next;
+ }
+
+ g_free (prop_as_lib);
+ g_free (prop_as_js);
+ g_free (script_path);
+
+ return ret;
+}
+
+static JSObjectRef
+seed_importer_search (JSContextRef ctx, gchar *prop, JSValueRef *exception)
+{
+ JSObjectRef ret = NULL;
+ GSList *path = seed_importer_get_search_path (ctx, exception);
+ ret = seed_importer_search_dirs (ctx, path, prop, exception);
+ seed_importer_free_search_path (path);
+ return ret;
+}
+
+static JSValueRef
+seed_importer_get_property (JSContextRef ctx,
+ JSObjectRef object,
+ JSStringRef property_name, JSValueRef * exception)
+{
+ JSValueRef ret;
+ guint len;
+ gchar *prop;
+
+ len = JSStringGetMaximumUTF8CStringSize (property_name);
+ prop = g_alloca (len * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, prop, len);
+
+ if (!g_strcmp0 (prop, "gi"))
+ return gi_importer;
+ if (!g_strcmp0 (prop, "searchPath"))
+ return NULL;
+ if (!g_strcmp0 (prop, "toString")) // HACK
+ return NULL;
+
+ ret = seed_importer_search (ctx, prop, exception);
+
+ return ret;
+}
+
+static JSValueRef
+seed_importer_dir_get_property (JSContextRef ctx,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef * exception)
+{
+ guint len;
+ gchar *prop;
+ GSList path;
+
+ path.data = JSObjectGetPrivate (object);
+ path.next = NULL;
+
+ len = JSStringGetMaximumUTF8CStringSize (property_name);
+ prop = g_alloca (len * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, prop, len);
+
+ /* These prevent print(imports.somefile) running "somefile/toString.js"
+ Which is more than a little unexpected.. */
+
+ if (!g_strcmp0 (prop, "toString"))
+ return NULL;
+ if (!g_strcmp0 (prop, "valueOf"))
+ return NULL;
+
+ return seed_importer_search_dirs(ctx, &path, prop, exception);
+}
+
+static void
+seed_importer_dir_finalize (JSObjectRef dir)
+{
+ gchar *dir_path = (gchar *) JSObjectGetPrivate (dir);
+ g_free (dir_path);
+}
+
+void
+seed_importer_add_global (JSObjectRef global, gchar * name)
+{
+ JSValueProtect (eng->context, global);
+ g_hash_table_insert (file_imports, seed_importer_canonicalize_path (name),
+ global);
+}
+
+static void
+seed_importer_dir_enumerate_properties (JSContextRef ctx,
+ JSObjectRef object,
+ JSPropertyNameAccumulatorRef
+ propertyNames)
+{
+ const gchar *entry;
+ GDir *dir;
+ GError *e = NULL;
+ gchar *path = JSObjectGetPrivate (object);
+
+
+ dir = g_dir_open (path, 0, &e);
+ if (e)
+ {
+ SEED_NOTE (IMPORTER,
+ "Error in g_dir_open in seed_importer_enumerate_dir_properties: %s",
+ e->message);
+ g_error_free (e);
+ // Not much we can do here.
+ return;
+ }
+
+ while ((entry = g_dir_read_name (dir)))
+ {
+ JSStringRef jname;
+
+ jname = JSStringCreateWithUTF8CString (entry);
+ JSPropertyNameAccumulatorAddName (propertyNames, jname);
+ JSStringRelease (jname);
+ }
+ g_dir_close (dir);
+}
+
+JSObjectRef
+seed_importer_construct_dir (JSContextRef ctx,
+ JSObjectRef constructor,
+ gsize argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ gchar *path;
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Directory constructor expects 1 argument");
+ return (JSObjectRef) JSValueMakeUndefined (ctx);
+ }
+ path = seed_value_to_string (ctx, arguments[0], exception);
+
+ if (!g_file_test (path, G_FILE_TEST_IS_DIR))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Path (%s) is not a directory", path);
+ g_free (path);
+ return (JSObjectRef) JSValueMakeUndefined (ctx);
+ }
+
+ return seed_make_importer_dir (ctx, path);
+}
+
+void
+seed_importer_set_search_path (JSContextRef ctx, gchar ** search_path)
+{
+ JSObjectRef imports, array;
+ JSValueRef *array_elem;
+ guint length = g_strv_length (search_path), i;
+
+ array_elem = g_alloca (length * sizeof (array_elem));
+ imports =
+ (JSObjectRef) seed_object_get_property (ctx,
+ JSContextGetGlobalObject (ctx),
+ "imports");
+
+ for (i = 0; i < length; i++)
+ {
+ array_elem[i] = seed_value_from_string (ctx, search_path[i], NULL);
+ }
+
+ array = JSObjectMakeArray (ctx, length, array_elem, NULL);
+ seed_object_set_property (ctx, imports, "searchPath", array);
+
+}
+
+JSClassDefinition importer_class_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "importer", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL, /* Initialize */
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ seed_importer_get_property, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition gi_importer_class_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "gi_importer", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL, /* Initialize */
+ NULL, /* Finalize */
+ NULL, /* Has Property */
+ seed_gi_importer_get_property, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition importer_dir_class_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "importer_dir", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL, /* Initialize */
+ seed_importer_dir_finalize, /* Finalize */
+ NULL, /* Has Property */
+ seed_importer_dir_get_property, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ seed_importer_dir_enumerate_properties, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+void
+seed_initialize_importer (JSContextRef ctx, JSObjectRef global)
+{
+ JSObjectRef dir_constructor;
+
+ importer_class = JSClassCreate (&importer_class_def);
+ importer = JSObjectMake (ctx, importer_class, NULL);
+
+ gi_importer_class = JSClassCreate (&gi_importer_class_def);
+ gi_importer = JSObjectMake (ctx, gi_importer_class, NULL);
+ gi_importer_versions = JSObjectMake (ctx, NULL, NULL);
+
+ JSValueProtect (ctx, gi_importer);
+ JSValueProtect (ctx, gi_importer_versions);
+
+ importer_dir_class = JSClassCreate (&importer_dir_class_def);
+
+ gi_imports = g_hash_table_new (g_str_hash, g_str_equal);
+ file_imports = g_hash_table_new (g_str_hash, g_str_equal);
+
+ /* Passing nonnull for class requires a webkit fix that most people wont have yet. It also has minimal benefit */
+ // dir_constructor = JSObjectMakeConstructor (ctx, importer_dir_class, seed_importer_construct_dir);
+ dir_constructor =
+ JSObjectMakeConstructor (ctx, NULL, seed_importer_construct_dir);
+ seed_object_set_property (ctx, importer, "Directory", dir_constructor);
+
+ seed_object_set_property (ctx, global, "imports", importer);
+}
diff --git a/libseed/seed-importer.h b/libseed/seed-importer.h
new file mode 100644
index 0000000..8fb2e7a
--- /dev/null
+++ b/libseed/seed-importer.h
@@ -0,0 +1,31 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_IMPORTER_H
+#define _SEED_IMPORTER_H
+
+#include "seed-private.h"
+
+extern JSObjectRef importer;
+
+void seed_initialize_importer (JSContextRef ctx, JSObjectRef global);
+JSObjectRef seed_gi_importer_do_namespace (JSContextRef ctx,
+ gchar * namespace, JSValueRef * exception);
+
+#endif
diff --git a/libseed/seed-module.h b/libseed/seed-module.h
new file mode 100644
index 0000000..e8b7fd6
--- /dev/null
+++ b/libseed/seed-module.h
@@ -0,0 +1,92 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_MODULE_H_
+#define _SEED_MODULE_H_
+
+#include "../libseed/seed.h"
+
+// TODO: Move [example sqlite canvas Multiprocessing
+// os sandbox dbus libxml cairo]
+// towards utilization of this header.
+
+/**
+ * CHECK_ARG_COUNT:
+ * @name: The name of the function being called from, pretty-printed
+ * @argnum: The number of arguments which should be passed into the function
+ *
+ * Check that the required number of arguments were passed into a
+ * #SeedFunctionCallback. If this is not true, raise an exception and
+ * return %NULL. This requires the callback to use "argument_count",
+ * "ctx", and "exception" as the names of the various function arguments.
+ *
+ * @name should be of form "namespace.function_name"
+ *
+ * At the moment, there is no way to specify more than one acceptable
+ * argument count.
+ *
+ */
+
+#define CHECK_ARG_COUNT(name, argnum) \
+ if ( argument_count != argnum ) \
+ { \
+ seed_make_exception (ctx, exception, "ArgumentError", \
+ "wrong number of arguments; expected %s, got %Zd", \
+ #argnum, argument_count); \
+ return seed_make_undefined (ctx); \
+ }
+
+/**
+ * DEFINE_ENUM_MEMBER:
+ * @holder: The object on which to define the enum member
+ * @member: The enum member, as it is named in C
+ *
+ * Defines a property on @holder which is named the same as @member, and
+ * is assigned the value that @member has in C.
+ *
+ * This macro works for defining properties from constants and
+ * &num;defines as well.
+ *
+ */
+#define DEFINE_ENUM_MEMBER(holder, member) \
+ seed_object_set_property(ctx, holder, #member, \
+ seed_value_from_long(ctx, member, NULL))
+
+/**
+ * DEFINE_ENUM_MEMBER_EXT:
+ * @holder: The object on which to define the enum member
+ * @name: The enum member, as it should be named in JavaScript
+ * @val: The enum member, as it is named in C
+ *
+ * Defines a property on @holder which is named @name, and is assigned the
+ * value that @member has in C. This allows for an override of the enum
+ * member's name, most often to remove a common prefix. For example, to declare
+ * a property named VERSION_MAJOR on the namespace from mfpr's version
+ * constant MPFR_VERSION_MAJOR:
+ *
+ * <programlisting>
+ * DEFINE_ENUM_MEMBER_EXT(ns, "VERSION_MAJOR", MPFR_VERSION_MAJOR);
+ * </programlisting>
+ *
+ */
+#define DEFINE_ENUM_MEMBER_EXT(holder, name, val) \
+ seed_object_set_property(ctx, holder, name, \
+ seed_value_from_long(ctx, val, NULL))
+
+#endif
diff --git a/libseed/seed-path.h b/libseed/seed-path.h
new file mode 100644
index 0000000..73bb65c
--- /dev/null
+++ b/libseed/seed-path.h
@@ -0,0 +1 @@
+#define SEED_PREFIX_PATH "/usr/local""/share/seed-gtk3/"
diff --git a/libseed/seed-path.h.in b/libseed/seed-path.h.in
new file mode 100644
index 0000000..ae7de72
--- /dev/null
+++ b/libseed/seed-path.h.in
@@ -0,0 +1 @@
+#define SEED_PREFIX_PATH "@prefix@""/share/seed@SEED_GTK_VERSION@/"
diff --git a/libseed/seed-private.h b/libseed/seed-private.h
new file mode 100644
index 0000000..c60ac38
--- /dev/null
+++ b/libseed/seed-private.h
@@ -0,0 +1,57 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_PRIVATE_H
+#define _SEED_PRIVATE_H
+
+#include <sys/types.h>
+#include <pthread.h>
+
+#include <stdlib.h>
+#include <JavaScriptCore/JavaScript.h>
+#include <glib.h>
+#include <glib-object.h>
+#include <gmodule.h>
+#include <girepository.h>
+#include <girffi.h>
+#include <ffi.h>
+
+typedef struct _SeedEngine SeedEngine;
+
+struct _SeedEngine
+{
+ JSGlobalContextRef context;
+ JSObjectRef global;
+ gchar **search_path;
+
+ JSContextGroupRef group;
+};
+
+#include "seed-debug.h"
+#include "seed-engine.h"
+#include "seed-types.h"
+#include "seed-signals.h"
+#include "seed-builtins.h"
+#include "seed-structs.h"
+#include "seed-closure.h"
+#include "seed-gtype.h"
+#include "seed-exceptions.h"
+#include "seed-importer.h"
+
+#endif
diff --git a/libseed/seed-signals.c b/libseed/seed-signals.c
new file mode 100644
index 0000000..52561d4
--- /dev/null
+++ b/libseed/seed-signals.c
@@ -0,0 +1,443 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+/* vim: set sw=2 ts=2 sts=2 et: */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+
+typedef struct _signal_privates
+{
+ GObject *object;
+ gchar *signal_name;
+} signal_privates;
+
+JSClassRef signal_holder_class;
+
+static void
+seed_signal_finalize (JSObjectRef object)
+{
+ signal_privates *sig_priv = JSObjectGetPrivate (object);
+
+ g_free (sig_priv->signal_name);
+ g_slice_free1 (sizeof (signal_privates), sig_priv);
+}
+
+
+gulong
+seed_gobject_signal_connect (JSContextRef ctx,
+ const gchar * signal_name,
+ GObject * on_obj,
+ JSObjectRef func,
+ JSObjectRef this_obj, JSObjectRef user_data)
+{
+ GSignalQuery query;
+ GClosure *closure;
+
+ if (g_str_has_prefix (signal_name, "notify::"))
+ g_signal_query (g_signal_lookup ("notify", G_OBJECT_TYPE (on_obj)),
+ &query);
+ else
+ g_signal_query (g_signal_lookup (signal_name, G_OBJECT_TYPE (on_obj)),
+ &query);
+
+#ifdef SEED_ENABLE_DEBUG
+ {
+ guint function_arity = seed_value_to_uint (ctx,
+ seed_object_get_property (ctx,
+ func,
+ "length"),
+ NULL);
+ if (function_arity != query.n_params)
+ {
+ SEED_MARK ();
+ SEED_NOTE (SIGNAL,
+ "Connecting signal: %s. Function has arity %d, signal expects %d",
+ query.signal_name, function_arity, query.n_params);
+ SEED_MARK ();
+ }
+ }
+#endif
+
+ closure = seed_closure_new (ctx, func, user_data, "signal handler");
+ // This seems wrong...
+ ((SeedClosure *) closure)->return_type = query.return_type;
+ return g_signal_connect_closure (on_obj, signal_name, closure, FALSE);
+}
+
+static JSValueRef
+seed_gobject_signal_connect_by_name (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ GType obj_type;
+ JSObjectRef user_data = NULL;
+ gchar *signal_name;
+ GObject *obj;
+ gulong id;
+
+ if (argumentCount < 2 || argumentCount > 3)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal connection expected"
+ " 2 or 3 arguments. Got " "%zd", argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+
+ if (JSValueIsNull (ctx, arguments[1]) ||
+ !JSValueIsObject (ctx, arguments[1]) ||
+ !JSObjectIsFunction (ctx, (JSObjectRef) arguments[1]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal connection by name "
+ "requires a function" " as second argument");
+ return JSValueMakeNull (ctx);
+ }
+
+ if (argumentCount == 3)
+ {
+ user_data = (JSObjectRef) arguments[2];
+ }
+
+ signal_name = seed_value_to_string (ctx, arguments[0], exception);
+ obj = (GObject *) JSObjectGetPrivate (thisObject);
+ obj_type = G_OBJECT_TYPE (obj);
+
+ id = seed_gobject_signal_connect (ctx, signal_name, obj,
+ (JSObjectRef) arguments[1], NULL,
+ user_data);
+
+ g_free (signal_name);
+
+ return seed_value_from_ulong (ctx, id, exception);
+}
+
+void
+seed_add_signals_to_object (JSContextRef ctx,
+ JSObjectRef object_ref, GObject * obj)
+{
+ GType type;
+ JSObjectRef signals_ref;
+
+ g_assert (obj);
+
+ type = G_OBJECT_TYPE (obj);
+
+ signals_ref = JSObjectMake (ctx, signal_holder_class, obj);
+
+ seed_object_set_property (ctx, object_ref, "signal", signals_ref);
+}
+
+void
+seed_signal_marshal_func (GClosure * closure,
+ GValue * return_value,
+ guint n_param_values,
+ const GValue * param_values,
+ gpointer invocation_hint, gpointer marshall_data)
+{
+ SeedClosure *seed_closure = (SeedClosure *) closure;
+ JSValueRef *args, exception = 0;
+ JSValueRef ret = 0;
+ guint i;
+ gchar *mes;
+
+ JSContextRef ctx = JSGlobalContextCreateInGroup (context_group,
+ 0);
+
+ seed_prepare_global_context (ctx);
+
+ args = g_newa (JSValueRef, n_param_values + 1);
+
+ for (i = 0; i < n_param_values; i++)
+ {
+ args[i] = seed_value_from_gvalue (ctx, (GValue *) & param_values[i], 0);
+
+ if (!args[i])
+ g_error ("Error in signal marshal. "
+ "Unable to convert argument of type: %s \n",
+ g_type_name (param_values[i].g_type));
+
+ }
+
+ if (seed_closure->user_data)
+ args[i] = seed_closure->user_data;
+ else
+ args[i] = JSValueMakeNull (ctx);
+
+ ret = JSObjectCallAsFunction (ctx, seed_closure->function,
+ NULL, n_param_values + 1, args, &exception);
+
+ if (exception)
+ {
+ seed_closure_warn_exception (closure, ctx, exception);
+ exception = NULL;
+ }
+
+ if (ret && !JSValueIsNull (ctx, ret)
+ && (seed_closure->return_type != G_TYPE_NONE))
+ {
+ seed_value_to_gvalue (ctx, ret, seed_closure->return_type,
+ return_value, &exception);
+ }
+
+ if (exception)
+ {
+ mes = seed_exception_to_string (ctx, exception);
+ g_warning ("Exception in signal handler return value. %s \n", mes);
+ g_free (mes);
+ }
+
+ JSGlobalContextRelease ((JSGlobalContextRef) ctx);
+
+}
+
+static JSValueRef
+seed_gobject_signal_emit (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ JSValueRef ret;
+ GValue *params;
+ GValue ret_value = { 0 };
+ GSignalQuery query;
+
+ signal_privates *privates;
+ guint i, signal_id;
+
+ privates = JSObjectGetPrivate (thisObject);
+
+ signal_id = g_signal_lookup (privates->signal_name,
+ G_OBJECT_TYPE (privates->object));
+
+ g_signal_query (signal_id, &query);
+
+ if (argumentCount != query.n_params)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal: %s for type %s expected %u "
+ "arguments, got %zd",
+ query.signal_name,
+ g_type_name (query.itype),
+ query.n_params, argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+
+ params = g_new0 (GValue, argumentCount + 1);
+
+ g_value_init (&params[0], G_TYPE_OBJECT);
+ g_value_set_object (&params[0], privates->object);
+ for (i = 0; i < argumentCount; i++)
+ seed_value_to_gvalue (ctx, arguments[i],
+ query.param_types[i],
+ &params[i + 1], exception);
+
+
+ if (query.return_type != G_TYPE_NONE)
+ g_value_init (&ret_value, query.return_type);
+ g_signal_emitv (params, signal_id, 0, &ret_value);
+
+ for (i = 0; i < argumentCount; i++)
+ g_value_unset (&params[i]);
+ g_free (params);
+
+ ret = seed_value_from_gvalue (ctx, &ret_value, exception);
+
+ if (query.return_type != G_TYPE_NONE)
+ g_value_unset (&ret_value);
+
+ return ret;
+}
+
+static JSValueRef
+seed_gobject_signal_disconnect (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ gulong id;
+ if (argumentCount != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal disconnection expects 1 argument"
+ " got %zd", argumentCount);
+ return JSValueMakeUndefined (ctx);
+ }
+ id = seed_value_to_ulong (ctx, arguments[0], exception);
+ g_signal_handler_disconnect (JSObjectGetPrivate (thisObject), id);
+
+ return JSValueMakeUndefined (ctx);
+}
+
+static JSValueRef
+seed_gobject_signal_connect_on_property (JSContextRef ctx,
+ JSObjectRef function,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef * exception)
+{
+ gulong id = 0;
+ JSObjectRef this_obj;
+ signal_privates *privates;
+
+ privates = (signal_privates *) JSObjectGetPrivate (thisObject);
+ if (!privates)
+ g_error ("Signal constructed with invalid parameters"
+ "in namespace import \n");
+
+ this_obj =
+ (JSObjectRef) seed_value_from_object (ctx, privates->object, exception);
+
+ if ((argumentCount > 2) || (argumentCount == 0))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal connection expected"
+ " 1, or 2 arguments. Got " "%zd", argumentCount);
+
+ return JSValueMakeNull (ctx);
+ }
+
+ if (JSValueIsNull (ctx, arguments[0]) ||
+ !JSValueIsObject (ctx, arguments[0]) ||
+ !JSObjectIsFunction (ctx, (JSObjectRef) arguments[0]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Signal connection requires a function"
+ " as first argument");
+ return JSValueMakeNull (ctx);
+ }
+
+ if (argumentCount == 1)
+ {
+ id = seed_gobject_signal_connect (ctx, privates->signal_name,
+ privates->object,
+ (JSObjectRef) arguments[0], this_obj,
+ NULL);
+
+ }
+ else if (argumentCount == 2)
+ {
+ id = seed_gobject_signal_connect (ctx, privates->signal_name,
+ privates->object,
+ (JSObjectRef) arguments[0],
+ this_obj, (JSObjectRef) arguments[1]);
+ }
+
+ return seed_value_from_ulong (ctx, id, exception);
+}
+
+JSStaticFunction signal_static_functions[] = {
+ {"connect", seed_gobject_signal_connect_on_property, 0}
+ ,
+ {"emit", seed_gobject_signal_emit, 0}
+ ,
+ {0, 0, 0}
+};
+
+JSStaticFunction signal_holder_static_functions[] = {
+ {"connect", seed_gobject_signal_connect_by_name, 0}
+ ,
+ {"disconnect", seed_gobject_signal_disconnect, 0}
+ ,
+ {0, 0, 0}
+};
+
+JSClassDefinition gobject_signal_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype,
+ "gobject_signal", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ signal_static_functions, /* Static Functions */
+ NULL,
+ seed_signal_finalize, /* Finalize */
+ NULL, /* Has Property */
+ NULL, /* Get Property */
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+static JSValueRef
+seed_signal_holder_get_property (JSContextRef ctx,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef * exception)
+{
+ GObject *gobj = JSObjectGetPrivate (object);
+ signal_privates *priv;
+ guint length = JSStringGetMaximumUTF8CStringSize (property_name);
+ gchar *signal_name = g_malloc (length * sizeof (gchar));
+ JSObjectRef signal_ref;
+
+ JSStringGetUTF8CString (property_name, signal_name, length);
+
+ if (!
+ (g_strcmp0 (signal_name, "connect")
+ && g_strcmp0 (signal_name, "disconnect")))
+ {
+ g_free (signal_name);
+ return NULL;
+ }
+
+ if (!g_str_has_prefix (signal_name, "notify::") &&
+ !g_signal_lookup (signal_name, G_OBJECT_TYPE (gobj)))
+ {
+ seed_make_exception (ctx, exception, "InvalidSignalName",
+ "Failed to connect to %s. "
+ "Invalid signal name.", signal_name);
+ g_free (signal_name);
+ return NULL;
+ }
+
+ priv = g_slice_alloc (sizeof (signal_privates));
+
+ priv->object = gobj;
+ priv->signal_name = signal_name;
+
+ signal_ref = JSObjectMake (ctx, gobject_signal_class, priv);
+
+ return signal_ref;
+}
+
+JSClassDefinition *
+seed_get_signal_class (void)
+{
+ JSClassDefinition signal_holder = kJSClassDefinitionEmpty;
+
+ signal_holder.className = "gobject_signals";
+ signal_holder.getProperty = seed_signal_holder_get_property;
+ signal_holder.staticFunctions = signal_holder_static_functions;
+ signal_holder_class = JSClassCreate (&signal_holder);
+ JSClassRetain (signal_holder_class);
+
+ return &gobject_signal_def;
+}
diff --git a/libseed/seed-signals.h b/libseed/seed-signals.h
new file mode 100644
index 0000000..ab7eaea
--- /dev/null
+++ b/libseed/seed-signals.h
@@ -0,0 +1,46 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_SIGNALS_H
+#define _SEED_SIGNALS_H
+
+#include "seed-private.h"
+
+void seed_signal_marshal_func (GClosure * closure,
+ GValue * return_value,
+ guint n_param_values,
+ const GValue * param_values,
+ gpointer invocation_hint,
+ gpointer marshall_data);
+
+void seed_add_signals_to_object (JSContextRef ctx,
+ JSObjectRef object_ref, GObject * obj);
+
+gulong seed_gobject_signal_connect (JSContextRef ctx,
+ const gchar * signal_name,
+ GObject * on_obj,
+ JSObjectRef func,
+ JSObjectRef this_obj,
+ JSObjectRef user_data);
+
+
+JSClassDefinition *seed_get_signal_class (void);
+extern JSClassRef gobject_signal_class;
+
+#endif
diff --git a/libseed/seed-structs.c b/libseed/seed-structs.c
new file mode 100644
index 0000000..793e754
--- /dev/null
+++ b/libseed/seed-structs.c
@@ -0,0 +1,805 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+JSClassRef seed_struct_class = 0;
+JSClassRef seed_union_class = 0;
+JSClassRef seed_pointer_class = 0;
+JSClassRef seed_boxed_class = 0;
+
+typedef struct _seed_struct_privates
+{
+ gpointer pointer;
+ GIBaseInfo *info;
+
+ gboolean free_pointer;
+ gboolean slice_alloc;
+ gsize size;
+} seed_struct_privates;
+
+GHashTable *struct_prototype_hash = NULL;
+GHashTable *union_prototype_hash = NULL;
+
+static void
+seed_pointer_finalize (JSObjectRef object)
+{
+ seed_struct_privates *priv =
+ (seed_struct_privates *) JSObjectGetPrivate (object);
+
+ SEED_NOTE (STRUCTS, "Finalizing seed_pointer object %p. with "
+ "priv->free_pointer = %d with type: %s, size: %zu",
+ priv->pointer,
+ priv->free_pointer,
+ priv->info ? g_base_info_get_name (priv->info) : "[generic]",
+ priv->size);
+
+ if (priv->free_pointer)
+ {
+ if (priv->slice_alloc)
+ g_slice_free1 (priv->size, priv->pointer);
+ else
+ g_free (priv->pointer);
+ }
+ if (priv->info)
+ g_base_info_unref (priv->info);
+
+ g_slice_free1 (sizeof (seed_struct_privates), priv);
+}
+
+static void
+seed_boxed_finalize (JSObjectRef object)
+{
+ seed_struct_privates *priv =
+ (seed_struct_privates *) JSObjectGetPrivate (object);
+ GType type;
+ GIRegisteredTypeInfo *info =
+ (GIRegisteredTypeInfo *) g_base_info_get_type (priv->info);
+
+ SEED_NOTE (STRUCTS, "Finalizing boxed object of type %s \n",
+ g_base_info_get_name (priv->info));
+
+ type = g_registered_type_info_get_g_type (info);
+ g_base_info_unref ((GIBaseInfo *) info);
+
+ g_boxed_free (type, priv->pointer);
+
+}
+
+GIFieldInfo *
+seed_union_find_field (GIUnionInfo * info, gchar * field_name)
+{
+ gint n, i;
+ GIFieldInfo *field;
+
+ n = g_union_info_get_n_fields (info);
+ for (i = 0; i < n; i++)
+ {
+ const gchar *name;
+
+ field = g_union_info_get_field (info, i);
+ name = g_base_info_get_name ((GIBaseInfo *) field);
+ if (!g_strcmp0 (name, field_name))
+ return field;
+ else
+ g_base_info_unref ((GIBaseInfo *) field);
+ }
+
+ return NULL;
+}
+
+GIFieldInfo *
+seed_struct_find_field (GIStructInfo * info, gchar * field_name)
+{
+ gint n, i;
+ const gchar *name;
+ GIFieldInfo *field;
+
+ n = g_struct_info_get_n_fields (info);
+ for (i = 0; i < n; i++)
+ {
+
+ field = g_struct_info_get_field (info, i);
+ name = g_base_info_get_name ((GIBaseInfo *) field);
+ if (!g_strcmp0 (name, field_name))
+ return field;
+ else
+ g_base_info_unref ((GIBaseInfo *) field);
+ }
+
+ return NULL;
+}
+
+JSValueRef
+seed_field_get_value (JSContextRef ctx,
+ gpointer object,
+ GIFieldInfo * field, JSValueRef * exception)
+{
+ GITypeInfo *field_type;
+ GIBaseInfo *interface;
+ GArgument field_value;
+ JSValueRef ret = JSValueMakeNull (ctx);
+ gint offset;
+
+ field_type = g_field_info_get_type (field);
+ if (!g_field_info_get_field (field, object, &field_value))
+ {
+ GITypeTag tag;
+
+ tag = g_type_info_get_tag (field_type);
+ if (tag == GI_TYPE_TAG_INTERFACE)
+ {
+ interface = g_type_info_get_interface (field_type);
+ offset = g_field_info_get_offset (field);
+
+ g_base_info_unref ((GIBaseInfo *) field_type);
+ switch (g_base_info_get_type (interface))
+ {
+ case GI_INFO_TYPE_STRUCT:
+ ret = seed_make_struct (ctx, (object + offset), interface);
+ break;
+ case GI_INFO_TYPE_UNION:
+ ret = seed_make_union (ctx, (object + offset), interface);
+ break;
+ case GI_INFO_TYPE_BOXED:
+ ret = seed_make_boxed (ctx, (object + offset), interface);
+ break;
+ default:
+ break;
+ }
+ g_base_info_unref (interface);
+
+ return ret;
+ }
+
+ return JSValueMakeNull (ctx);
+ }
+
+ // Maybe need to release argument.
+ ret = seed_value_from_gi_argument (ctx, &field_value, field_type, exception);
+ if (field_type)
+ g_base_info_unref ((GIBaseInfo *) field_type);
+ return ret;
+}
+
+static JSValueRef
+seed_union_get_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name, JSValueRef * exception)
+{
+ gchar *cproperty_name;
+ gsize length;
+ seed_struct_privates *priv = JSObjectGetPrivate (object);
+ GIFieldInfo *field = 0;
+ JSValueRef ret;
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ SEED_NOTE (STRUCTS, "Getting property on union of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (priv->info), cproperty_name);
+
+ field = seed_union_find_field ((GIUnionInfo *) priv->info, cproperty_name);
+ if (!field)
+ {
+ return 0;
+ }
+
+ ret = seed_field_get_value (context, priv->pointer, field, exception);
+
+ g_base_info_unref ((GIBaseInfo *) field);
+
+ return ret;
+}
+
+static bool
+seed_union_set_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef value, JSValueRef * exception)
+{
+ gsize length;
+ GArgument field_value;
+ GIFieldInfo *field;
+ gchar *cproperty_name;
+ GITypeInfo *field_type;
+ seed_struct_privates *priv =
+ (seed_struct_privates *) JSObjectGetPrivate (object);
+ gboolean ret;
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ SEED_NOTE (STRUCTS, "Setting property on union of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (priv->info), cproperty_name);
+
+ field = seed_union_find_field ((GIUnionInfo *) priv->info, cproperty_name);
+
+ if (!field)
+ {
+ return FALSE;
+ }
+
+ field_type = g_field_info_get_type (field);
+
+ seed_value_to_gi_argument (context, value, field_type, &field_value, exception);
+ ret = g_field_info_set_field (field, priv->pointer, &field_value);
+
+ g_base_info_unref ((GIBaseInfo *) field_type);
+ g_base_info_unref ((GIBaseInfo *) field);
+
+ return TRUE;
+}
+
+static bool
+seed_struct_set_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name,
+ JSValueRef value, JSValueRef * exception)
+{
+ gsize length;
+ GArgument field_value;
+ GIFieldInfo *field;
+ gchar *cproperty_name;
+ GITypeInfo *field_type;
+ seed_struct_privates *priv =
+ (seed_struct_privates *) JSObjectGetPrivate (object);
+ gboolean ret;
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ SEED_NOTE (STRUCTS, "Setting property on struct of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (priv->info), cproperty_name);
+
+ field =
+ seed_struct_find_field ((GIStructInfo *) priv->info, cproperty_name);
+
+ if (!field)
+ {
+ return FALSE;
+ }
+
+ field_type = g_field_info_get_type (field);
+
+ seed_value_to_gi_argument (context, value, field_type, &field_value, exception);
+ ret = g_field_info_set_field (field, priv->pointer, &field_value);
+
+ if (!ret)
+ g_warning("Setting property failed on struct of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (priv->info), cproperty_name);
+
+ g_base_info_unref ((GIBaseInfo *) field_type);
+ g_base_info_unref ((GIBaseInfo *) field);
+
+ return TRUE;
+}
+
+static JSValueRef
+seed_struct_get_property (JSContextRef context,
+ JSObjectRef object,
+ JSStringRef property_name, JSValueRef * exception)
+{
+ gchar *cproperty_name;
+ gsize length;
+ seed_struct_privates *priv = JSObjectGetPrivate (object);
+ GIFieldInfo *field = NULL;
+ JSValueRef ret;
+
+ length = JSStringGetMaximumUTF8CStringSize (property_name);
+ cproperty_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (property_name, cproperty_name, length);
+
+ SEED_NOTE (STRUCTS, "Getting property on struct of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (priv->info), cproperty_name);
+
+ // for a gvalue, it has a special property 'value' (read-only)
+ GType gtype = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *) priv->info);
+
+ if (g_type_is_a (gtype, G_TYPE_VALUE) && !g_strcmp0 (cproperty_name, "value"))
+ {
+ return seed_value_from_gvalue ( context, ( GValue *) priv->pointer, exception);
+
+ }
+
+ field =
+ seed_struct_find_field ((GIStructInfo *) priv->info, cproperty_name);
+
+ if (!field)
+ {
+ return NULL;
+ }
+
+ ret = seed_field_get_value (context, priv->pointer, field, exception);
+
+ g_base_info_unref ((GIBaseInfo *) field);
+
+ return ret;
+}
+
+static void
+seed_enumerate_structlike_properties (JSContextRef ctx,
+ JSObjectRef object,
+ JSPropertyNameAccumulatorRef
+ propertyNames)
+{
+ GIFieldInfo *field;
+ gint i, n;
+ guchar type = 0;
+ seed_struct_privates *priv =
+ (seed_struct_privates *) JSObjectGetPrivate (object);
+ GIBaseInfo *info = priv->info;
+
+ if (!info)
+ return;
+
+ if (JSValueIsObjectOfClass (ctx, object, seed_struct_class))
+ type = 1;
+ else if (JSValueIsObjectOfClass (ctx, object, seed_union_class))
+ type = 2;
+ else
+ g_assert_not_reached ();
+
+ (type == 1) ?
+ (n = g_struct_info_get_n_fields ((GIStructInfo *) info)) :
+ (n = g_union_info_get_n_fields ((GIUnionInfo *) info));
+
+ for (i = 0; i < n; i++)
+ {
+ JSStringRef jname;
+
+ (type == 1) ?
+ (field = g_struct_info_get_field ((GIStructInfo *) info, i)) :
+ (field = g_union_info_get_field ((GIUnionInfo *) info, i));
+
+ jname =
+ JSStringCreateWithUTF8CString (g_base_info_get_name
+ ((GIBaseInfo *) field));
+
+ g_base_info_unref ((GIBaseInfo *) field);
+ JSPropertyNameAccumulatorAddName (propertyNames, jname);
+
+ JSStringRelease (jname);
+ }
+}
+
+JSClassDefinition seed_pointer_def = {
+ 0, /* Version, always 0 */
+ 0,
+ "seed_pointer", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ seed_pointer_finalize,
+ NULL, /* Has Property */
+ 0,
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL,
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition seed_struct_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype,
+ "seed_struct", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL,
+ NULL, /* Has Property */
+ seed_struct_get_property,
+ seed_struct_set_property, /* Set Property */
+ NULL, /* Delete Property */
+ seed_enumerate_structlike_properties, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition seed_union_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype,
+ "seed_union", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ NULL,
+ NULL, /* Has Property */
+ seed_union_get_property,
+ seed_union_set_property, /* Set Property */
+ NULL, /* Delete Property */
+ seed_enumerate_structlike_properties, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+JSClassDefinition seed_boxed_def = {
+ 0, /* Version, always 0 */
+ kJSClassAttributeNoAutomaticPrototype,
+ "seed_boxed", /* Class Name */
+ NULL, /* Parent Class */
+ NULL, /* Static Values */
+ NULL, /* Static Functions */
+ NULL,
+ seed_boxed_finalize,
+ NULL, /* Has Property */
+ NULL,
+ NULL, /* Set Property */
+ NULL, /* Delete Property */
+ NULL, /* Get Property Names */
+ NULL, /* Call As Function */
+ NULL, /* Call As Constructor */
+ NULL, /* Has Instance */
+ NULL /* Convert To Type */
+};
+
+gpointer
+seed_pointer_get_pointer (JSContextRef ctx, JSValueRef pointer)
+{
+ if (JSValueIsObjectOfClass (ctx, pointer, seed_pointer_class))
+ {
+ seed_struct_privates *priv = JSObjectGetPrivate ((JSObjectRef) pointer);
+ return priv->pointer;
+ }
+ return NULL;
+}
+
+void
+seed_pointer_set_free (JSContextRef ctx,
+ JSValueRef pointer, gboolean free_pointer)
+{
+ if (JSValueIsObjectOfClass (ctx, pointer, seed_pointer_class))
+ {
+ seed_struct_privates *priv = JSObjectGetPrivate ((JSObjectRef) pointer);
+ priv->free_pointer = free_pointer;
+ }
+}
+
+static void
+seed_pointer_set_slice (JSContextRef ctx,
+ JSValueRef pointer, gboolean free_pointer, gsize size)
+{
+ seed_struct_privates *priv = JSObjectGetPrivate ((JSObjectRef) pointer);
+ priv->slice_alloc = free_pointer;
+ priv->size = size;
+}
+
+JSObjectRef
+seed_make_pointer (JSContextRef ctx, gpointer pointer)
+{
+ seed_struct_privates *priv = g_slice_alloc (sizeof (seed_struct_privates));
+ priv->pointer = pointer;
+ priv->info = 0;
+ priv->free_pointer = FALSE;
+
+ return JSObjectMake (ctx, seed_pointer_class, priv);
+}
+
+JSObjectRef
+seed_union_prototype (JSContextRef ctx, GIBaseInfo * info)
+{
+ JSObjectRef proto;
+ const gchar *namespace, *name;
+ gchar *key;
+ gint n_methods, i;
+ GIFunctionInfo *finfo;
+
+ name = g_base_info_get_name (info);
+ namespace = g_base_info_get_namespace (info);
+ key = g_strjoin (NULL, namespace, name, NULL);
+
+ proto = (JSObjectRef) g_hash_table_lookup (union_prototype_hash, key);
+
+ if (!proto)
+ {
+ proto = JSObjectMake (ctx, 0, 0);
+ JSValueProtect (eng->context, proto);
+
+ n_methods = g_union_info_get_n_methods ((GIUnionInfo *) info);
+ for (i = 0; i < n_methods; i++)
+ {
+ finfo = g_union_info_get_method ((GIUnionInfo *) info, i);
+
+ seed_gobject_define_property_from_function_info (ctx,
+ (GIFunctionInfo *)
+ finfo, proto,
+ TRUE);
+
+ g_base_info_unref ((GIBaseInfo *) finfo);
+ }
+
+ g_hash_table_insert (union_prototype_hash, key, proto);
+ }
+ else
+ {
+ g_free (key);
+ }
+
+ return proto;
+}
+
+JSObjectRef
+seed_make_union (JSContextRef ctx, gpointer younion, GIBaseInfo * info)
+{
+ JSObjectRef object;
+
+ if (younion == NULL)
+ {
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ seed_struct_privates *priv = g_slice_alloc (sizeof (seed_struct_privates));
+
+ priv->pointer = younion;
+ priv->info = info ? g_base_info_ref (info) : 0;
+ priv->free_pointer = FALSE;
+
+ object = JSObjectMake (ctx, seed_union_class, priv);
+
+ if (info)
+ {
+ JSObjectRef proto = seed_union_prototype (ctx, info);
+ if (proto)
+ JSObjectSetPrototype (ctx, object, proto);
+ else
+ g_assert_not_reached ();
+ }
+
+ return object;
+}
+
+JSObjectRef
+seed_make_boxed (JSContextRef ctx, gpointer boxed, GIBaseInfo * info)
+{
+ JSObjectRef object;
+ seed_struct_privates *priv = g_slice_alloc (sizeof (seed_struct_privates));
+
+ priv->info = info ? g_base_info_ref (info) : 0;
+ priv->pointer = boxed;
+ // Boxed finalize handler handles freeing.
+ priv->free_pointer = FALSE;
+
+ object = JSObjectMake (ctx, seed_boxed_class, priv);
+
+ // FIXME: Instance methods?
+
+ return object;
+}
+
+JSObjectRef
+seed_struct_prototype (JSContextRef ctx, GIBaseInfo * info)
+{
+ JSObjectRef proto;
+ const gchar *namespace, *name;
+ gchar *key;
+ gint n_methods, i;
+
+ name = g_base_info_get_name (info);
+ namespace = g_base_info_get_namespace (info);
+ key = g_strjoin (NULL, namespace, name, NULL);
+
+ proto = (JSObjectRef) g_hash_table_lookup (struct_prototype_hash, key);
+
+ if (!proto)
+ {
+ proto = JSObjectMake (ctx, 0, 0);
+ JSValueProtect (eng->context, proto);
+
+ n_methods = g_struct_info_get_n_methods ((GIStructInfo *) info);
+ for (i = 0; i < n_methods; i++)
+ {
+ GIFunctionInfo *finfo;
+
+ finfo = g_struct_info_get_method ((GIStructInfo *) info, i);
+
+ seed_gobject_define_property_from_function_info (ctx,
+ (GIFunctionInfo *)
+ finfo, proto,
+ TRUE);
+
+ g_base_info_unref ((GIBaseInfo *) finfo);
+ }
+
+ g_hash_table_insert (struct_prototype_hash, key, proto);
+ }
+ else
+ {
+ g_free (key);
+ }
+
+ return proto;
+}
+
+JSObjectRef
+seed_make_struct (JSContextRef ctx, gpointer strukt, GIBaseInfo * info)
+{
+ JSObjectRef object, proto;
+
+ if (strukt == NULL)
+ {
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+
+ seed_struct_privates *priv = g_slice_alloc (sizeof (seed_struct_privates));
+
+ priv->info = info ? g_base_info_ref (info) : 0;
+ priv->pointer = strukt;
+ priv->free_pointer = FALSE;
+
+ object = JSObjectMake (ctx, seed_struct_class, priv);
+ // Examine cases where struct is being used without info.
+ if (info)
+ {
+ proto = seed_struct_prototype (ctx, info);
+ if (proto)
+ JSObjectSetPrototype (ctx, object, proto);
+ else
+ g_assert_not_reached ();
+ }
+
+ return object;
+}
+
+void
+seed_structs_init (void)
+{
+ seed_pointer_class = JSClassCreate (&seed_pointer_def);
+ seed_struct_def.parentClass = seed_pointer_class;
+ seed_struct_class = JSClassCreate (&seed_struct_def);
+ seed_union_def.parentClass = seed_pointer_class;
+ seed_union_class = JSClassCreate (&seed_union_def);
+ seed_boxed_def.parentClass = seed_struct_class;
+ seed_boxed_class = JSClassCreate (&seed_boxed_def);
+
+ struct_prototype_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ union_prototype_hash = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+JSObjectRef
+seed_construct_struct_type_with_parameters (JSContextRef ctx,
+ GIBaseInfo * info,
+ JSObjectRef parameters,
+ JSValueRef * exception)
+{
+ gsize size = 0;
+ gpointer object;
+ GIInfoType type = g_base_info_get_type (info);
+ JSObjectRef ret;
+ gboolean set_ret;
+ gint nparams, i = 0;
+ gsize length;
+ GIFieldInfo *field = 0;
+ JSPropertyNameArrayRef jsprops;
+ JSStringRef jsprop_name;
+ JSValueRef jsprop_value;
+ GArgument field_value;
+ gchar *prop_name;
+ GITypeInfo *field_type;
+
+ if (type == GI_INFO_TYPE_STRUCT)
+ {
+ GType gtype = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *) info);
+ if (g_type_is_a (gtype, G_TYPE_VALUE))
+ {
+ GValue *gval = g_slice_alloc0 (sizeof (GValue));
+ if (!parameters)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Missing Type in GValue constructor");
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ SEED_NOTE (CONSTRUCTION, "Created a GValue struct");
+ seed_value_to_gvalue (ctx, parameters , 0, gval, exception);
+ ret = seed_make_struct (ctx, (gpointer)gval, info);
+ return ret;
+ }
+
+ size = g_struct_info_get_size ((GIStructInfo *) info);
+ }
+ else
+ {
+ size = g_union_info_get_size ((GIUnionInfo *) info);
+ }
+ if (!size)
+ {
+ g_critical ("Struct/union of type: %s has size 0 in introspection data. Please check GIR",
+ g_base_info_get_name (info));
+ g_assert(size);
+ }
+ object = g_slice_alloc0 (size);
+
+ SEED_NOTE (CONSTRUCTION,
+ "Constructing struct/union of type: %s. Size: %zu \n",
+ g_base_info_get_name (info), size);
+
+ if (type == GI_INFO_TYPE_STRUCT)
+ ret = seed_make_struct (ctx, object, info);
+ else
+ ret = seed_make_union (ctx, object, info);
+
+ seed_pointer_set_free (ctx, ret, TRUE);
+ seed_pointer_set_slice (ctx, ret, TRUE, size);
+
+ if (!parameters)
+ return ret;
+
+ jsprops = JSObjectCopyPropertyNames (ctx, (JSObjectRef) parameters);
+ nparams = JSPropertyNameArrayGetCount (jsprops);
+
+ while (i < nparams)
+ {
+ jsprop_name = JSPropertyNameArrayGetNameAtIndex (jsprops, i);
+
+ length = JSStringGetMaximumUTF8CStringSize (jsprop_name);
+ prop_name = g_alloca (length * sizeof (gchar));
+ JSStringGetUTF8CString (jsprop_name, prop_name, length);
+
+ if (type == GI_INFO_TYPE_STRUCT)
+ field = seed_struct_find_field ((GIStructInfo *) info, prop_name);
+ else
+ field = seed_union_find_field ((GIUnionInfo *) info, prop_name);
+ if (!field)
+ {
+ seed_make_exception (ctx, exception, "PropertyError",
+ "Invalid property for construction: %s",
+ prop_name);
+
+ JSPropertyNameArrayRelease (jsprops);
+ return (JSObjectRef) JSValueMakeNull (ctx);
+ }
+ field_type = g_field_info_get_type (field);
+
+ jsprop_value = JSObjectGetProperty (ctx,
+ (JSObjectRef) parameters,
+ jsprop_name, NULL);
+
+ seed_value_to_gi_argument (ctx, jsprop_value, field_type, &field_value,
+ exception);
+ set_ret = g_field_info_set_field (field, object, &field_value);
+
+ if (!set_ret)
+ g_warning("Constructor setting property failed on struct of type: %s "
+ "with name %s \n",
+ g_base_info_get_name (info), prop_name);
+
+ g_base_info_unref ((GIBaseInfo *) field_type);
+ g_base_info_unref ((GIBaseInfo *) field);
+
+ i++;
+ }
+ JSPropertyNameArrayRelease (jsprops);
+
+ return ret;
+}
diff --git a/libseed/seed-structs.h b/libseed/seed-structs.h
new file mode 100644
index 0000000..92f85e9
--- /dev/null
+++ b/libseed/seed-structs.h
@@ -0,0 +1,56 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+#ifndef _SEED_STRUCT_H
+#define _SEED_STRUCT_H
+extern JSClassRef seed_struct_class;
+extern JSClassRef seed_union_class;
+
+JSObjectRef seed_make_union (JSContextRef ctx, gpointer younion,
+ GIBaseInfo * info);
+JSObjectRef seed_make_struct (JSContextRef ctx, gpointer strukt,
+ GIBaseInfo * info);
+JSObjectRef seed_make_boxed (JSContextRef ctx,
+ gpointer boxed, GIBaseInfo * info);
+
+JSObjectRef seed_make_pointer (JSContextRef ctx, gpointer pointer);
+
+JSValueRef
+seed_field_get_value (JSContextRef ctx,
+ gpointer object,
+ GIFieldInfo * field, JSValueRef * exception);
+
+gpointer seed_pointer_get_pointer (JSContextRef ctx, JSValueRef strukt);
+void seed_pointer_set_free (JSContextRef ctx,
+ JSValueRef pointer, gboolean free_pointer);
+
+GIFieldInfo *seed_struct_find_field (GIStructInfo * info, gchar * field_name);
+GIFieldInfo *seed_union_find_field (GIUnionInfo * info, gchar * field_name);
+
+JSObjectRef
+seed_construct_struct_type_with_parameters (JSContextRef ctx,
+ GIBaseInfo * info,
+ JSObjectRef parameters,
+ JSValueRef * exception);
+
+JSObjectRef seed_union_prototype (JSContextRef ctx, GIBaseInfo * info);
+JSObjectRef seed_struct_prototype (JSContextRef ctx, GIBaseInfo * info);
+
+void seed_structs_init ();
+
+#endif
diff --git a/libseed/seed-types.c b/libseed/seed-types.c
new file mode 100644
index 0000000..a42d4db
--- /dev/null
+++ b/libseed/seed-types.c
@@ -0,0 +1,2543 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "seed-private.h"
+#include <dlfcn.h>
+#include <pthread.h>
+
+JSClassRef gobject_class;
+JSClassRef gobject_method_class;
+JSClassRef gobject_constructor_class;
+JSClassRef seed_callback_class;
+JSClassRef gobject_init_method_class;
+SeedEngine *eng;
+
+static gboolean
+seed_value_is_gobject (JSContextRef ctx, JSValueRef value)
+{
+ if (!JSValueIsObject (ctx, value) || JSValueIsNull (ctx, value))
+ return FALSE;
+
+ return JSValueIsObjectOfClass (ctx, value, gobject_class);
+}
+
+void
+seed_toggle_ref (gpointer data, GObject * object, gboolean is_last_ref)
+{
+ JSValueRef wrapper;
+
+ if (!g_object_get_data (object, "js-ref"))
+ return;
+
+ wrapper = (JSValueRef) data;
+
+ if (is_last_ref)
+ {
+ JSValueUnprotect (eng->context, wrapper);
+ }
+ else
+ {
+ JSValueProtect (eng->context, wrapper);
+ }
+}
+
+static void
+seed_gobject_destroyed (gpointer object)
+{
+ JSValueUnprotect (eng->context, (JSValueRef) object);
+ JSObjectSetPrivate ((JSObjectRef) object, 0);
+}
+
+JSObjectRef
+seed_make_wrapper_for_type (JSContextRef ctx, GType type)
+{
+ JSClassRef class;
+ JSObjectRef ret;
+ JSValueRef prototype;
+
+ class = seed_gobject_get_class_for_gtype (ctx, type);
+
+ while (!class && (type = g_type_parent (type)))
+ class = seed_gobject_get_class_for_gtype (ctx, type);
+
+ prototype = seed_gobject_get_prototype_for_gtype (type);
+ ret = JSObjectMake (ctx, class, NULL);
+ if (prototype)
+ JSObjectSetPrototype (ctx, ret, prototype);
+ else
+ g_assert_not_reached ();
+
+ return ret;
+}
+
+static JSValueRef
+seed_wrap_object (JSContextRef ctx, GObject * object)
+{
+ JSValueRef user_data;
+ JSObjectRef js_ref;
+ GType type;
+
+ type = G_OBJECT_TYPE (object);
+
+ user_data = (JSValueRef) g_object_get_qdata (object, js_ref_quark);
+
+ if (user_data)
+ return user_data;
+
+ if (pthread_getspecific(seed_next_gobject_wrapper_key))
+ js_ref = pthread_getspecific(seed_next_gobject_wrapper_key);
+ else
+ js_ref = seed_make_wrapper_for_type (ctx, type);
+
+ JSObjectSetPrivate (js_ref, object);
+
+ g_object_set_qdata_full (object, js_ref_quark, (gpointer) js_ref,
+ seed_gobject_destroyed);
+
+ JSValueProtect (eng->context, js_ref);
+ g_object_add_toggle_ref (object, seed_toggle_ref, (gpointer) js_ref);
+
+ seed_add_signals_to_object (ctx, js_ref, object);
+
+ pthread_setspecific(seed_next_gobject_wrapper_key, NULL);
+
+ return js_ref;
+}
+
+static gboolean
+seed_release_arg (GITransfer transfer,
+ GITypeInfo * type_info, GITypeTag type_tag, GArgument * arg)
+{
+ GType gtype;
+ GITypeInfo *param_type;
+ GIBaseInfo *interface_info;
+ GValue *gval;
+
+ switch (type_tag)
+ {
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ g_free (arg->v_string);
+ break;
+ case GI_TYPE_TAG_ARRAY:
+ if (arg->v_pointer)
+ {
+ param_type = g_type_info_get_param_type (type_info, 0);
+
+ switch (g_type_info_get_tag (param_type))
+ {
+ case GI_TYPE_TAG_UTF8:
+ if (transfer == GI_TRANSFER_EVERYTHING)
+ g_strfreev (arg->v_pointer);
+ else if (transfer == GI_TRANSFER_CONTAINER)
+ g_free (arg->v_pointer);
+ break;
+ case GI_TYPE_TAG_GTYPE:
+ case GI_TYPE_TAG_FLOAT:
+ case GI_TYPE_TAG_UINT8:
+ case GI_TYPE_TAG_UINT32:
+ g_free (arg->v_pointer);
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ g_base_info_unref ((GIBaseInfo *) param_type);
+ }
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ if (arg->v_pointer)
+ {
+ interface_info = g_type_info_get_interface (type_info);
+
+ GIInfoType interface_type = g_base_info_get_type (interface_info);
+ if (interface_type == GI_INFO_TYPE_CALLBACK)
+ {
+ /* FIXME: - callback returns are not handled yet */
+ g_base_info_unref (interface_info);
+ break;
+ }
+
+ gtype =
+ g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *)
+ interface_info);
+
+ if (g_type_is_a (gtype, G_TYPE_OBJECT)
+ || g_type_is_a (gtype, G_TYPE_INTERFACE))
+ {
+ SEED_NOTE (MISC,
+ "Unreffing object of type: %s in"
+ "argument release. Reference count: %d\n",
+ g_type_name (G_OBJECT_TYPE
+ (G_OBJECT (arg->v_pointer))),
+ G_OBJECT (arg->v_pointer)->ref_count);
+ g_object_unref (G_OBJECT (arg->v_pointer));
+ }
+ else if (g_type_is_a (gtype, G_TYPE_VALUE))
+ {
+ gval = (GValue *) arg->v_pointer;
+ // Free/unref the GValue's contents.
+ g_value_unset (gval);
+ // Free the GValue.
+ g_slice_free1 (sizeof (GValue), gval);
+ }
+ else if (g_type_is_a (gtype, G_TYPE_CLOSURE))
+ {
+ g_closure_unref (arg->v_pointer);
+ }
+
+ g_base_info_unref (interface_info);
+ }
+ break;
+ }
+ default:
+ break;
+
+ }
+
+ return TRUE;
+}
+
+gboolean
+seed_gi_release_arg (GITransfer transfer,
+ GITypeInfo * type_info, GArgument * arg)
+{
+ GITypeTag type_tag;
+
+ if (transfer == GI_TRANSFER_NOTHING)
+ return TRUE;
+
+ type_tag = g_type_info_get_tag ((GITypeInfo *) type_info);
+
+ return seed_release_arg (transfer, type_info, type_tag, arg);
+}
+
+gboolean
+seed_gi_release_in_arg (GITransfer transfer,
+ GITypeInfo * type_info, GArgument * arg)
+{
+ GITypeTag type_tag;
+
+ if (transfer == GI_TRANSFER_EVERYTHING)
+ return TRUE;
+
+ type_tag = g_type_info_get_tag ((GITypeInfo *) type_info);
+
+ switch (type_tag)
+ {
+ // TODO: FIXME: Leaaaks?
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ // TODO: FIXME: Need some safe way to look for GClosure.
+ break;
+ }
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ case GI_TYPE_TAG_ARRAY:
+ return seed_release_arg (GI_TRANSFER_EVERYTHING,
+ type_info, type_tag, arg);
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+
+static JSValueRef
+seed_gi_make_jsarray (JSContextRef ctx,
+ void *array,
+ GITypeInfo * param_type, JSValueRef * exception)
+{
+ GITypeTag element_type;
+ JSValueRef *elements;
+ guint length, i;
+ gchar **str_array = (gchar **) array;
+ JSValueRef ret = JSValueMakeNull (ctx);
+
+ element_type = g_type_info_get_tag (param_type);
+
+ if (element_type == GI_TYPE_TAG_UTF8)
+ {
+
+ length = g_strv_length (str_array);
+ if (!length)
+ return ret;
+
+ elements = g_alloca (sizeof (JSValueRef) * length);
+ for (i = 0; i < length; ++i)
+ {
+ elements[i] = seed_value_from_string (ctx, str_array[i], exception);
+ }
+
+ ret = (JSValueRef) JSObjectMakeArray (ctx, length, elements, exception);
+ }
+
+ if (element_type == GI_TYPE_TAG_GTYPE)
+ {
+ GType* ptr = (GType*)array;
+ length = 0;
+ while (ptr[length]) length++;
+
+ elements = g_alloca (sizeof (JSValueRef) * length);
+
+ for (i = 0; i < length; ++i)
+ elements[i] = seed_value_from_long (ctx, ptr[i], exception);
+
+ return (JSValueRef) JSObjectMakeArray (ctx, length, elements, exception);
+
+ }
+
+ return ret;
+}
+
+static gboolean
+seed_gi_make_array (JSContextRef ctx,
+ JSValueRef array,
+ guint length,
+ GITypeInfo * param_type,
+ void **array_p, JSValueRef * exception)
+{
+ GITypeTag element_type;
+ JSValueRef elem;
+ guint i;
+
+ element_type = g_type_info_get_tag (param_type);
+
+ switch (element_type)
+ {
+ case GI_TYPE_TAG_UTF8:
+ {
+ gchar **strresult = g_new0 (gchar *, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ strresult[i] = seed_value_to_string (ctx, elem, exception);
+ }
+
+ *array_p = strresult;
+ }
+ break;
+ case GI_TYPE_TAG_GTYPE:
+ {
+ GType *typeresult;
+
+ typeresult = g_new0 (GType, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ typeresult[i] = seed_value_to_int (ctx, elem, exception);
+ }
+
+ *array_p = typeresult;
+ }
+ break;
+ case GI_TYPE_TAG_FLOAT:
+ {
+ gfloat *floatresult;
+
+ floatresult = g_new0 (gfloat, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ floatresult[i] = seed_value_to_float (ctx, elem, exception);
+ }
+
+ *array_p = floatresult;
+ }
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ {
+ gdouble *dblresult;
+
+ dblresult = g_new0 (gdouble, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ dblresult[i] = seed_value_to_double (ctx, elem, exception);
+ }
+
+ *array_p = dblresult;
+ }
+ break;
+
+#if GOBJECT_INTROSPECTION_VERSION < 0x000900
+ case GI_TYPE_TAG_INT:
+#endif
+ case GI_TYPE_TAG_INT32:
+ {
+ gint *intresult;
+
+ intresult = g_new0 (gint, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ intresult[i] = seed_value_to_int (ctx, elem, exception);
+ }
+
+ *array_p = intresult;
+ }
+ break;
+ case GI_TYPE_TAG_UINT8:
+ {
+ guint8 *guint8result;
+
+ guint8result = g_new0 (guint8, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ guint8result[i] = seed_value_to_uchar (ctx, elem, exception);
+ }
+
+ *array_p = guint8result;
+ }
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface = g_type_info_get_interface (param_type);
+ GIInfoType interface_type = g_base_info_get_type (interface);
+ if (interface_type == GI_INFO_TYPE_OBJECT
+ || interface_type == GI_INFO_TYPE_INTERFACE
+ || interface_type == GI_INFO_TYPE_STRUCT)
+ {
+ GType type =
+ g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *)
+ interface);
+ if (g_type_is_a (type, G_TYPE_VALUE))
+ {
+ GValue *gvalresult;
+
+ // TODO:FIXME: Robb. Valgrind thinks there's a leak here,
+ // at least while running Same Seed.
+ gvalresult = g_new0 (GValue, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ seed_value_to_gvalue (ctx, elem,
+ (GType) 0,
+ &gvalresult[i], exception);
+ }
+ *array_p = gvalresult;
+
+ g_base_info_unref (interface);
+ break;
+ }
+ }
+
+ g_base_info_unref (interface);
+ }
+ case GI_TYPE_TAG_UINT32:
+ {
+ guint32 *uintresult;
+
+ uintresult = g_new0 (guint32, length + 1);
+
+ for (i = 0; i < length; i++)
+ {
+ elem = JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef) array,
+ i, exception);
+ uintresult[i] = seed_value_to_uint (ctx, elem, exception);
+ }
+ *array_p = uintresult;
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Unhandled array element type");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+seed_value_to_gi_argument (JSContextRef ctx,
+ JSValueRef value,
+ GITypeInfo * type_info,
+ GArgument * arg,
+ JSValueRef * exception)
+{
+ GITypeTag gi_tag = g_type_info_get_tag (type_info);
+
+ // FIXME: Some types are not "nullable", also need to check if argument
+ // can be null before doing this.
+ if (!value || JSValueIsNull (ctx, value))
+ {
+ arg->v_pointer = 0;
+ return 1;
+ }
+
+ switch (gi_tag)
+ {
+ case GI_TYPE_TAG_VOID:
+
+ if (g_type_info_is_pointer (type_info))
+ {
+ GObject *gobject;
+ if (JSValueIsString (ctx, value))
+ {
+ /*
+ things like gio.outputstream.write use void pointers
+ might need a few other types here..
+ not very well memory managed. - should be solved by bytearrays when
+ introspection implements it.
+ */
+ arg->v_string = seed_value_to_string (ctx, value, exception);
+ break;
+ }
+ /* gtk_statusicon_position_menu / gtk_menu_popup use the userdata for the Gobject */
+ gobject = seed_value_to_object (ctx, value, exception);
+ if (!gobject)
+ return FALSE;
+
+ arg->v_pointer = gobject;
+ }
+ break;
+
+#if GOBJECT_INTROSPECTION_VERSION < 0x000900
+ case GI_TYPE_TAG_LONG:
+ arg->v_long = seed_value_to_long (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_ULONG:
+ arg->v_ulong = seed_value_to_ulong (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INT:
+ arg->v_int = seed_value_to_int (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UINT:
+ arg->v_uint = seed_value_to_uint (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_SIZE:
+ arg->v_size = seed_value_to_size (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_SSIZE:
+ arg->v_ssize = seed_value_to_ssize (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_TIME_T:
+ arg->v_long = seed_value_to_time_t (ctx, value, exception);
+ break;
+#endif
+
+ case GI_TYPE_TAG_BOOLEAN:
+ arg->v_boolean = seed_value_to_boolean (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INT8:
+ arg->v_int8 = seed_value_to_char (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UINT8:
+ arg->v_uint8 = seed_value_to_uchar (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INT16:
+ arg->v_int16 = seed_value_to_int (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UINT16:
+ arg->v_uint16 = seed_value_to_uint (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INT32:
+ arg->v_int32 = seed_value_to_int (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UINT32:
+ arg->v_uint32 = seed_value_to_uint (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INT64:
+ arg->v_int64 = seed_value_to_int64 (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UINT64:
+ arg->v_uint64 = seed_value_to_uint64 (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_FLOAT:
+ arg->v_float = seed_value_to_float (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ arg->v_double = seed_value_to_double (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_UTF8:
+ arg->v_string = seed_value_to_string (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_FILENAME:
+ arg->v_string = seed_value_to_filename (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_GTYPE:
+ arg->v_int = seed_value_to_int (ctx, value, exception);
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface;
+ GIInfoType interface_type;
+ GType required_gtype;
+ GObject *gobject;
+
+ interface = g_type_info_get_interface (type_info);
+ interface_type = g_base_info_get_type (interface);
+
+ arg->v_pointer = NULL;
+
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
+ {
+ gobject = seed_value_to_object (ctx, value, exception);
+ required_gtype =
+ g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *)
+ interface);
+
+ // FIXME: Not clear if the g_type_is_a check is desired here.
+ // Possibly 'breaks things' when we don't have introspection
+ // data for some things in an interface hierarchy. Hasn't
+ // provided any problems so far.
+ if (!gobject
+ || !g_type_is_a (G_OBJECT_TYPE (gobject), required_gtype))
+ {
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+
+ arg->v_pointer = gobject;
+ g_base_info_unref (interface);
+ break;
+ }
+ else if (interface_type == GI_INFO_TYPE_ENUM ||
+ interface_type == GI_INFO_TYPE_FLAGS)
+ {
+ arg->v_long = seed_value_to_long (ctx, value, exception);
+ if (!(interface_type == GI_INFO_TYPE_FLAGS)
+ && !seed_validate_enum ((GIEnumInfo *) interface,
+ arg->v_long))
+ {
+ seed_make_exception (ctx, exception, "EnumRange",
+ "Enum value: %ld is out of range",
+ arg->v_long);
+ g_base_info_unref (interface);
+
+ return FALSE;
+ }
+
+ g_base_info_unref (interface);
+ break;
+ }
+ else if (interface_type == GI_INFO_TYPE_STRUCT ||
+ interface_type == GI_INFO_TYPE_UNION)
+ {
+ if (JSValueIsObjectOfClass (ctx, value, seed_struct_class))
+ arg->v_pointer = seed_pointer_get_pointer (ctx, value);
+ else if (JSValueIsObjectOfClass (ctx, value, seed_union_class))
+ arg->v_pointer = seed_pointer_get_pointer (ctx, value);
+ else
+ {
+ GType type =
+ g_registered_type_info_get_g_type ((GIRegisteredTypeInfo
+ *) interface);
+ if (!type)
+ {
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+ else if (type == G_TYPE_VALUE)
+ {
+ GValue *gval = g_slice_alloc0 (sizeof (GValue));
+ seed_value_to_gvalue (ctx,
+ value,
+ (GType) NULL,
+ gval, exception);
+ arg->v_pointer = gval;
+
+ g_base_info_unref (interface);
+ break;
+ }
+ // Automatically convert between functions and
+ // GClosures where expected.
+ else if (g_type_is_a (type, G_TYPE_CLOSURE))
+ {
+ if (JSObjectIsFunction (ctx, (JSObjectRef) value))
+ {
+ arg->v_pointer =
+ seed_closure_new (ctx, (JSObjectRef) value, NULL,
+ NULL);
+ }
+ }
+ else
+ {
+ JSObjectRef strukt =
+ seed_construct_struct_type_with_parameters (ctx,
+ interface,
+ (JSObjectRef) value,
+ exception);
+ arg->v_pointer = seed_pointer_get_pointer (ctx, strukt);
+ }
+ }
+ g_base_info_unref (interface);
+ break;
+ }
+ else if (interface_type == GI_INFO_TYPE_CALLBACK)
+ {
+ if (JSValueIsNull (ctx, value))
+ {
+ arg->v_pointer = NULL;
+ g_base_info_unref (interface);
+ break;
+ }
+ // Someone passes in a wrapper around a method where a
+ // callback is expected, i.e Clutter.sine_inc_func, as an alpha
+ // Have to dlsym the symbol to be able to do this.
+ // NOTE: Some cases where dlsym(NULL, symbol) doesn't work depending
+ // On how libseed is loaded.
+ else if (JSValueIsObjectOfClass (ctx,
+ value, gobject_method_class))
+ {
+ GIFunctionInfo *info =
+ JSObjectGetPrivate ((JSObjectRef) value);
+ const gchar *symbol = g_function_info_get_symbol (info);
+ gchar *error;
+ void *fp;
+
+ dlerror ();
+ fp = (void *) dlsym (0, symbol);
+ if ((error = dlerror ()) != NULL)
+ {
+ g_critical ("dlerror: %s \n", error);
+ }
+ else
+ {
+ arg->v_pointer = fp;
+ g_base_info_unref (interface);
+ break;
+ }
+ }
+ // Somewhat deprecated from when it was necessary to manually
+ // create closure objects...
+ else if (JSValueIsObjectOfClass (ctx,
+ value,
+ seed_native_callback_class))
+ {
+ SeedNativeClosure *privates =
+ (SeedNativeClosure *)
+ JSObjectGetPrivate ((JSObjectRef) value);
+ arg->v_pointer = privates->closure;
+ g_base_info_unref (interface);
+ break;
+ }
+ // Automagically create closure around function passed in as
+ // callback.
+ else if (JSObjectIsFunction (ctx, (JSObjectRef) value))
+ {
+ SeedNativeClosure *privates = seed_make_native_closure (ctx,
+ (GICallableInfo *) interface,
+ value);
+ arg->v_pointer = privates->closure;
+ g_base_info_unref (interface);
+ break;
+ }
+
+ }
+ }
+ case GI_TYPE_TAG_ARRAY:
+ {
+ if (JSValueIsNull (ctx, value))
+ {
+ arg->v_pointer = NULL;
+ break;
+ }
+ else if (!JSValueIsObject (ctx, value))
+ {
+ // TODO: FIXME: Is this right?
+ return FALSE;
+ }
+ else
+ {
+ GITypeInfo *param_type;
+ //TODO: FIXME: Better array test like the cool one on reddit.
+ guint length =
+ seed_value_to_int (ctx, seed_object_get_property (ctx,
+ (JSObjectRef)
+ value,
+ "length"),
+ exception);
+ if (!length)
+ {
+ arg->v_pointer = NULL;
+ break;
+ }
+
+ param_type = g_type_info_get_param_type (type_info, 0);
+ if (!seed_gi_make_array (ctx, value, length, param_type,
+ &arg->v_pointer, exception))
+ {
+ g_base_info_unref ((GIBaseInfo *) param_type);
+ return FALSE;
+ }
+ g_base_info_unref ((GIBaseInfo *) param_type);
+ break;
+ }
+ }
+ default:
+ return FALSE;
+
+ }
+ return TRUE;
+
+}
+
+JSValueRef
+seed_value_from_gi_argument (JSContextRef ctx,
+ GArgument * arg, GITypeInfo * type_info,
+ JSValueRef * exception)
+{
+ GITypeTag gi_tag = g_type_info_get_tag (type_info);
+ switch (gi_tag)
+ {
+
+#if GOBJECT_INTROSPECTION_VERSION < 0x000900
+ case GI_TYPE_TAG_LONG:
+ return seed_value_from_long (ctx, arg->v_long, exception);
+ case GI_TYPE_TAG_ULONG:
+ return seed_value_from_ulong (ctx, arg->v_ulong, exception);
+ case GI_TYPE_TAG_INT:
+ return seed_value_from_int (ctx, arg->v_int32, exception);
+ case GI_TYPE_TAG_UINT:
+ return seed_value_from_uint (ctx, arg->v_uint32, exception);
+ case GI_TYPE_TAG_SSIZE:
+ return seed_value_from_ssize (ctx, arg->v_ssize, exception);
+ case GI_TYPE_TAG_SIZE:
+ return seed_value_from_size (ctx, arg->v_size, exception);
+ case GI_TYPE_TAG_TIME_T:
+ return seed_value_from_time_t (ctx, arg->v_long, exception);
+#endif
+ case GI_TYPE_TAG_VOID:
+ return JSValueMakeUndefined (ctx);
+ case GI_TYPE_TAG_BOOLEAN:
+ return seed_value_from_boolean (ctx, arg->v_boolean, exception);
+ case GI_TYPE_TAG_INT8:
+ return seed_value_from_char (ctx, arg->v_int8, exception);
+ case GI_TYPE_TAG_UINT8:
+ return seed_value_from_uchar (ctx, arg->v_uint8, exception);
+ case GI_TYPE_TAG_INT16:
+ return seed_value_from_int (ctx, arg->v_int16, exception);
+ case GI_TYPE_TAG_UINT16:
+ return seed_value_from_uint (ctx, arg->v_uint16, exception);
+ case GI_TYPE_TAG_INT32:
+ return seed_value_from_int (ctx, arg->v_int32, exception);
+ case GI_TYPE_TAG_UINT32:
+ return seed_value_from_uint (ctx, arg->v_uint32, exception);
+ case GI_TYPE_TAG_INT64:
+ return seed_value_from_int64 (ctx, arg->v_int64, exception);
+ case GI_TYPE_TAG_UINT64:
+ return seed_value_from_uint64 (ctx, arg->v_uint64, exception);
+ case GI_TYPE_TAG_FLOAT:
+ return seed_value_from_float (ctx, arg->v_float, exception);
+ case GI_TYPE_TAG_DOUBLE:
+ return seed_value_from_double (ctx, arg->v_double, exception);
+ case GI_TYPE_TAG_UTF8:
+ return seed_value_from_string (ctx, arg->v_string, exception);
+ case GI_TYPE_TAG_FILENAME:
+ return seed_value_from_filename (ctx, arg->v_string, exception);
+ case GI_TYPE_TAG_GTYPE:
+ return seed_value_from_int (ctx, arg->v_int, exception);
+ case GI_TYPE_TAG_ARRAY:
+ {
+ GITypeInfo *param_type;
+ GIArrayType array_type;
+ JSValueRef ret;
+
+ if (arg->v_pointer == NULL)
+ return JSValueMakeNull (ctx);
+
+ array_type = g_type_info_get_array_type (type_info);
+
+ if (array_type == GI_ARRAY_TYPE_PTR_ARRAY)
+ {
+ JSObjectRef ret_ptr_array;
+ GITypeInfo *array_type_info;
+ GPtrArray *ptr = arg->v_pointer;
+ GArgument larg;
+ int length = 0;
+ int i;
+
+ if (!ptr)
+ break;
+
+ length = ptr->len;
+ array_type_info = g_type_info_get_param_type (type_info, 0);
+ ret_ptr_array = JSObjectMakeArray (ctx, 0, NULL, exception);
+
+ for (i = 0; i < length; ++i)
+ {
+ JSValueRef ival;
+
+ larg.v_pointer = g_ptr_array_index(ptr, i);
+ ival = (JSValueRef) seed_value_from_gi_argument (ctx, &larg,
+ array_type_info, exception);
+ if (!ival)
+ ival = JSValueMakeNull (ctx);
+
+ JSObjectSetPropertyAtIndex (ctx, ret_ptr_array, i, ival, NULL);
+ }
+ return ret_ptr_array;
+ }
+
+ if (!g_type_info_is_zero_terminated (type_info))
+ break;
+
+ param_type = g_type_info_get_param_type (type_info, 0);
+
+ ret = seed_gi_make_jsarray (ctx, arg->v_pointer, param_type,
+ exception);
+
+ g_base_info_unref ((GIBaseInfo *) param_type);
+
+ return ret;
+ }
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface;
+ GIInfoType interface_type;
+
+ interface = g_type_info_get_interface (type_info);
+ interface_type = g_base_info_get_type (interface);
+
+ if (interface_type == GI_INFO_TYPE_OBJECT ||
+ interface_type == GI_INFO_TYPE_INTERFACE)
+ {
+ if (arg->v_pointer == 0)
+ {
+ g_base_info_unref (interface);
+ return JSValueMakeNull (ctx);
+ }
+ g_base_info_unref (interface);
+ return seed_value_from_object (ctx, arg->v_pointer, exception);
+ }
+ else if (interface_type == GI_INFO_TYPE_ENUM
+ || interface_type == GI_INFO_TYPE_FLAGS)
+ {
+ g_base_info_unref (interface);
+ return seed_value_from_long (ctx, arg->v_long, exception);
+ }
+ else if (interface_type == GI_INFO_TYPE_STRUCT)
+ {
+ JSValueRef strukt;
+
+ strukt = seed_make_struct (ctx, arg->v_pointer, interface);
+ g_base_info_unref (interface);
+
+ return strukt;
+ }
+ else if (interface_type == GI_INFO_TYPE_CALLBACK)
+ {
+ /* FIXME: return values of type callback are not handled yet. */
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+ /* fall through - other types?? */
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+
+ case GI_TYPE_TAG_GLIST:
+ {
+ GITypeInfo *list_type;
+ JSObjectRef ret;
+ GArgument larg;
+ gint i = 0;
+ GList *list = arg->v_pointer;
+
+ ret = JSObjectMakeArray (ctx, 0, NULL, exception);
+ list_type = g_type_info_get_param_type (type_info, 0);
+
+ for (; list != NULL; list = list->next)
+ {
+ JSValueRef ival;
+
+ larg.v_pointer = list->data;
+ ival =
+ (JSValueRef) seed_value_from_gi_argument (ctx, &larg,
+ list_type, exception);
+ if (!ival)
+ ival = JSValueMakeNull (ctx);
+ JSObjectSetPropertyAtIndex (ctx, ret, i, ival, NULL);
+ i++;
+ }
+ return ret;
+
+ }
+ case GI_TYPE_TAG_GSLIST:
+ {
+ GITypeInfo *list_type;
+ JSObjectRef ret;
+ JSValueRef ival;
+ GArgument larg;
+ guint i = 0;
+ GSList *list = arg->v_pointer;
+
+ ret = JSObjectMakeArray (ctx, 0, NULL, exception);
+ list_type = g_type_info_get_param_type (type_info, 0);
+
+ for (; list != NULL; list = list->next)
+ {
+ larg.v_pointer = list->data;
+ ival =
+ (JSValueRef) seed_value_from_gi_argument (ctx, &larg,
+ list_type, exception);
+ if (!ival)
+ ival = JSValueMakeNull (ctx);
+ JSObjectSetPropertyAtIndex (ctx, ret, i, ival, NULL);
+ i++;
+ }
+ return ret;
+ }
+ case GI_TYPE_TAG_ERROR:
+ {
+ JSValueRef ret;
+ seed_make_exception_from_gerror (ctx, &ret, (GError*) arg->v_pointer);
+ return ret;
+ }
+
+ default:
+ return FALSE;
+
+ }
+ return 0;
+}
+
+JSValueRef
+seed_value_from_gvalue (JSContextRef ctx,
+ GValue * gval, JSValueRef * exception)
+{
+ if (!G_IS_VALUE (gval))
+ {
+ return false;
+ }
+ switch (G_VALUE_TYPE (gval))
+ {
+ case G_TYPE_BOOLEAN:
+ return seed_value_from_boolean (ctx,
+ g_value_get_boolean (gval), exception);
+ case G_TYPE_CHAR:
+ return seed_value_from_char (ctx, g_value_get_char (gval), exception);
+ case G_TYPE_UCHAR:
+ return seed_value_from_uchar (ctx, g_value_get_uchar (gval), exception);
+ case G_TYPE_INT:
+ return seed_value_from_int (ctx, g_value_get_int (gval), exception);
+ case G_TYPE_UINT:
+ return seed_value_from_uint (ctx, g_value_get_uint (gval), exception);
+ case G_TYPE_LONG:
+ return seed_value_from_long (ctx, g_value_get_long (gval), exception);
+ case G_TYPE_ULONG:
+ return seed_value_from_ulong (ctx, g_value_get_ulong (gval), exception);
+ case G_TYPE_INT64:
+ return seed_value_from_int64 (ctx, g_value_get_int64 (gval), exception);
+ case G_TYPE_UINT64:
+ return seed_value_from_uint64 (ctx, g_value_get_uint64 (gval),
+ exception);
+ case G_TYPE_FLOAT:
+ return seed_value_from_float (ctx, g_value_get_float (gval), exception);
+ case G_TYPE_DOUBLE:
+ return seed_value_from_double (ctx, g_value_get_double (gval),
+ exception);
+ case G_TYPE_STRING:
+ return seed_value_from_string (ctx, (gchar *)
+ g_value_get_string (gval), exception);
+ case G_TYPE_POINTER:
+ return seed_make_pointer (ctx, g_value_get_pointer (gval));
+ case G_TYPE_PARAM:
+ // Might need to dup and make a boxed.
+ return seed_make_pointer (ctx, g_value_get_param (gval));
+ }
+
+ if (g_type_is_a (G_VALUE_TYPE (gval), G_TYPE_STRV))
+ {
+ return seed_value_from_strv(ctx, g_value_get_boxed (gval), exception);
+ }
+
+
+ if (g_type_is_a (G_VALUE_TYPE (gval), G_TYPE_ENUM) ||
+ g_type_is_a (G_VALUE_TYPE (gval), G_TYPE_FLAGS))
+ return seed_value_from_long (ctx, gval->data[0].v_long, exception);
+ else if (g_type_is_a (G_VALUE_TYPE (gval), G_TYPE_ENUM))
+ return seed_value_from_long (ctx, gval->data[0].v_long, exception);
+ else if (g_type_is_a (G_VALUE_TYPE (gval), G_TYPE_OBJECT))
+ {
+ GObject *obj = g_value_get_object (gval);
+ return seed_value_from_object (ctx, obj, exception);
+ }
+ else
+ {
+ GIBaseInfo *info;
+ GIInfoType type;
+
+ info = g_irepository_find_by_gtype (0, G_VALUE_TYPE (gval));
+ if (!info)
+ return FALSE;
+ type = g_base_info_get_type (info);
+
+ if (type == GI_INFO_TYPE_UNION)
+ {
+ return seed_make_union (ctx, g_value_peek_pointer (gval), info);
+ }
+ else if (type == GI_INFO_TYPE_STRUCT)
+ {
+ return seed_make_struct (ctx, g_value_peek_pointer (gval), info);
+ }
+ else if (type == GI_INFO_TYPE_BOXED)
+ {
+ return seed_make_boxed (ctx, g_value_dup_boxed (gval), info);
+ }
+
+ }
+
+ return NULL;
+}
+
+gboolean
+seed_value_to_gvalue (JSContextRef ctx,
+ JSValueRef val,
+ GType type, GValue * ret, JSValueRef * exception)
+{
+ if (G_IS_VALUE (ret))
+ g_value_unset (ret);
+
+ if (type == G_TYPE_STRV)
+ {
+ gchar **result;
+ JSValueRef jslen;
+ guint length, i;
+
+ if (JSValueIsNull (ctx, val) || !JSValueIsObject (ctx, val))
+ return FALSE;
+
+ jslen = seed_object_get_property (ctx, (JSObjectRef) val, "length");
+ length = seed_value_to_uint (ctx, jslen, exception);
+
+ result = g_new0 (gchar *, length+1);
+
+ for (i = 0; i < length; i++)
+ {
+ result[i] = seed_value_to_string (ctx,
+ JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ val,
+ i,
+ exception),
+ exception);
+
+ }
+ result[i] = 0;
+
+ g_value_init (ret, G_TYPE_STRV);
+ g_value_take_boxed (ret, result);
+
+ return TRUE;
+ }
+ else if (g_type_is_a (type, G_TYPE_ENUM) && JSValueIsNumber (ctx, val))
+ {
+ g_value_init (ret, type);
+ g_value_set_enum (ret, seed_value_to_long (ctx, val, exception));
+ return TRUE;
+ }
+ else if (g_type_is_a (type, G_TYPE_FLAGS) && JSValueIsNumber (ctx, val))
+ {
+ g_value_init (ret, type);
+ g_value_set_flags (ret, seed_value_to_long (ctx, val, exception));
+ return TRUE;
+ }
+ else if (g_type_is_a (type, G_TYPE_OBJECT)
+ && (JSValueIsNull (ctx, val) || seed_value_is_gobject (ctx, val)))
+ {
+ GObject *o = seed_value_to_object (ctx,
+ val, exception);
+
+ if (o == NULL || g_type_is_a (G_OBJECT_TYPE (o), type))
+ {
+ g_value_init (ret, type);
+ g_value_set_object (ret, o);
+
+ return TRUE;
+ }
+ }
+ /* Boxed handling is broken. Will be fixed in struct overhall. */
+ else if (g_type_is_a (type, G_TYPE_BOXED))
+ {
+ gpointer p = seed_pointer_get_pointer (ctx, val);
+ if (p)
+ {
+ g_value_init (ret, type);
+ g_value_set_boxed (ret, p);
+ return TRUE;
+ }
+ else
+ {
+ if (JSValueIsObject (ctx, val))
+ {
+ GIBaseInfo *info = g_irepository_find_by_gtype (0, type);
+ JSObjectRef new_struct;
+ if (!info)
+ return FALSE;
+
+ new_struct =
+ seed_construct_struct_type_with_parameters (ctx,
+ info,
+ (JSObjectRef)
+ val, exception);
+ p = seed_pointer_get_pointer (ctx, new_struct);
+ if (p)
+ {
+ g_value_init (ret, type);
+ g_value_set_boxed (ret, p);
+ g_base_info_unref (info);
+ return TRUE;
+ }
+ g_base_info_unref (info);
+ }
+ }
+ }
+
+ switch (type)
+ {
+ case G_TYPE_BOOLEAN:
+ {
+ g_value_init (ret, G_TYPE_BOOLEAN);
+ g_value_set_boolean (ret, seed_value_to_boolean (ctx,
+ val, exception));
+ return TRUE;
+ }
+ case G_TYPE_INT:
+ case G_TYPE_UINT:
+ {
+ g_value_init (ret, type);
+ if (type == G_TYPE_INT)
+ g_value_set_int (ret, seed_value_to_int (ctx, val, exception));
+ else
+ g_value_set_uint (ret, seed_value_to_uint (ctx, val, exception));
+ return TRUE;
+ }
+ case G_TYPE_CHAR:
+ {
+ g_value_init (ret, G_TYPE_CHAR);
+ g_value_set_char (ret, seed_value_to_char (ctx, val, exception));
+ return TRUE;
+ }
+ case G_TYPE_UCHAR:
+ {
+ g_value_init (ret, G_TYPE_UCHAR);
+ g_value_set_uchar (ret, seed_value_to_uchar (ctx, val, exception));
+ return TRUE;
+ }
+ case G_TYPE_LONG:
+ case G_TYPE_ULONG:
+ case G_TYPE_INT64:
+ case G_TYPE_UINT64:
+ case G_TYPE_FLOAT:
+ case G_TYPE_DOUBLE:
+ {
+ switch (type)
+ {
+ case G_TYPE_LONG:
+ g_value_init (ret, G_TYPE_LONG);
+ g_value_set_long (ret, seed_value_to_long (ctx, val, exception));
+ break;
+ case G_TYPE_ULONG:
+ g_value_init (ret, G_TYPE_ULONG);
+ g_value_set_ulong (ret, seed_value_to_ulong (ctx,
+ val, exception));
+ break;
+ case G_TYPE_INT64:
+ g_value_init (ret, G_TYPE_INT64);
+ g_value_set_int64 (ret, seed_value_to_int64 (ctx,
+ val, exception));
+ break;
+ case G_TYPE_UINT64:
+ g_value_init (ret, G_TYPE_UINT64);
+ g_value_set_uint64 (ret, seed_value_to_uint64 (ctx,
+ val, exception));
+ break;
+ case G_TYPE_FLOAT:
+ g_value_init (ret, G_TYPE_FLOAT);
+ g_value_set_float (ret, seed_value_to_float (ctx,
+ val, exception));
+ break;
+ case G_TYPE_DOUBLE:
+ g_value_init (ret, G_TYPE_DOUBLE);
+ g_value_set_double (ret, seed_value_to_double (ctx,
+ val, exception));
+ break;
+ }
+ return TRUE;
+ }
+ case G_TYPE_STRING:
+ {
+ gchar *cval = seed_value_to_string (ctx, val, exception);
+
+ g_value_init (ret, G_TYPE_STRING);
+ g_value_take_string (ret, cval);
+
+ return TRUE;
+ }
+ default:
+ {
+ // TODO: FIXME: This whole undefined type area
+ // needs some heaaavy improvement.
+
+ // Support [GObject.TYPE_INT, 3]
+ // TODO: FIXME: Might crash.
+ if (type == 0 && JSValueIsObject (ctx, val))
+ {
+ // TODO: FIXME: Better array test like the cool one on reddit.
+ guint length = seed_value_to_int (ctx,
+ seed_object_get_property (ctx,
+ (JSObjectRef) val,
+ "length"),
+ exception);
+
+ if (length)
+ {
+ type =
+ seed_value_to_int (ctx,
+ JSObjectGetPropertyAtIndex (ctx,
+ (JSObjectRef)
+ val, 0,
+ exception),
+ exception);
+ val =
+ JSObjectGetPropertyAtIndex (ctx, (JSObjectRef) val, 1,
+ exception);
+ if (type) // Prevents recursion.
+ {
+ return seed_value_to_gvalue (ctx, val,
+ type, ret, exception);
+ }
+ // TODO: FIXME: Handle better?
+ else
+ g_assert_not_reached ();
+ }
+ }
+ switch (JSValueGetType (ctx, val))
+ {
+ case kJSTypeBoolean:
+ {
+ g_value_init (ret, G_TYPE_BOOLEAN);
+ g_value_set_boolean (ret,
+ seed_value_to_boolean (ctx,
+ val, exception));
+ return TRUE;
+ }
+ case kJSTypeNumber:
+ {
+ g_value_init (ret, G_TYPE_DOUBLE);
+ g_value_set_double (ret,
+ seed_value_to_double (ctx, val, exception));
+ return TRUE;
+ }
+ case kJSTypeString:
+ {
+ gchar *cv = seed_value_to_string (ctx, val,
+ exception);
+
+ g_value_init (ret, G_TYPE_STRING);
+ g_value_take_string (ret, cv);
+ return TRUE;
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+/**
+ * seed_object_get_property
+ * @ctx: A #SeedContext
+ * @object: A #SeedObject
+ * @name: The property to get, should be a valid JavaScript identifier
+ *
+ * Returns: The value of the property or %NULL
+ */
+JSValueRef
+seed_object_get_property (JSContextRef ctx,
+ JSObjectRef val, const gchar * name)
+{
+
+ JSStringRef jname = JSStringCreateWithUTF8CString (name);
+ JSValueRef ret = JSObjectGetProperty (ctx,
+ (JSObjectRef) val,
+ jname, NULL);
+
+ JSStringRelease (jname);
+
+ return ret;
+}
+
+/**
+ * seed_object_set_property
+ * @ctx: A #SeedContext
+ * @object: A #SeedObject
+ * @name: The property to set, should be a valid JavaScript identifier
+ * @value: The value to set the property to.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise.
+ */
+gboolean
+seed_object_set_property (JSContextRef ctx, JSObjectRef object,
+ const gchar * name, JSValueRef value)
+{
+ JSStringRef jname = JSStringCreateWithUTF8CString (name);
+ JSValueRef exception = NULL;
+
+ if (value)
+ {
+ JSObjectSetProperty (ctx, (JSObjectRef) object, jname, value, 0,
+ &exception);
+ }
+
+ JSStringRelease (jname);
+
+ return TRUE;
+}
+
+/* TODO: Make some macros or something for making exceptions, code is littered
+ with annoyingness right now */
+
+/**
+ * seed_value_to_boolean:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gboolean. Keep in mind that this will
+ * not convert a JavaScript number type, only a boolean.
+ *
+ * Return value: The #gboolean represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gboolean
+seed_value_to_boolean (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsBoolean (ctx, val) && !JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ {
+ seed_make_exception (eng->context, exception, "ConversionError",
+ "Can not convert Javascript value to boolean");
+ return FALSE;
+ }
+
+ return FALSE;
+ }
+
+ return JSValueToBoolean (ctx, val);
+}
+
+/**
+ * seed_value_from_boolean:
+ * @ctx: A #SeedContext.
+ * @val: The #gboolean to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gboolean into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_boolean (JSContextRef ctx,
+ gboolean val, JSValueRef * exception)
+{
+ return JSValueMakeBoolean (ctx, val);
+}
+
+/**
+ * seed_value_to_uint:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #guint.
+ *
+ * Return value: The #guint represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+guint
+seed_value_to_uint (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ {
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to"
+ " boolean");
+ }
+ return 0;
+ }
+
+ return (guint) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_uint:
+ * @ctx: A #SeedContext.
+ * @val: The #guint to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #guint into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_uint (JSContextRef ctx, guint val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_int:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gint.
+ *
+ * Return value: The #gint represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gint
+seed_value_to_int (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " int");
+ return 0;
+ }
+
+ return (gint) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_int:
+ * @ctx: A #SeedContext.
+ * @val: The #gint to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gint into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_int (JSContextRef ctx, gint val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_char:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gchar.
+ *
+ * Return value: The #gchar represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gchar
+seed_value_to_char (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ gint cv;
+
+ if (!JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " gchar");
+ return 0;
+ }
+
+ cv = JSValueToNumber (ctx, val, NULL);
+
+ if (cv < G_MININT8 || cv > G_MAXINT8)
+ {
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Javascript number out of range of gchar");
+ return 0;
+ }
+
+ return (gchar) cv;
+}
+
+/**
+ * seed_value_from_char:
+ * @ctx: A #SeedContext.
+ * @val: The #gchar to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gchar into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_char (JSContextRef ctx, gchar val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_uchar:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #guchar.
+ *
+ * Return value: The #guchar represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+guchar
+seed_value_to_uchar (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ guint cv;
+
+ if (!JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " guchar");
+ return 0;
+ }
+
+ cv = JSValueToNumber (ctx, val, NULL);
+
+ if (cv > G_MAXUINT8)
+ {
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Javascript number out of range of guchar");
+ return 0;
+ }
+
+ return (guchar) cv;
+}
+
+/**
+ * seed_value_from_uchar:
+ * @ctx: A #SeedContext.
+ * @val: The #guchar to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #guchar into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_uchar (JSContextRef ctx, guchar val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_short:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gshort.
+ *
+ * Return value: The #gshort represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gshort
+seed_value_to_short (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " short");
+ return 0;
+ }
+
+ return (gshort) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_short:
+ * @ctx: A #SeedContext.
+ * @val: The #gshort to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gshort into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_short (JSContextRef ctx, gshort val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_ushort:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gushort.
+ *
+ * Return value: The #gushort represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gushort
+seed_value_to_ushort (JSContextRef ctx, JSValueRef val,
+ JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " ushort");
+ return 0;
+ }
+
+ return (gushort) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_ushort:
+ * @ctx: A #SeedContext.
+ * @val: The #gushort to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gushort into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_ushort (JSContextRef ctx, gushort val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_long:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #glong.
+ *
+ * Return value: The #glong represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+glong
+seed_value_to_long (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " long");
+ return 0;
+ }
+
+ return (glong) JSValueToNumber (ctx, val, NULL);
+}
+
+ /**
+ * seed_value_from_long:
+ * @ctx: A #SeedContext.
+ * @val: The #glong to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #glong into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_long (JSContextRef ctx, glong val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_ulong:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gulong.
+ *
+ * Return value: The #gulong represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gulong
+seed_value_to_ulong (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " ulong");
+
+ return 0;
+ }
+
+ return (gulong) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_ulong:
+ * @ctx: A #SeedContext.
+ * @val: The #gulong to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gulong into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_ulong (JSContextRef ctx, gulong val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_int64:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gint64.
+ *
+ * Return value: The #gint64 represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gint64
+seed_value_to_int64 (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " gint64");
+
+ return 0;
+ }
+
+ return (gint64) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_int64:
+ * @ctx: A #SeedContext.
+ * @val: The #gint64 to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gint64 into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_int64 (JSContextRef ctx, gint64 val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_uint64:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #guint64.
+ *
+ * Return value: The #guint64 represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+guint64
+seed_value_to_uint64 (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to"
+ " guint64");
+
+ return 0;
+ }
+
+ return (guint64) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_uint64:
+ * @ctx: A #SeedContext.
+ * @val: The #guint64 to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #guint64 into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_uint64 (JSContextRef ctx, guint64 val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_float:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gfloat.
+ *
+ * Return value: The #gfloat represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gfloat
+seed_value_to_float (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " gfloat");
+ return 0;
+ }
+
+ return (gfloat) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_float:
+ * @ctx: A #SeedContext.
+ * @val: The #gfloat to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gfloat into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_float (JSContextRef ctx, gfloat val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_double:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gdouble.
+ *
+ * Return value: The #gdouble represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gdouble
+seed_value_to_double (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " double");
+ return 0;
+ }
+
+ return (gdouble) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_double:
+ * @ctx: A #SeedContext.
+ * @val: The #gdouble to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gdouble into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_double (JSContextRef ctx, gdouble val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_size:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gsize.
+ *
+ * Return value: The #gsize represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gsize
+seed_value_to_size (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " gsize");
+ return 0;
+ }
+
+ return (gsize) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_size:
+ * @ctx: A #SeedContext.
+ * @val: The #gsize to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gsize into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_size (JSContextRef ctx, gsize val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_ssize:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gssize.
+ *
+ * Return value: The #gssize represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gssize
+seed_value_to_ssize (JSContextRef ctx, JSValueRef val, JSValueRef * exception)
+{
+ if (!JSValueIsNumber (ctx, val) && !JSValueIsBoolean (ctx, val))
+ {
+ if (!JSValueIsNull (ctx, val))
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Can not convert Javascript value to" " gssize");
+ return 0;
+ }
+
+ return (gssize) JSValueToNumber (ctx, val, NULL);
+}
+
+/**
+ * seed_value_from_ssize:
+ * @ctx: A #SeedContext.
+ * @val: The #gssize to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gssize into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_ssize (JSContextRef ctx, gssize val, JSValueRef * exception)
+{
+ return JSValueMakeNumber (ctx, (gdouble) val);
+}
+
+/**
+ * seed_value_to_string:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gchar* string. Keep in mind that it's
+ * up to the caller to free the string.
+ *
+ * If the #SeedValue represents JavaScript's undefined value, this returns
+ * "[undefined]"; if it represents JavaScript's null value, this returns
+ * "[null]".
+ *
+ * If the #SeedValue is a number or a boolean, it is printed as a double, with
+ * the printf format string "%.15g".
+ *
+ * If the #SeedValue is an object, the string returned is that obtained by
+ * calling .toString() on said object.
+ *
+ * Return value: The #gchar* represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gchar *
+seed_value_to_string (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ JSStringRef jsstr = NULL;
+ JSValueRef func, str;
+ gchar *buf = NULL;
+ gint length;
+
+ if (val == NULL)
+ return NULL;
+ else if (JSValueIsUndefined (ctx, val))
+ {
+ buf = g_strdup ("[undefined]");
+ }
+ else if (JSValueIsNull (ctx, val))
+ {
+ buf = g_strdup ("[null]");
+ }
+ else if (JSValueIsBoolean (ctx, val) || JSValueIsNumber (ctx, val))
+ {
+ buf = g_strdup_printf ("%.15g", JSValueToNumber (ctx, val, NULL));
+ }
+ else
+ {
+ if (!JSValueIsString (ctx, val)) // In this case,
+ // it's an object
+ {
+ func =
+ seed_object_get_property (ctx, (JSObjectRef) val, "toString");
+ if (!JSValueIsNull (ctx, func) &&
+ JSValueIsObject (ctx, func) &&
+ JSObjectIsFunction (ctx, (JSObjectRef) func))
+ str =
+ JSObjectCallAsFunction (ctx, (JSObjectRef) func,
+ (JSObjectRef) val, 0, NULL, NULL);
+ }
+
+ jsstr = JSValueToStringCopy (ctx, val, NULL);
+ length = JSStringGetMaximumUTF8CStringSize (jsstr);
+ if (length > 0)
+ {
+ buf = g_malloc (length * sizeof (gchar));
+ JSStringGetUTF8CString (jsstr, buf, length);
+ }
+ if (jsstr)
+ JSStringRelease (jsstr);
+ }
+
+ return buf;
+}
+
+/**
+ * seed_value_from_string:
+ * @ctx: A #SeedContext.
+ * @val: The #gchar* to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gchar* string into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_string (JSContextRef ctx,
+ const gchar * val, JSValueRef * exception)
+{
+ if (val == NULL)
+ return JSValueMakeNull (ctx);
+ else
+ {
+ JSStringRef jsstr = JSStringCreateWithUTF8CString (val);
+ JSValueRef valstr = JSValueMakeString (ctx, jsstr);
+ JSStringRelease (jsstr);
+
+ return valstr;
+ }
+}
+
+/**
+ * seed_value_from_binary_string:
+ * @ctx: A #SeedContext.
+ * @bytes: A string of bytes to represent as a string.
+ * @n_bytes: The number of bytes from @bytes to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts a string representation of the given binary string
+ * into a #SeedValue.
+ *
+ * Return value: A #SeedValue which represents @bytes as a string, or %NULL
+ * if an exception is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_binary_string (JSContextRef ctx,
+ const gchar * bytes,
+ gint n_bytes, JSValueRef * exception)
+{
+ JSValueRef ret;
+
+ gchar *nstr = g_alloca ((n_bytes + 1) * sizeof (gchar));
+ g_strlcpy (nstr, bytes, n_bytes);
+ nstr[n_bytes] = '\0';
+
+ ret = seed_value_from_string (ctx, nstr, exception);
+
+ return ret;
+}
+
+/**
+ * seed_value_to_filename:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to convert.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #SeedValue into a #gchar*, properly converting to the
+ * character set used for filenames on the local machine.
+ *
+ * Return value: The #gchar* represented by @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+gchar *
+seed_value_to_filename (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ GError *e = NULL;
+ gchar *utf8 = seed_value_to_string (ctx, val, exception);
+ gchar *filename;
+
+ filename = g_filename_from_utf8 (utf8, -1, NULL, NULL, &e);
+ g_free (utf8);
+ if (e)
+ {
+ seed_make_exception_from_gerror (ctx, exception, e);
+ g_error_free (e);
+ return NULL;
+ }
+
+ return filename;
+}
+
+/**
+ * seed_value_from_filename:
+ * @ctx: A #SeedContext.
+ * @val: The #gchar* filename to represent.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Converts the given #gchar* filename into a #SeedValue, respecting the
+ * character set used for filenames on the local machine.
+ *
+ * Return value: A #SeedValue which represents @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_filename (JSContextRef ctx,
+ const gchar * val, JSValueRef * exception)
+{
+ GError *e = NULL;
+ gchar *utf8;
+
+ if (val == NULL)
+ return JSValueMakeNull (ctx);
+ else
+ {
+ utf8 = g_filename_to_utf8 (val, -1, NULL, NULL, &e);
+
+ if (e)
+ {
+ seed_make_exception_from_gerror (ctx, exception, e);
+ g_error_free (e);
+ return JSValueMakeNull (ctx);
+ }
+
+ JSValueRef valstr = seed_value_from_string (ctx, utf8, exception);
+
+ g_free (utf8);
+
+ return valstr;
+ }
+}
+
+/**
+ * seed_value_to_object:
+ * @ctx: A #SeedContext.
+ * @val: The #SeedValue to unwrap.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Given a #SeedValue which is wrapping a #GObject, retrieve the wrapped
+ * #GObject.
+ *
+ * Return value: The #GObject wrapped within @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+GObject *
+seed_value_to_object (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception)
+{
+ GObject *gobject;
+
+ /*
+ * Worth investigating if this is the best way to handle null. Some of
+ * the existing code depends on null Objects not throwing an exception
+ * however, needs testing at higher level if value can be null
+ * (through GI)
+ */
+
+ if (JSValueIsNull (ctx, val))
+ return NULL;
+ if (!seed_value_is_gobject (ctx, val))
+ {
+ seed_make_exception (ctx, exception, "ConversionError",
+ "Attempt to convert from"
+ " non GObject to GObject");
+ return NULL;
+ }
+
+ gobject = (GObject *) JSObjectGetPrivate ((JSObjectRef) val);
+ g_assert (G_IS_OBJECT (gobject));
+
+ return gobject;
+}
+
+/**
+ * seed_value_from_object:
+ * @ctx: A #SeedContext.
+ * @val: The #GObject to wrap.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Wraps @val in a #SeedValue.
+ *
+ * Return value: A #SeedValue which wraps @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_object (JSContextRef ctx,
+ GObject * val, JSValueRef * exception)
+{
+ if (val == NULL)
+ return JSValueMakeNull (ctx);
+ else
+ return seed_wrap_object (ctx, val);
+}
+
+gboolean
+seed_validate_enum (GIEnumInfo * info, long val)
+{
+ gint n, i;
+ GIValueInfo *value_info;
+ gint value; // TODO: investigate glong/gint mismatch w/ g_value_info_get_value
+
+ n = g_enum_info_get_n_values (info);
+ for (i = 0; i < n; i++)
+ {
+ value_info = g_enum_info_get_value (info, i);
+ value = g_value_info_get_value (value_info);
+
+ g_base_info_unref ((GIBaseInfo *) value_info);
+ if (value == val)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+JSValueRef
+seed_value_from_time_t (JSContextRef ctx, time_t time, JSValueRef * exception)
+{
+ JSValueRef args[1];
+
+ args[0] = seed_value_from_double (ctx, ((gdouble) time) * 1000, exception);
+ return JSObjectMakeDate (ctx, 1, args, exception);
+}
+
+time_t
+seed_value_to_time_t (JSContextRef ctx,
+ JSValueRef value, JSValueRef * exception)
+{
+ JSValueRef get_time_method;
+ JSValueRef jstime;
+ gdouble time;
+
+
+ if (JSValueIsNumber (ctx, value))
+ {
+ return (unsigned long) seed_value_to_long (ctx, value, exception);
+ }
+ else if (JSValueIsObject (ctx, value))
+ {
+ get_time_method = seed_object_get_property (ctx, (JSObjectRef) value,
+ "getTime");
+ if (JSValueIsNull (ctx, get_time_method) ||
+ !JSValueIsObject (ctx, get_time_method))
+ {
+ goto out;
+ }
+ jstime = JSObjectCallAsFunction (ctx,
+ (JSObjectRef) get_time_method,
+ (JSObjectRef) value,
+ 0, NULL, exception);
+ time = seed_value_to_double (ctx, jstime, exception);
+ return (unsigned long) (time / 1000);
+ }
+
+out:
+ seed_make_exception (ctx, exception,
+ "TypeError",
+ "Unable to convert JavaScript value to time_t");
+ return 0;
+}
+
+/**
+ * seed_value_from_strv:
+ * @ctx: A #SeedContext.
+ * @val: The #GStrv to wrap.
+ * @exception: A reference to a #SeedValue in which to store any exceptions.
+ * Pass %NULL to ignore exceptions.
+ *
+ * Wraps @val in a #SeedValue.
+ *
+ * Return value: A #SeedValue which wraps @val, or %NULL if an exception
+ * is raised during the conversion.
+ *
+ */
+JSValueRef
+seed_value_from_strv (JSContextRef ctx,
+ GStrv * val, JSValueRef * exception)
+{
+ GArray *js_string_array = g_array_new (FALSE, FALSE, sizeof(gpointer));
+ for (; *val != NULL; val++)
+ {
+ JSStringRef js_string = JSStringCreateWithUTF8CString((char*)*val);
+ js_string_array = g_array_append_val(js_string_array, js_string);
+ }
+ JSValueRef res = JSObjectMakeArray (ctx,
+ js_string_array->len,
+ (JSValueRef*)js_string_array->data,
+ exception);
+ g_array_free (js_string_array, FALSE);
+
+ return res;
+}
diff --git a/libseed/seed-types.h b/libseed/seed-types.h
new file mode 100644
index 0000000..322a10a
--- /dev/null
+++ b/libseed/seed-types.h
@@ -0,0 +1,159 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#ifndef _SEED_TYPES_H
+#define _SEED_TYPES_H
+
+#include "seed-private.h"
+
+extern GQuark js_ref_quark;
+
+JSValueRef seed_value_from_gvalue (JSContextRef ctx,
+ GValue * gval, JSValueRef * exception);
+
+gboolean seed_value_to_gvalue (JSContextRef ctx,
+ JSValueRef val, GType type,
+ GValue * gval, JSValueRef * exception);
+
+JSValueRef seed_object_get_property (JSContextRef ctx,
+ JSObjectRef val, const gchar * name);
+
+gboolean seed_object_set_property (JSContextRef ctx, JSObjectRef object,
+ const gchar * name, JSValueRef value);
+
+gboolean seed_value_to_gi_argument (JSContextRef ctx,
+ JSValueRef value,
+ GITypeInfo * type_info,
+ GArgument * arg, JSValueRef * exception);
+
+JSValueRef seed_value_from_gi_argument (JSContextRef ctx,
+ GArgument * arg,
+ GITypeInfo * type_info,
+ JSValueRef * exception);
+
+gboolean seed_gi_release_arg (GITransfer transfer,
+ GITypeInfo * type_info, GArgument * arg);
+
+gboolean seed_gi_release_in_arg (GITransfer transfer,
+ GITypeInfo * type_info, GArgument * arg);
+
+gboolean seed_value_to_boolean (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+
+JSValueRef seed_value_from_boolean (JSContextRef ctx,
+ gboolean val, JSValueRef * exception);
+
+guint seed_value_to_uint (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+
+JSValueRef seed_value_from_uint (JSContextRef ctx,
+ guint val, JSValueRef * exception);
+
+gint seed_value_to_int (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+
+JSValueRef seed_value_from_int (JSContextRef ctx,
+ gint val, JSValueRef * exception);
+
+gchar seed_value_to_char (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_char (JSContextRef ctx,
+ gchar val, JSValueRef * exception);
+
+guchar seed_value_to_uchar (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_uchar (JSContextRef ctx,
+ guchar val, JSValueRef * exception);
+
+glong seed_value_to_long (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_long (JSContextRef ctx,
+ glong val, JSValueRef * exception);
+
+gulong seed_value_to_ulong (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_ulong (JSContextRef ctx,
+ gulong val, JSValueRef * exception);
+
+gint64 seed_value_to_int64 (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_int64 (JSContextRef ctx,
+ gint64 val, JSValueRef * exception);
+
+guint64 seed_value_to_uint64 (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_uint64 (JSContextRef ctx,
+ guint64 val, JSValueRef * exception);
+
+gfloat seed_value_to_float (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_float (JSContextRef ctx,
+ gfloat val, JSValueRef * exception);
+
+gdouble seed_value_to_double (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_double (JSContextRef ctx,
+ gdouble val, JSValueRef * exception);
+
+gsize seed_value_to_size (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_size (JSContextRef ctx,
+ gsize val, JSValueRef * exception);
+
+gssize seed_value_to_ssize (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_ssize (JSContextRef ctx,
+ gssize val, JSValueRef * exception);
+
+gchar *seed_value_to_filename (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_filename (JSContextRef ctx,
+ const gchar * filename,
+ JSValueRef * exception);
+
+gchar *seed_value_to_string (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+
+JSValueRef seed_value_from_string (JSContextRef ctx,
+ const gchar * val, JSValueRef * exception);
+
+time_t seed_value_to_time_t (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+
+JSValueRef seed_value_from_time_t (JSContextRef ctx,
+ time_t time, JSValueRef * exception);
+
+GObject *seed_value_to_object (JSContextRef ctx,
+ JSValueRef val, JSValueRef * exception);
+JSValueRef seed_value_from_object (JSContextRef ctx,
+ GObject * val, JSValueRef * exception);
+JSValueRef seed_value_from_strv (JSContextRef ctx,
+ GStrv * val, JSValueRef * exception);
+void seed_toggle_ref (gpointer data, GObject * object, gboolean is_last_ref);
+
+gboolean seed_validate_enum (GIEnumInfo * info, long val);
+
+JSValueRef
+seed_value_from_binary_string (JSContextRef ctx,
+ const gchar * bytes,
+ gint n_bytes, JSValueRef * exception);
+
+JSObjectRef seed_make_wrapper_for_type (JSContextRef ctx, GType type);
+
+#endif
diff --git a/libseed/seed.h b/libseed/seed.h
new file mode 100644
index 0000000..c722b95
--- /dev/null
+++ b/libseed/seed.h
@@ -0,0 +1,468 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <girepository.h>
+
+#ifndef _SEED_H
+#define _SEED_H
+
+G_BEGIN_DECLS
+
+typedef gpointer SeedString;
+typedef gpointer SeedValue;
+typedef gpointer SeedObject;
+typedef gpointer SeedClass;
+typedef gpointer SeedException;
+
+typedef gpointer SeedContext;
+typedef gpointer SeedGlobalContext;
+typedef gpointer SeedContextGroup;
+
+typedef enum
+{
+ SEED_TYPE_UNDEFINED,
+ SEED_TYPE_NULL,
+ SEED_TYPE_BOOLEAN,
+ SEED_TYPE_NUMBER,
+ SEED_TYPE_STRING,
+ SEED_TYPE_OBJECT
+} SeedType;
+
+typedef enum
+{
+ SEED_PROPERTY_ATTRIBUTE_NONE = 0,
+ SEED_PROPERTY_ATTRIBUTE_READ_ONLY = 1 << 1,
+ SEED_PROPERTY_ATTRIBUTE_DONT_ENUM = 1 << 2,
+ SEED_PROPERTY_ATTRIBUTE_DONT_DELETE = 1 << 3
+} SeedPropertyAttributes;
+
+typedef enum
+{
+ SEED_CLASS_ATTRIBUTE_NONE = 0,
+ SEED_CLASS_ATTRIBUTE_NO_SHARED_PROTOTYPE = 1 << 1
+} SeedClassAttributes;
+
+typedef struct _SeedScript SeedScript;
+
+typedef struct _SeedEngine
+{
+ SeedGlobalContext context;
+ SeedValue global;
+ gchar **search_path;
+
+ SeedContextGroup group;
+} SeedEngine;
+
+/*
+ * seed-engine.c
+ */
+SeedEngine *seed_init (gint *argc, gchar ***argv);
+SeedEngine *
+seed_init_with_context (gint * argc, gchar *** argv, SeedGlobalContext context);
+
+SeedEngine *seed_init_with_context_group (gint *argc, gchar ***argv,
+ SeedContextGroup group);
+SeedEngine *seed_init_with_context_and_group (gint * argc,gchar *** argv,
+ SeedGlobalContext context, SeedContextGroup group);
+SeedEngine *seed_init_constrained (gint * argc, gchar *** argv);
+SeedEngine *seed_init_constrained_with_context_and_group (gint * argc,
+ gchar *** argv,
+ SeedGlobalContext context,
+ SeedContextGroup group);
+void seed_engine_destroy (SeedEngine *eng);
+
+SeedValue seed_simple_evaluate (SeedContext ctx,
+ gchar * source,
+ SeedException *exception);
+
+SeedScript *seed_make_script (SeedContext ctx,
+ const gchar * js,
+ const gchar * source_url,
+ gint line_number);
+SeedScript *seed_script_new_from_file (SeedContext ctx, gchar * file);
+SeedException seed_script_exception (SeedScript * s);
+void seed_script_destroy (SeedScript *s);
+void seed_make_exception (SeedContext ctx, SeedException exception,
+ const gchar * name, const gchar * message, ...) G_GNUC_PRINTF (4,5);
+gchar *seed_exception_get_name (SeedContext ctx, SeedException exception);
+gchar *seed_exception_get_message (SeedContext ctx, SeedException exception);
+guint seed_exception_get_line (SeedContext ctx, SeedException exception);
+gchar *seed_exception_get_file (SeedContext ctx, SeedException exception);
+gchar *seed_exception_to_string (SeedContext ctx, SeedException exception);
+
+SeedValue seed_evaluate (SeedContext ctx, SeedScript * s, SeedObject this_object);
+
+SeedValue
+seed_engine_expose_gobject (SeedEngine *engine, gchar *js_name, GObject *object, gchar *gir_namespace, SeedException exception);
+SeedValue
+seed_engine_expose_namespace (SeedEngine *engine, gchar *namespace_name, SeedException exception);
+GOptionGroup * seed_get_option_group (void);
+
+/*
+ * seed-api.c
+ */
+
+SeedGlobalContext seed_context_create (SeedContextGroup group,
+ SeedClass global_class);
+SeedGlobalContext seed_context_ref (SeedGlobalContext ctx);
+void seed_context_unref (SeedGlobalContext ctx);
+void seed_context_collect (SeedGlobalContext ctx);
+
+SeedObject seed_context_get_global_object (SeedContext ctx);
+
+void seed_importer_add_global(SeedContext ctx, gchar *name);
+void seed_importer_set_search_path (SeedContext ctx,
+ gchar **search_path);
+void seed_prepare_global_context (SeedContext ctx);
+
+
+
+SeedValue seed_make_null (SeedContext ctx);
+SeedValue seed_make_undefined (SeedContext ctx);
+
+SeedString seed_string_ref (SeedString string);
+void seed_string_unref (SeedString string);
+
+gsize seed_string_get_maximum_size (SeedString string);
+gsize seed_string_to_utf8_buffer (SeedString string, gchar * buffer,
+ size_t buffer_size);
+
+gboolean seed_string_is_equal (SeedString a, SeedString b);
+gboolean seed_string_is_equal_utf8 (SeedString a, const gchar * b);
+
+gboolean seed_value_is_null (SeedContext ctx, SeedValue value);
+gboolean seed_value_is_undefined (SeedContext ctx, SeedValue value);
+gboolean seed_value_is_object (SeedContext ctx, SeedValue value);
+gboolean seed_value_is_object_of_class (SeedContext ctx, SeedValue value, SeedClass klass);
+gboolean seed_value_is_function (SeedContext ctx, SeedObject value);
+gboolean seed_value_is_string (SeedContext ctx, SeedValue value);
+gboolean seed_value_is_number (SeedContext ctx, SeedValue value);
+
+void seed_value_unprotect (SeedContext ctx, SeedValue value);
+void seed_value_protect (SeedContext ctx, SeedValue value);
+
+gboolean seed_value_to_gvalue (SeedContext ctx,
+ SeedValue val, GType type,
+ GValue * gval, SeedException * exception);
+
+SeedValue seed_value_from_gvalue (SeedContext ctx,
+ GValue * gval, SeedException * exception);
+
+gboolean seed_value_to_gi_argument (SeedContext ctx,
+ SeedValue value,
+ GITypeInfo * type_info,
+ GArgument * arg, SeedValue * exception);
+
+SeedValue seed_value_from_gi_argument (SeedContext ctx,
+ GArgument * arg,
+ GITypeInfo * type_info,
+ SeedException * exception);
+
+gboolean seed_value_to_boolean (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+
+SeedValue seed_value_from_boolean (SeedContext ctx,
+ gboolean val, SeedException * exception);
+
+guint seed_value_to_uint (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+
+SeedValue seed_value_from_uint (SeedContext ctx,
+ guint val, SeedException * exception);
+
+gint seed_value_to_int (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+
+SeedValue seed_value_from_int (SeedContext ctx,
+ gint val, SeedException * exception);
+
+gchar seed_value_to_char (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_char (SeedContext ctx,
+ gchar val, SeedException * exception);
+
+guchar seed_value_to_uchar (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_uchar (SeedContext ctx,
+ guchar val, SeedException * exception);
+
+glong seed_value_to_long (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_long (SeedContext ctx,
+ glong val, SeedException * exception);
+
+gulong seed_value_to_ulong (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_ulong (SeedContext ctx,
+ gulong val, SeedException * exception);
+
+gint64 seed_value_to_int64 (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_int64 (SeedContext ctx,
+ gint64 val, SeedException * exception);
+
+guint64 seed_value_to_uint64 (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_uint64 (SeedContext ctx,
+ guint64 val, SeedException * exception);
+
+gfloat seed_value_to_float (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_float (SeedContext ctx,
+ gfloat val, SeedException * exception);
+
+gdouble seed_value_to_double (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_double (SeedContext ctx,
+ gdouble val, SeedException * exception);
+
+gchar *seed_value_to_string (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_string (SeedContext ctx,
+ const gchar * val, SeedException * exception);
+
+gchar *seed_value_to_filename (SeedContext ctx,
+ SeedValue val, SeedValue *exception);
+SeedValue seed_value_from_filename (SeedContext ctx,
+ SeedValue val, SeedValue *exception);
+
+SeedValue seed_value_from_binary_string (SeedContext ctx,
+ const gchar *bytes,
+ gint n_bytes,
+ SeedException *exception);
+
+SeedType seed_value_get_type (SeedContext ctx, SeedValue value);
+
+gboolean
+seed_value_to_format (SeedContext ctx,
+ const gchar *format,
+ SeedValue *values,
+ SeedValue *exception,
+ ...);
+
+typedef SeedObject (*SeedModuleInitCallback) (SeedEngine * eng);
+
+gboolean seed_object_set_property (SeedContext ctx,
+ SeedObject object,
+ const gchar * name, SeedValue value);
+SeedValue seed_object_get_property (SeedContext ctx,
+ SeedObject object, const gchar * name);
+
+void seed_object_set_property_at_index (SeedContext ctx,
+ SeedObject object,
+ gint index,
+ SeedValue value,
+ SeedException * exception);
+
+SeedValue seed_object_get_property_at_index (SeedContext ctx,
+ SeedObject object,
+ gint index,
+ SeedException *exception);
+
+SeedValue seed_object_call (SeedContext ctx,
+ SeedObject object,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception);
+
+GObject *seed_value_to_object (SeedContext ctx,
+ SeedValue val, SeedException * exception);
+SeedValue seed_value_from_object (SeedContext ctx,
+ GObject * val, SeedException * exception);
+
+SeedObject seed_make_object (SeedContext ctx, SeedClass klass,
+ gpointer private_object);
+
+gpointer seed_object_get_private (SeedObject object);
+void seed_object_set_private (SeedObject object, gpointer value);
+
+gchar **seed_object_copy_property_names(SeedContext ctx, SeedObject object);
+
+gpointer seed_pointer_get_pointer (SeedContext ctx, SeedValue pointer);
+
+SeedObject
+seed_object_get_prototype (SeedContext ctx, SeedObject obj);
+
+gboolean
+seed_object_is_of_class (SeedContext ctx, SeedObject obj, SeedClass klass);
+
+SeedValue seed_make_pointer (SeedContext ctx, gpointer pointer);
+
+typedef SeedValue (*SeedFunctionCallback) (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception);
+
+void seed_create_function (SeedContext ctx,
+ gchar * name, SeedFunctionCallback func,
+ SeedObject obj);
+SeedObject seed_make_function (SeedContext ctx, SeedFunctionCallback func, const gchar *name);
+
+
+SeedObject seed_make_array (SeedContext ctx, const SeedValue elements,
+ gsize num_elements, SeedException *exception);
+
+
+
+typedef void (*SeedObjectInitializeCallback) (SeedContext ctx,
+ SeedObject object);
+
+/* Using any functions that require a context from
+ *this callback has undefined results */
+typedef void (*SeedObjectFinalizeCallback) (SeedObject object);
+
+typedef gboolean (*SeedObjectHasPropertyCallback) (SeedContext ctx,
+ SeedObject object,
+ SeedString string);
+typedef SeedValue (*SeedObjectGetPropertyCallback) (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException * e);
+typedef gboolean (*SeedObjectSetPropertyCallback) (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException * e);
+typedef gboolean (*SeedObjectDeletePropertyCallback) (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException * e);
+/* TODO: Have to decide on accumulator API
+//typedef void (*SeedObjectGetPropertyNamesCallback) (SeedContext ctx, */
+
+typedef void (*SeedObjectGetPropertyNamesCallback) (void);
+
+typedef SeedValue (*SeedObjectCallAsFunctionCallback) (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue
+ arguments[],
+ SeedException *
+ exception);
+typedef SeedValue (*SeedObjectCallAsConstructorCallback) (SeedContext ctx,
+ SeedObject
+ constructor,
+ gsize
+ argument_count,
+ const SeedValue
+ arguments[],
+ SeedException *
+ exception);
+
+typedef gboolean (*SeedObjectHasInstanceCallback) (SeedContext ctx,
+ SeedObject constructor,
+ SeedObject instance_p,
+ SeedException * exception);
+
+typedef SeedValue (*SeedObjectConvertToTypeCallback) (SeedContext ctx,
+ SeedObject object,
+ SeedType type,
+ SeedException *
+ exception);
+
+typedef struct _seed_static_value
+{
+ const gchar *const name;
+ SeedObjectGetPropertyCallback get_property;
+ SeedObjectSetPropertyCallback set_property;
+ SeedPropertyAttributes attributes;
+} seed_static_value;
+
+typedef struct _seed_static_function
+{
+ const gchar *const name;
+ SeedObjectCallAsFunctionCallback callback;
+ SeedPropertyAttributes attributes;
+} seed_static_function;
+
+typedef struct _seed_class_definition
+{
+ int version; /* Always 0 */
+ SeedClassAttributes attributes;
+
+ const gchar *class_name;
+ SeedClass parent_class;
+
+ const seed_static_value *static_values;
+ const seed_static_function *static_functions;
+
+ SeedObjectInitializeCallback initialize;
+ SeedObjectFinalizeCallback finalize;
+ SeedObjectHasPropertyCallback has_property;
+ SeedObjectGetPropertyCallback get_property;
+ SeedObjectSetPropertyCallback set_property;
+ SeedObjectDeletePropertyCallback delete_property;
+ SeedObjectGetPropertyNamesCallback get_property_names;
+ SeedObjectCallAsFunctionCallback call_as_function;
+ SeedObjectCallAsConstructorCallback call_as_constructor;
+ SeedObjectHasInstanceCallback has_instance;
+ SeedObjectConvertToTypeCallback convert_to_type;
+} seed_class_definition;
+
+#define seed_empty_class { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
+
+SeedClass seed_create_class (seed_class_definition * def);
+
+SeedObject seed_make_constructor (SeedContext ctx,
+ SeedClass klass,
+ SeedObjectCallAsConstructorCallback constructor);
+
+void seed_engine_set_search_path (SeedEngine * eng, const gchar * path);
+gchar **seed_engine_get_search_path (SeedEngine * eng);
+
+void
+seed_signal_connect (SeedContext ctx,
+ GObject *object,
+ const gchar *signal,
+ const gchar *script);
+
+void
+seed_signal_connect_value (SeedContext ctx,
+ GObject *object,
+ const gchar *signal,
+ SeedValue function,
+ SeedValue user_data);
+
+GClosure *seed_closure_new (SeedContext ctx,
+ SeedObject function,
+ SeedObject user_data,
+ const gchar *description);
+
+
+SeedObject
+seed_closure_get_callable (GClosure *c);
+
+SeedValue
+seed_closure_invoke (GClosure *closure, SeedValue *args, guint argc, SeedException *exception);
+
+SeedValue
+seed_closure_invoke_with_context (SeedContext ctx, GClosure *closure, SeedValue *args, guint argc, SeedException *exception);
+
+void
+seed_closure_warn_exception (GClosure *c, SeedContext ctx, SeedException exception);
+
+G_END_DECLS
+
+#endif
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100755
index 0000000..b4a3231
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,9642 @@
+
+# libtool (GNU libtool) 2.4
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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.
+
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [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
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --no-quiet, --no-silent
+# print informational messages (default)
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print more informational messages than default
+# --no-verbose don't print the extra informational messages
+# --version print version information
+# -h, --help, --help-all print short, long, or detailed help message
+#
+# 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. When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.4 Debian-2.4-2ubuntu1
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4 Debian-2.4-2ubuntu1"
+TIMESTAMP=""
+package_revision=1.3293
+
+# 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+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# 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"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+ s@/\./@/@g
+ t dotsl
+ s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+# value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
+ ;;
+ *)
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
+ esac
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test "$func_normal_abspath_tpath" = / ; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result" ; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+# value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=${func_dirname_result}
+ if test "x$func_relative_path_tlibdir" = x ; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test "x$func_stripname_result" != x ; then
+ func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+ fi
+
+ # Normalisation. If bindir is libdir, return empty string,
+ # else relative path ending with a slash; either way, target
+ # file name can be directly appended.
+ if test ! -z "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result/"
+ func_relative_path_result=$func_stripname_result
+ fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=:
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+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 that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# 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 "$opt_dry_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" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "$1" | $SED \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result. All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $opt_debug
+
+ $SED -n '/(C)/!b go
+ :more
+ /\./!{
+ N
+ s/\n# / /
+ b more
+ }
+ :go
+ /^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/^# *.*--help/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ echo
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ :print
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+ d
+ }
+ /^# .* home page:/b print
+ /^# General help using/b print
+ ' < "$progpath"
+ ret=$?
+ if test -z "$1"; then
+ exit $ret
+ fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ $opt_debug
+
+ func_error "missing argument for $1."
+ exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+ my_sed_long_arg='1s/^--[^=]*=//'
+
+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# 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=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+ func_quote_for_eval "${2}"
+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_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 $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly. This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+ # this just eases exit handling
+ while test $# -gt 0; do
+ opt="$1"
+ shift
+ case $opt in
+ --debug|-x) opt_debug='set -x'
+ func_echo "enabling shell trace mode"
+ $opt_debug
+ ;;
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+ --config)
+ opt_config=:
+func_config
+ ;;
+ --dlopen|-dlopen)
+ optarg="$1"
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+ shift
+ ;;
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=:
+ ;;
+ --features)
+ opt_features=:
+func_features
+ ;;
+ --finish)
+ opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ --help)
+ opt_help=:
+ ;;
+ --help-all)
+ opt_help_all=:
+opt_help=': help-all'
+ ;;
+ --mode)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_mode="$optarg"
+case $optarg in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+esac
+ shift
+ ;;
+ --no-silent|--no-quiet)
+ opt_silent=false
+func_append preserve_args " $opt"
+ ;;
+ --no-verbose)
+ opt_verbose=false
+func_append preserve_args " $opt"
+ ;;
+ --silent|--quiet)
+ opt_silent=:
+func_append preserve_args " $opt"
+ opt_verbose=false
+ ;;
+ --verbose|-v)
+ opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+ ;;
+ --tag)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+ --version) func_version ;;
+
+ # Separate optargs to long options:
+ --*=*)
+ func_split_long_opt "$opt"
+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-n*|-v*)
+ func_split_short_opt "$opt"
+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # Validate options:
+
+ # save first non-option argument
+ if test "$#" -gt 0; then
+ nonopt="$opt"
+ shift
+ fi
+
+ # preserve --debug
+ test "$opt_debug" = : || func_append preserve_args " --debug"
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$opt_mode' for more information."
+ }
+
+
+ # Bail if the options were screwed
+ $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE 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.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot. Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+ func_resolve_sysroot_result=$1
+ case $func_resolve_sysroot_result in
+ =*)
+ func_stripname '=' '' "$func_resolve_sysroot_result"
+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+ ;;
+ esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+ case "$lt_sysroot:$1" in
+ ?*:"$lt_sysroot"*)
+ func_stripname "$lt_sysroot" '' "$1"
+ func_replace_sysroot_result="=$func_stripname_result"
+ ;;
+ *)
+ # Including no sysroot.
+ func_replace_sysroot_result=$1
+ ;;
+ esac
+}
+
+# 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 ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ 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 "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+ # 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.
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case "$@ " in
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+ # 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
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+ $opt_debug
+ func_convert_core_file_wine_to_w32_result="$1"
+ if test -n "$1"; then
+ # Unfortunately, winepath does not exit with a non-zero error code, so we
+ # are forced to check the contents of stdout. On the other hand, if the
+ # command is not found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both error code of
+ # zero AND non-empty stdout, which explains the odd construction:
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ func_convert_core_file_wine_to_w32_result=
+ fi
+ fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+ $opt_debug
+ # unfortunately, winepath doesn't convert paths, only file names
+ func_convert_core_path_wine_to_w32_result=""
+ if test -n "$1"; then
+ oldIFS=$IFS
+ IFS=:
+ for func_convert_core_path_wine_to_w32_f in $1; do
+ IFS=$oldIFS
+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+ if test -z "$func_convert_core_path_wine_to_w32_result"; then
+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+ else
+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+ fi
+ fi
+ done
+ IFS=$oldIFS
+ fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+ $opt_debug
+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+ if test "$?" -ne 0; then
+ # on failure, ensure result is empty
+ func_cygpath_result=
+ fi
+ else
+ func_cygpath_result=
+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format. Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+ $opt_debug
+ # awkward: cmd appends spaces to result
+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+ $opt_debug
+ if test -z "$2" && test -n "$1" ; then
+ func_error "Could not determine host file name corresponding to"
+ func_error " \`$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_file_result="$1"
+ fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+ $opt_debug
+ if test -z "$4" && test -n "$3"; then
+ func_error "Could not determine the host path corresponding to"
+ func_error " \`$3'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This is a deliberately simplistic "conversion" and
+ # should not be "improved". See libtool.info.
+ if test "x$1" != "x$2"; then
+ lt_replace_pathsep_chars="s|$1|$2|g"
+ func_to_host_path_result=`echo "$3" |
+ $SED -e "$lt_replace_pathsep_chars"`
+ else
+ func_to_host_path_result="$3"
+ fi
+ fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+ $opt_debug
+ case $4 in
+ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ ;;
+ esac
+ case $4 in
+ $2 ) func_append func_to_host_path_result "$3"
+ ;;
+ esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+ $opt_debug
+ $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result. If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+ $opt_debug
+ case ,$2, in
+ *,"$to_tool_file_cmd",*)
+ func_to_tool_file_result=$1
+ ;;
+ *)
+ $to_tool_file_cmd "$1"
+ func_to_tool_file_result=$func_to_host_file_result
+ ;;
+ esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+ func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+ # LT_CYGPATH in this case.
+ func_to_host_file_result=`cygpath -m "$1"`
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format. Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_file_wine_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+ func_convert_core_file_wine_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format. If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+# file name conversion function : func_convert_file_X_to_Y ()
+# path conversion function : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same. If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+ $opt_debug
+ if test -z "$to_host_path_cmd"; then
+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+ to_host_path_cmd="func_convert_path_${func_stripname_result}"
+ fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+ $opt_debug
+ func_init_to_host_path_cmd
+ $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+ func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from ARG. MSYS
+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+ # and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format. Requires a wine environment and
+# a working winepath. Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # 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=
+ pie_flag=
+
+ 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)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ func_append 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,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_append_quoted lastarg "$arg"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ func_append 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.
+ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # 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
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ 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 "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ 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 $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "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."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # 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
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ 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."
+
+ $opt_dry_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
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ 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$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ 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."
+
+ $opt_dry_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
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [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: $progname [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
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to build PIC objects only
+ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+
+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: $progname [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: $progname [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: $progname [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 following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [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
+ -bindir BINDIR specify path to binaries directory (for systems where
+ libraries must be found in the PATH setting at runtime)
+ -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
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+ -Wc,FLAG
+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
+ -Wl,FLAG
+ -Xlinker FLAG pass linker-specific FLAG directly to the linker
+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
+
+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: $progname [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."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+ ;;
+ esac
+
+ echo
+ $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+ if test "$opt_help" = :; then
+ func_mode_help
+ else
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | sed -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+ } |
+ sed '1d
+ /^When reporting/,/^Report/{
+ H
+ d
+ }
+ $x
+ /information about other modes/d
+ /more detailed .*MODE/d
+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+ fi
+ exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ 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
+ -* | *.la | *.lo ) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_append_quoted args "$file"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # 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
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libs=
+ libdirs=
+ admincmds=
+
+ for opt in "$nonopt" ${1+"$@"}
+ do
+ if test -d "$opt"; then
+ func_append libdirs " $opt"
+
+ elif test -f "$opt"; then
+ if func_lalib_unsafe_p "$opt"; then
+ func_append libs " $opt"
+ else
+ func_warning "\`$opt' is not a valid libtool archive"
+ fi
+
+ else
+ func_fatal_error "invalid argument \`$opt'"
+ fi
+ done
+
+ if test -n "$libs"; then
+ if test -n "$lt_sysroot"; then
+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+ else
+ sysroot_cmd=
+ fi
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+ done
+ else
+ tmpdir=`func_mktempdir`
+ for lib in $libs; do
+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ > $tmpdir/tmp-la
+ mv -f $tmpdir/tmp-la $lib
+ done
+ ${RM}r "$tmpdir"
+ fi
+ fi
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ echo "----------------------------------------------------------------------"
+ 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"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ echo "pages."
+ ;;
+ *)
+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ echo "----------------------------------------------------------------------"
+ fi
+ exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # 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.
+ case $nonopt in *shtool*) :;; *) false;; esac; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+ *) install_cp=false ;;
+ esac
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ no_mode=:
+ for arg
+ do
+ arg2=
+ if test -n "$dest"; then
+ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ if $install_cp; then :; else
+ prev=$arg
+ fi
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ if test "x$prev" = x-m && test -n "$install_override_mode"; then
+ arg2=$install_override_mode
+ no_mode=false
+ fi
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ 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.
+ func_append staticlibs " $file"
+ ;;
+
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ func_append 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 -e "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.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ 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
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_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
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && func_append 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
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_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
+ func_basename "$file"
+ destfile="$func_basename_result"
+ 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
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "$file$stripped_ext" | $SED "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)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ # if an import library, we need to obtain dlname
+ if func_win32_import_lib_p "$dlprefile"; then
+ func_tr_sh "$dlprefile"
+ eval "curr_lafile=\$libfile_$func_tr_sh_result"
+ dlprefile_dlbasename=""
+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+ # Use subshell, to avoid clobbering current variable values
+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+ if test -n "$dlprefile_dlname" ; then
+ func_basename "$dlprefile_dlname"
+ dlprefile_dlbasename="$func_basename_result"
+ else
+ # no lafile. user explicitly requested -dlpreopen <import library>.
+ $sharedlib_from_linklib_cmd "$dlprefile"
+ dlprefile_dlbasename=$sharedlib_from_linklib_result
+ fi
+ fi
+ $opt_dry_run || {
+ if test -n "$dlprefile_dlbasename" ; then
+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+ else
+ func_warning "Could not compute DLL name from $name"
+ eval '$ECHO ": $name " >> "$nlist"'
+ fi
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+ }
+ else # not an import lib
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ fi
+ ;;
+ *)
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ ;;
+ esac
+ done
+
+ $opt_dry_run || {
+ # 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/$my_dlsyms"'
+ else
+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ 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*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ 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 "$compile_command" | $SED "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+ fi
+}
+
+# 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.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+ $opt_debug
+ 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
+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $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_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+ $opt_debug
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+ $opt_debug
+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+ $SED '/^Contents of section '"$match_literal"':/{
+ # Place marker at beginning of archive member dllname section
+ s/.*/====MARK====/
+ p
+ d
+ }
+ # These lines can sometimes be longer than 43 characters, but
+ # are always uninteresting
+ /:[ ]*file format pe[i]\{,1\}-/d
+ /^In archive [^:]*:/d
+ # Ensure marker is printed
+ /^====MARK====/p
+ # Remove all lines with less than 43 characters
+ /^.\{43\}/!d
+ # From remaining lines, remove first 43 characters
+ s/^.\{43\}//' |
+ $SED -n '
+ # Join marker and all lines until next marker into a single line
+ /^====MARK====/ b para
+ H
+ $ b para
+ b
+ :para
+ x
+ s/\n//g
+ # Remove the marker
+ s/^====MARK====//
+ # Remove trailing dots and whitespace
+ s/[\. \t]*$//
+ # Print
+ /./p' |
+ # we now have a list, one entry per line, of the stringified
+ # contents of the appropriate section of all members of the
+ # archive which possess that section. Heuristic: eliminate
+ # all those which have a first or second character that is
+ # a '.' (that is, objdump's representation of an unprintable
+ # character.) This should work for all archives with less than
+ # 0x302f exports -- but will fail for DLLs whose name actually
+ # begins with a literal '.' or a single character followed by
+ # a '.'.
+ #
+ # Of those that remain, print the first one.
+ $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+ $opt_debug
+ if func_cygming_gnu_implib_p "$1" ; then
+ # binutils import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+ elif func_cygming_ms_implib_p "$1" ; then
+ # ms-generated import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+ else
+ # unknown
+ sharedlib_from_linklib_result=""
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ if test "$lock_old_archive_extraction" = yes; then
+ lockfile=$f_ex_an_ar_oldlib.lock
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ fi
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+ 'stat=$?; rm -f "$lockfile"; exit $stat'
+ if test "$lock_old_archive_extraction" = yes; then
+ $opt_dry_run || rm -f "$lockfile"
+ fi
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ 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
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_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've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=${1-no}
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# 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.
+sed_quote_subst='$sed_quote_subst'
+
+# 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+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# 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 variables:
+ generated_by_libtool_version='$macro_version'
+ 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
+ file=\"\$0\""
+
+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+ $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+ ECHO=\"$qECHO\"
+ fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+ lt_script_arg0=\$0
+ shift
+ for lt_opt
+ do
+ case \"\$lt_opt\" in
+ --lt-debug) lt_option_debug=1 ;;
+ --lt-dump-script)
+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+ cat \"\$lt_dump_D/\$lt_dump_F\"
+ exit 0
+ ;;
+ --lt-*)
+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+
+ # Print the debug banner immediately:
+ if test -n \"\$lt_option_debug\"; then
+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+ fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+ lt_dump_args_N=1;
+ for lt_arg
+ do
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+ done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done
+ func_exec_program_core \${1+\"\$@\"}
+}
+
+ # Parse options
+ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED '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 \"\$file\" | $SED '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 \"\$file\" | $SED 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ 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 "\
+
+ # 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 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # fixup the dll searchpath if we need to.
+ #
+ # Fix the DLL searchpath if we need to. Do this before prepending
+ # to shlibpath, because on Windows, both are PATH and uninstalled
+ # libraries must come first.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # 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 \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+ func_exec_program \${1+\"\$@\"}
+ 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 1
+ fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ 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.
+*/
+EOF
+ cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+# define _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#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
+# define FOPEN_WB "wb"
+# 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 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+ cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_path "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ newargz = XMALLOC (char *, argc + 1);
+
+ /* very simple arg parsing; don't want to rely on getopt
+ * also, copy all non cwrapper options to newargz, except
+ * argz[0], which is handled differently
+ */
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ lt_dump_script (stdout);
+ return 0;
+ }
+ if (strcmp (argv[i], debug_opt) == 0)
+ {
+ lt_debug = 1;
+ continue;
+ }
+ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal (__FILE__, __LINE__,
+ "unrecognized %s option: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+EOF
+ cat <<EOF
+ /* The GNU banner must be the first non-error debug message */
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+ cat <<"EOF"
+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (before symlink chase) at: %s\n",
+ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (after symlink chase) at: %s\n",
+ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) libtool target name: %s\n",
+ target_name);
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+ because on Windows, both *_VARNAMEs are PATH but uninstalled
+ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+ i, nonnull (newargz[i]));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ newargz = prepare_spawn (newargz);
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) failed to launch target \"%s\": %s\n",
+ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal (__FILE__, __LINE__, "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;
+
+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+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;
+
+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+ nonempty (wrapper));
+
+ 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 (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ 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 (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ 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 *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ lt_debugprintf (__FILE__, __LINE__,
+ "checking path component for symlinks: %s\n",
+ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "error accessing file \"%s\": %s",
+ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+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;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+ va_list args;
+ if (lt_debug)
+ {
+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+ }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+ int line, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+ return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+ return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_setenv) setting '%s' to '%s'\n",
+ nonnull (name), nonnull (value));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+EOF
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+ Note that spawn() does not by itself call the command interpreter
+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&v);
+ v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ }) ? "cmd.exe" : "command.com").
+ Instead it simply concatenates the arguments, separated by ' ', and calls
+ CreateProcess(). We must quote the arguments since Win32 CreateProcess()
+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+ special way:
+ - Space and tab are interpreted as delimiters. They are not treated as
+ delimiters if they are surrounded by double quotes: "...".
+ - Unescaped double quotes are removed from the input. Their only effect is
+ that within double quotes, space and tab are treated like normal
+ characters.
+ - Backslashes not followed by double quotes are not special.
+ - But 2*n+1 backslashes followed by a double quote become
+ n backslashes followed by a double quote (n >= 0):
+ \" -> "
+ \\\" -> \"
+ \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+ size_t argc;
+ char **new_argv;
+ size_t i;
+
+ /* Count number of arguments. */
+ for (argc = 0; argv[argc] != NULL; argc++)
+ ;
+
+ /* Allocate new argument vector. */
+ new_argv = XMALLOC (char *, argc + 1);
+
+ /* Put quoted arguments into the new argument vector. */
+ for (i = 0; i < argc; i++)
+ {
+ const char *string = argv[i];
+
+ if (string[0] == '\0')
+ new_argv[i] = xstrdup ("\"\"");
+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+ {
+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+ size_t length;
+ unsigned int backslashes;
+ const char *s;
+ char *quoted_string;
+ char *p;
+
+ length = 0;
+ backslashes = 0;
+ if (quote_around)
+ length++;
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ length += backslashes + 1;
+ length++;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ length += backslashes + 1;
+
+ quoted_string = XMALLOC (char, length + 1);
+
+ p = quoted_string;
+ backslashes = 0;
+ if (quote_around)
+ *p++ = '"';
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ {
+ unsigned int j;
+ for (j = backslashes + 1; j > 0; j--)
+ *p++ = '\\';
+ }
+ *p++ = c;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ {
+ unsigned int j;
+ for (j = backslashes; j > 0; j--)
+ *p++ = '\\';
+ *p++ = '"';
+ }
+ *p = '\0';
+
+ new_argv[i] = quoted_string;
+ }
+ else
+ new_argv[i] = (char *) string;
+ }
+ new_argv[argc] = NULL;
+
+ return new_argv;
+}
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+ func_emit_wrapper yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
+
+ cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+ $opt_debug
+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # 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=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ bindir=
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ 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
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ 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
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ bindir)
+ bindir="$arg"
+ prev=
+ continue
+ ;;
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append 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
+ func_append dlfiles " $arg"
+ else
+ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ 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
+ func_append 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.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append 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
+ func_append 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"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ 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
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -bindir)
+ prev=bindir
+ 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
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ 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*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname "-L" '' "$arg"
+ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "* | *" $arg "*)
+ # Will only happen for absolute or sysroot arguments
+ ;;
+ *)
+ # Preserve sysroot, but never include relative directories
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+ *) func_append deplibs " -L$dir" ;;
+ esac
+ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append 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* | *-cegcc* | *-*-haiku*)
+ # 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
+ func_append deplibs " System.ltframework"
+ 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
+ func_append deplibs " $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot|--sysroot)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ 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*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ =*)
+ func_stripname '=' '' "$dir"
+ dir=$lt_sysroot$func_stripname_result
+ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # 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
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $wl$func_quote_for_eval_result"
+ func_append compiler_flags " $wl$func_quote_for_eval_result"
+ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # Flags to be passed through unchanged, with rationale:
+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
+ # -r[0-9][0-9]* specify processor for the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+ # +DA*, +DD* enable 64-bit mode for the HP compiler
+ # -q* compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+ # -F/path path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
+ # @file GCC response files
+ # -tp=* Portland pgcc target processor selection
+ # --sysroot=* for sysroot support
+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ func_append objs " $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ 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
+ func_append 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.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append 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
+ func_append 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"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ func_append deplibs " $arg"
+ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ func_resolve_sysroot "$arg"
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+ func_append deplibs " $func_resolve_sysroot_result"
+ 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.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'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\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ func_to_tool_file "$output_objdir/"
+ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ 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 $opt_preserve_dup_deps ; then
+ case "$libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append 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 $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+ func_append 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
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ 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
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ 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%"
+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+ ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ func_resolve_sysroot "$lib"
+ case $lib in
+ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ func_basename "$deplib"
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ 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|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append compiler_flags " $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; 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 func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ 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
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ 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
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ 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
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ lib=$func_resolve_sysroot_result
+ ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ 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 use here."
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ 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.
+ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # 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
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && func_append dlfiles " $dlopen"
+ test -n "$dlpreopen" && func_append 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
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ func_append convenience " $ladir/$objdir/$old_library"
+ func_append old_convenience " $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ if test -n "$old_library" &&
+ { test "$prefer_static_libs" = yes ||
+ test "$prefer_static_libs,$installed" = "built,no"; }; then
+ linklib=$old_library
+ else
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ 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.
+ func_append dlprefiles " $lib $dependency_libs"
+ else
+ func_append 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
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$lt_sysroot$libdir"
+ absdir="$lt_sysroot$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
+ func_append notinst_path " $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ case "$host" in
+ # special handling for platforms with PE-DLLs.
+ *cygwin* | *mingw* | *cegcc* )
+ # Linker will automatically link against shared library if both
+ # static and shared are present. Therefore, ensure we extract
+ # symbols from the import library if a shared library is present
+ # (otherwise, the dlopen module name will be incorrect). We do
+ # this by putting the import library name into $newdlprefiles.
+ # We recover the dlopen module name by 'saving' the la file
+ # name in a special purpose variable, and (later) extracting the
+ # dlname from the la file.
+ if test -n "$dlname"; then
+ func_tr_sh "$dir/$linklib"
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+ func_append newdlprefiles " $dir/$linklib"
+ else
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ fi
+ ;;
+ * )
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ func_append newdlprefiles " $dir/$dlname"
+ else
+ func_append newdlprefiles " $dir/$linklib"
+ fi
+ ;;
+ esac
+ 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
+ func_append 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*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ 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 $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append 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 "$prefer_static_libs,$installed" = "built,yes"; } ||
+ 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
+ *"$absdir:"*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && 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 "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ 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* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ 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 "$opt_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 (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; 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
+ elif test -n "$old_library"; then
+ 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 &&
+ test "$hardcode_direct_absolute" = no; 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
+ [\\/]*)
+ func_append 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
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) func_append 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:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; 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:"*) ;;
+ *) func_append 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
+ [\\/]*)
+ func_append 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*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ func_append 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"
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result";;
+ *) func_resolve_sysroot "$deplib" ;;
+ esac
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $func_resolve_sysroot_result "*)
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ path=
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ 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 "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ 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 "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append 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
+ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ func_append libobjs " $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ 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
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # 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="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # 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|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|qnx|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ *)
+ func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ 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]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ 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]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ 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]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ 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
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ 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
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ 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
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ func_append verstring ":${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ 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
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ func_append libobjs " $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$opt_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 | *.gcno)
+ ;;
+ $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
+ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "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
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ func_append deplibs " System.ltframework"
+ ;;
+ *-*-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
+ func_append 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.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append 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; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append 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
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ 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
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append 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; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append 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
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ if test -n "$file_magic_glob"; then
+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+ else
+ libnameglob=$libname
+ fi
+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ if test "$want_nocaseglob" = yes; then
+ shopt -s nocaseglob
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ $nocaseglob
+ else
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ fi
+ 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 "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ func_append 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
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append 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
+ func_append 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
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; 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 " $tmp_deplibs" | $SED "s,$i,,"`
+ done
+ fi
+ case $tmp_deplibs in
+ *[!\ \ ]*)
+ 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
+ ;;
+ esac
+ ;;
+ 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 with the System framework
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ 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
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ 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 " $deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append 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 "$opt_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
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ 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"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_apped 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
+ func_append 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 "$opt_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
+ shift
+ realname="$1"
+ 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
+ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+ # Take the normal branch if the nm_file_list_spec branch
+ # doesn't work or if tool conversion is not needed.
+ case $nm_file_list_spec~$to_tool_file_cmd in
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+ try_normal_branch=yes
+ eval cmd=\"$cmd1\"
+ func_len " $cmd"
+ len=$func_len_result
+ ;;
+ *)
+ try_normal_branch=no
+ ;;
+ esac
+ if test "$try_normal_branch" = yes \
+ && { test "$len" -lt "$max_cmd_len" \
+ || test "$max_cmd_len" -le -1; }
+ then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ elif test -n "$nm_file_list_spec"; then
+ func_basename "$output"
+ output_la=$func_basename_result
+ save_libobjs=$libobjs
+ save_output=$output
+ output=${output_objdir}/${output_la}.nm
+ func_to_tool_file "$output"
+ libobjs=$nm_file_list_spec$func_to_tool_file_result
+ func_append delfiles " $output"
+ func_verbose "creating $NM input file list: $output"
+ for obj in $save_libobjs; do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > "$output"
+ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
+ output=$save_output
+ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "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" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$opt_mode" = relink; then
+ $opt_dry_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:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # 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
+ func_basename "$output"
+ output_la=$func_basename_result
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append 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.
+ reload_objs=$objlist
+ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=" $obj"
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ 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~
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ func_append delfiles " $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "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"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ 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\"
+ test "X$libobjs" = "X " && libobjs=
+ 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
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( 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 "$opt_mode" = relink; then
+ $opt_dry_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
+ func_show_eval '${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
+ func_show_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 "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_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 and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # If we're not building shared, we need to use non_pic_objs
+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${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"
+ # $opt_dry_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"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ func_append compile_command " ${wl}-bind_at_load"
+ func_append finalize_command " ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ 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 "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ func_append compile_command " $compile_deplibs"
+ func_append 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 "*) ;;
+ *) func_append 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"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append 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"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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 "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cegcc* | *mingw32ce*)
+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ 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
+ func_append 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
+ func_append 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 "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ 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"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED '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 "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output_objdir/$outputname"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Now create the wrapper script.
+ func_verbose "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}\" || $lt_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
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ 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
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ 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 $symfileobj"
+ 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"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ func_append oldobjs " $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+ func_append 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
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # 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
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ func_append oldobjs " $gentop/$newobj"
+ ;;
+ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > $output_objdir/$libname.libcmd
+ func_to_tool_file "$output_objdir/$libname.libcmd"
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$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
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$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=
+ len=$len0
+ 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
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "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}\" || $lt_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
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; 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 "$relink_command" | $SED "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ 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)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
+ ;;
+ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlfiles " $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlprefiles " $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ # In fact, it would be nice if we could use this code for all target
+ # systems that can't hard-code library paths into their executables
+ # and that have no shared library path variable independent of PATH,
+ # but it turns out we can't easily determine that from inspecting
+ # libtool variables, so we have to hard-code the OSs to which it
+ # applies here; at the moment, that means platforms that use the PE
+ # object format with DLL files. See the long comment at the top of
+ # tests/bindir.at for full details.
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+ # If a -bindir argument was supplied, place the dll there.
+ if test "x$bindir" != x ;
+ then
+ func_relative_path "$install_libdir" "$bindir"
+ tdlname=$func_relative_path_result$dlname
+ else
+ # Otherwise fall back on heuristic.
+ tdlname=../bin/$dlname
+ fi
+ ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# 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'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_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
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ 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) func_append RM " $arg"; rmforce=yes ;;
+ -*) func_append RM " $arg" ;;
+ *) func_append files " $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ odir="$objdir"
+ else
+ odir="$dir/$objdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$opt_mode" = uninstall && odir="$dir"
+
+ # Remember odir for removal later, being careful to avoid duplicates
+ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+ *" $odir "*) ;;
+ *) func_append rmdirs " $odir" ;;
+ 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 func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ func_append rmfiles " $odir/$n"
+ done
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+ case "$opt_mode" in
+ clean)
+ case " $library_names " in
+ *" $dlname "*) ;;
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ func_append 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
+ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$opt_mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ func_append rmfiles " $odir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# 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
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644
index 0000000..8ff3c76
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,7851 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# 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.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_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 "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+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
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+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 delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# 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
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -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
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, 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 TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # 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
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_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
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # 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)
+
+ _LT_PROG_REPLACE_SHELLFNS
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])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_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$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.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$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 -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_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${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed '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${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# 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.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi],[])
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+case "$ECHO" in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[ --with-sysroot[=DIR] Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted. We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_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 '$LINENO' "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-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|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-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ 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-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ 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_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[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" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+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
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$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:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$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 "$_lt_linker_boilerplate" | $SED '/^$/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 -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# 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* | cegcc*)
+ # 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;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ 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
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ 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`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # 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.
+ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ 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`
+ fi
+ ;;
+ 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
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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 <<_LT_EOF
+[#line $LINENO "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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_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_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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* | cegcc*)
+ 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="-ldld"],
+ [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="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ 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_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_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
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$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:$LINENO: $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:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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_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 ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_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
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_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
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_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_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+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"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # 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.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+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"
+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'
+ ;;
+
+aix[[4-9]]*)
+ 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*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ 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=`func_echo_all "$lib" | $SED '\''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'
+ ;;
+ esac
+ ;;
+
+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* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ 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~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ 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}'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ 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
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH.
+ 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
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # 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'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # 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}${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`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ 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
+ ;;
+
+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
+ ;;
+ *) # from 4.6 on, and DragonFly
+ 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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ 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=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ 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'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[[3-9]]*)
+ 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* | k*bsd*-gnu | kopensolaris*-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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+ [lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [lt_cv_shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+ ])
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # 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>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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'
+ ;;
+
+netbsdelf*-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='NetBSD ld.elf_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=qnx
+ 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='ldqnx.so'
+ ;;
+
+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"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+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
+ 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
+ shlibpath_overrides_runpath=yes
+ 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'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ 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'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/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}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[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]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+ [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_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="m4_if([$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 <<_LT_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
+
+_LT_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
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_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
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_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])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])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[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
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[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
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ 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
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize 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
+aix[[4-9]]*)
+ 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',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | 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
+ ;;
+
+haiku*)
+ 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])(-bit)?( [LM]SB)? 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
+ ;;
+
+interix[[3-9]]*)
+ # 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* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ 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=pass_all
+ ;;
+
+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
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ 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
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+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
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+ [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (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
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+ [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+ [lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+ esac
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# 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]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# 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
+
+# Try without a prefix underscore, 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.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_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 <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT@&t@_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_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_globsym_save_LIBS
+ CFLAGS=$lt_globsym_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 -rf 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
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+ [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # 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).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+ interix[[3-9]]*)
+ # 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_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_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
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # 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).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_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_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_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_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_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_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # 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).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # 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_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # 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).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # 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
+ # Also, AIX nm treats weak defined symbols like other global defined
+ # symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ case $cc_basename in
+ cl*) ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_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_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # 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.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = 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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[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
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_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_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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_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_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_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'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$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' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_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 '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_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~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_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.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_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_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
+ ;;
+ *)
+ # 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.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_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_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_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ 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
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_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]].*|aix[[5-9]]*)
+ 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_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ 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
+ :
+ else
+ # We have old collect2
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ 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
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_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_SYS_MODULE_PATH_AIX([$1])
+ _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_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*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # 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_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_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'
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_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_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ m4_if($1, [], [
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ _LT_LINKER_OPTION([if $CC understands -b],
+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+ [_LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+ [lt_cv_irix_exported_symbol],
+ [save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+ [C++], [[int foo (void) { return 0; }]],
+ [Fortran 77], [[
+ subroutine foo
+ end]],
+ [Fortran], [[
+ subroutine foo
+ end]])])],
+ [lt_cv_irix_exported_symbol=yes],
+ [lt_cv_irix_exported_symbol=no])
+ LDFLAGS="$save_LDFLAGS"])
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_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_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_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'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_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} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_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_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_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_CACHE_CHECK([whether -lc should be explicitly linked in],
+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+ [$RM conftest*
+ echo "$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_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ ])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [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]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+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_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # 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
+ ;;
+
+ aix[[4-9]]*)
+ 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_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+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
+else
+ _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_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_CFLAGS=$CFLAGS
+ 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++"}
+ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_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_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_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_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 -v "^Configured with:" | $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_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ 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]].*|aix[[5-9]]*)
+ 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_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ 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
+ :
+ else
+ # We have old collect2
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_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
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_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_SYS_MODULE_PATH_AIX([$1])
+ _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # 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_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # g++
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_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_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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_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) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_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_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_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_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-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_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_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ 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_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_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; func_echo_all "$list"'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_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_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # 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_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_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'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_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 -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_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::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_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_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_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | 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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_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=`func_echo_all "$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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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 -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_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_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag -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 -v "^Configured with:" | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_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 -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_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.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+ '"$_LT_TAGVAR(reload_cmds, $1)"
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$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_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ 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
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([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.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+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...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
+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
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case ${prev}${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
+ fi
+
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
+ if test "$pre_test_object_deps_done" = no; then
+ case ${prev} 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_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_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_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ prev=
+ ;;
+
+ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$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_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_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
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # 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_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # 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.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_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_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_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_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
+ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ 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
+ ;;
+ aix[[4-9]]*)
+ 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_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+ CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_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_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
+ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ 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
+ ;;
+ aix[[4-9]]*)
+ 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_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_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_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# 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_TAG_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_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# 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. #
+############################################################
+
+m4_defun([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
+IFS=$as_save_IFS
+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_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# 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
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+ func_split_long_opt_name=${1%%=*}
+ func_split_long_opt_arg=${1#*=}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
+
+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
+
+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+ func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+ [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+ [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 0000000..17cfd51
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,369 @@
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# 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 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_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=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_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=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_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=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_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=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644
index 0000000..9000a05
--- /dev/null
+++ b/m4/ltsugar.m4
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# 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 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644
index 0000000..9c7b5d4
--- /dev/null
+++ b/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# 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.
+
+# @configure_input@
+
+# serial 3293 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4])
+m4_define([LT_PACKAGE_REVISION], [1.3293])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4'
+macro_revision='1.3293'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644
index 0000000..c573da9
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# 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 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/missing b/missing
new file mode 100755
index 0000000..28055d2
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 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, see <http://www.gnu.org/licenses/>.
+
+# 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=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# 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'
+ autom4te touch the output file, or create a stub one
+ 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]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+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
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# 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). This is about non-GNU programs, so use $1 not
+# $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 $program 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 "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ 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 test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -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 test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -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 "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ 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 "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ 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-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..4191a45
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec 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.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# 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-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/modules/DynamicObject/Makefile.am b/modules/DynamicObject/Makefile.am
new file mode 100644
index 0000000..56536cb
--- /dev/null
+++ b/modules/DynamicObject/Makefile.am
@@ -0,0 +1,25 @@
+if BUILD_DYNAMICOBJECT_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_DynamicObject.la
+
+libseed_DynamicObject_la_SOURCES = \
+ seed-DynamicObject.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_DynamicObject_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
+
diff --git a/modules/DynamicObject/Makefile.in b/modules/DynamicObject/Makefile.in
new file mode 100644
index 0000000..714e1d1
--- /dev/null
+++ b/modules/DynamicObject/Makefile.in
@@ -0,0 +1,649 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/DynamicObject
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+libseed_DynamicObject_la_LIBADD =
+am__libseed_DynamicObject_la_SOURCES_DIST = seed-DynamicObject.c
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@am_libseed_DynamicObject_la_OBJECTS = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ seed-DynamicObject.lo
+libseed_DynamicObject_la_OBJECTS = \
+ $(am_libseed_DynamicObject_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_DynamicObject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_DynamicObject_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@am_libseed_DynamicObject_la_rpath = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ -rpath $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_DynamicObject_la_SOURCES)
+DIST_SOURCES = $(am__libseed_DynamicObject_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ libseed_DynamicObject.la
+
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@libseed_DynamicObject_la_SOURCES = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ seed-DynamicObject.c
+
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@libseed_DynamicObject_la_LDFLAGS = \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ -module -avoid-version \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_DYNAMICOBJECT_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/DynamicObject/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/DynamicObject/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_DynamicObject.la: $(libseed_DynamicObject_la_OBJECTS) $(libseed_DynamicObject_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_DynamicObject_la_LINK) $(am_libseed_DynamicObject_la_rpath) $(libseed_DynamicObject_la_OBJECTS) $(libseed_DynamicObject_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-DynamicObject.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/DynamicObject/seed-DynamicObject.c b/modules/DynamicObject/seed-DynamicObject.c
new file mode 100644
index 0000000..3b22a12
--- /dev/null
+++ b/modules/DynamicObject/seed-DynamicObject.c
@@ -0,0 +1,205 @@
+/*
+DynamicObject Seed module
+
+this 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.
+
+Copyright (C) 2010 Jonatan Liljedahl <lijon@kymatica.com>
+
+--------------------------------------------------------------------------------
+
+Compile with:
+
+gcc -shared -fPIC seed-DynamicObject.c -I/usr/local/include/seed \
+ `pkg-config --cflags --libs glib-2.0 gmodule-2.0 gobject-introspection-1.0` \
+ -o libseed_DynamicObject.so
+
+Usage:
+
+ o = imports.DynamicObject.create({
+ getProperty: function(name) {
+ return some_value; // or null to forward to normal props
+ },
+ SetProperty: function(name, value) {
+ do_something(name,value);
+ return true; // or false to allow normal props to be set
+ },
+ deleteProperty: function(name) {
+ return true; // or false to forward to normal property deletion
+ },
+ callAsFunction: function() {
+ print("called with args: "+Array.prototype.slice.call(arguments));
+ },
+ callAsConstructor: function() {
+ return {foo:123};
+ },
+ getPropertyNames: function(){} // not implemented yet...
+ });
+
+ o.foobar = 42; // will call o.set_property('foobar',42)
+ print(o.something); // will call o.get_property('something)
+ // etc..
+
+'this' inside the callback is set to the calling contexts global object,
+not the dynamic object.
+
+You can also create the object first and set the callbacks later:
+
+ o = imports.DynamicObject.create();
+ o.callAsFunction = function() { return o.something; }
+
+*/
+
+#include <seed.h>
+
+static SeedClass dynamic_object_class;
+
+static SeedValue
+seed_dynamic_object_create (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedObject obj = seed_make_object (ctx, dynamic_object_class, NULL);
+ if (argument_count > 0)
+ seed_object_set_property (ctx, obj, "__proto__", arguments[0]);
+
+ return (SeedValue)obj;
+}
+
+static SeedValue
+seed_dynamic_object_get_property (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ guint len = seed_string_get_maximum_size (property_name);
+ gchar *prop = g_alloca (len * sizeof (gchar));
+ seed_string_to_utf8_buffer (property_name, prop, len);
+
+ // forward these to ordinary property lookup
+ if (!g_strcmp0 (prop, "toString"))
+ return NULL;
+ if (!g_strcmp0 (prop, "valueOf"))
+ return NULL;
+ if (!g_strcmp0 (prop, "getProperty"))
+ return NULL;
+ if (!g_strcmp0 (prop, "setProperty"))
+ return NULL;
+ if (!g_strcmp0 (prop, "deleteProperty"))
+ return NULL;
+ if (!g_strcmp0 (prop, "callAsFunction"))
+ return NULL;
+ if (!g_strcmp0 (prop, "callAsConstructor"))
+ return NULL;
+
+ SeedValue handler = seed_object_get_property (ctx, object, "getProperty");
+ if (seed_value_is_object (ctx, handler)) {
+ SeedValue args[1] = { seed_value_from_string (ctx, prop, exception) };
+ SeedValue ret = (SeedValue) seed_object_call (ctx, (SeedObject)handler, NULL, 1, args, exception);
+ return seed_value_is_null(ctx,ret)?NULL:ret;
+ }
+
+ return NULL;
+}
+
+static gboolean
+seed_dynamic_object_set_property (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ guint len = seed_string_get_maximum_size (property_name);
+ gchar *prop = g_alloca (len * sizeof (gchar));
+ seed_string_to_utf8_buffer (property_name, prop, len);
+
+ SeedValue handler = seed_object_get_property (ctx, object, "setProperty");
+ if (seed_value_is_object (ctx, handler)) {
+ SeedValue args[2] = {
+ seed_value_from_string (ctx, prop, exception),
+ value};
+ SeedValue ret = seed_object_call (ctx, (SeedObject)handler, NULL, 2, args, exception);
+ return seed_value_to_boolean (ctx, ret, exception);
+ }
+
+ return FALSE;
+}
+
+static gboolean
+seed_dynamic_object_delete_property (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ guint len = seed_string_get_maximum_size (property_name);
+ gchar *prop = g_alloca (len * sizeof (gchar));
+ seed_string_to_utf8_buffer (property_name, prop, len);
+
+ SeedValue handler = seed_object_get_property (ctx, object, "deleteProperty");
+ if (seed_value_is_object (ctx, handler)) {
+ SeedValue args[1] = { seed_value_from_string (ctx, prop, exception) };
+ SeedValue ret = (SeedValue) seed_object_call (ctx, (SeedObject)handler, NULL, 1, args, exception);
+ return seed_value_to_boolean (ctx, ret, exception);
+ }
+ return FALSE;
+
+}
+
+static SeedValue
+seed_dynamic_object_call_as_function (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue handler = seed_object_get_property (ctx, function, "callAsFunction");
+ if (seed_value_is_object (ctx, handler)) {
+ return (SeedValue) seed_object_call (ctx, (SeedObject)handler, NULL, argument_count, arguments, exception);
+ }
+ return NULL;
+}
+
+static SeedValue
+seed_dynamic_object_call_as_constructor (SeedContext ctx,
+ SeedObject function,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue handler = seed_object_get_property (ctx, function, "callAsConstructor");
+ if (seed_value_is_object (ctx, handler)) {
+ return (SeedValue) seed_object_call (ctx, (SeedObject)handler, NULL, argument_count, arguments, exception);
+ }
+ return NULL;
+}
+
+//static void
+//seed_dynamic_object_get_property_names (SeedContext ctx,
+// SeedObject object,
+// /*wait for API*/ propertyNames)
+
+SeedObject
+seed_module_init (SeedEngine * eng)
+{
+ SeedObject namespace_ref = seed_make_object (eng->context, NULL, NULL);
+ seed_class_definition class_def = seed_empty_class;
+
+ class_def.class_name = "DynamicObject";
+ class_def.get_property = seed_dynamic_object_get_property;
+ class_def.set_property = seed_dynamic_object_set_property;
+ class_def.delete_property = seed_dynamic_object_delete_property;
+ class_def.call_as_function = seed_dynamic_object_call_as_function;
+ class_def.call_as_constructor = seed_dynamic_object_call_as_constructor;
+
+ dynamic_object_class = seed_create_class (&class_def);
+
+ seed_create_function(eng->context, "create", (SeedFunctionCallback)seed_dynamic_object_create, namespace_ref);
+ return namespace_ref;
+}
+
diff --git a/modules/Makefile.am b/modules/Makefile.am
new file mode 100644
index 0000000..ebaaad9
--- /dev/null
+++ b/modules/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = example sqlite canvas multiprocessing readline os sandbox dbus libxml cairo gtkbuilder gettext mpfr ffi DynamicObject
diff --git a/modules/Makefile.in b/modules/Makefile.in
new file mode 100644
index 0000000..3cb9e0c
--- /dev/null
+++ b/modules/Makefile.in
@@ -0,0 +1,650 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = example sqlite canvas multiprocessing readline os sandbox dbus libxml cairo gtkbuilder gettext mpfr ffi DynamicObject
+all: 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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive 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-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-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/modules/cairo/Makefile.am b/modules/cairo/Makefile.am
new file mode 100644
index 0000000..f54c61c
--- /dev/null
+++ b/modules/cairo/Makefile.am
@@ -0,0 +1,47 @@
+if BUILD_CAIRO_MODULE
+
+EXTRA_DIST = seed-cairo-enums.h \
+ seed-cairo.h \
+ seed-cairo-image-surface.h \
+ seed-cairo-matrix.h \
+ seed-cairo-pattern.h \
+ seed-cairo-pdf-surface.h \
+ seed-cairo-surface.h
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_cairo.la
+
+libseed_cairo_la_SOURCES = \
+ seed-cairo.c \
+ seed-cairo-surface.c \
+ seed-cairo-image-surface.c \
+ seed-cairo-pdf-surface.c \
+ seed-cairo-matrix.c \
+ seed-cairo-pattern.c \
+ seed-cairo-enums.c
+
+libseed_cairo_la_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ -I@top_srcdir@/libseed/ \
+ $(CAIRO_CFLAGS) \
+ $(GDK_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_cairo_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(GDK_LDFLAGS) \
+ $(CAIRO_LDFLAGS)
+
+libseed_cairo_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(GDK_LIBS) \
+ $(CAIRO_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
diff --git a/modules/cairo/Makefile.in b/modules/cairo/Makefile.in
new file mode 100644
index 0000000..f742663
--- /dev/null
+++ b/modules/cairo/Makefile.in
@@ -0,0 +1,746 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/cairo
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_CAIRO_MODULE_TRUE@libseed_cairo_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_CAIRO_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_CAIRO_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_CAIRO_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_cairo_la_SOURCES_DIST = seed-cairo.c seed-cairo-surface.c \
+ seed-cairo-image-surface.c seed-cairo-pdf-surface.c \
+ seed-cairo-matrix.c seed-cairo-pattern.c seed-cairo-enums.c
+@BUILD_CAIRO_MODULE_TRUE@am_libseed_cairo_la_OBJECTS = \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-surface.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-image-surface.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-pdf-surface.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-matrix.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-pattern.lo \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo_la-seed-cairo-enums.lo
+libseed_cairo_la_OBJECTS = $(am_libseed_cairo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_cairo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_cairo_la_CFLAGS) $(CFLAGS) \
+ $(libseed_cairo_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_CAIRO_MODULE_TRUE@am_libseed_cairo_la_rpath = -rpath \
+@BUILD_CAIRO_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_cairo_la_SOURCES)
+DIST_SOURCES = $(am__libseed_cairo_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_CAIRO_MODULE_TRUE@EXTRA_DIST = seed-cairo-enums.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-image-surface.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-matrix.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-pattern.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-pdf-surface.h \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-surface.h
+
+@BUILD_CAIRO_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_CAIRO_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_CAIRO_MODULE_TRUE@ libseed_cairo.la
+
+@BUILD_CAIRO_MODULE_TRUE@libseed_cairo_la_SOURCES = \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-surface.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-image-surface.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-pdf-surface.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-matrix.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-pattern.c \
+@BUILD_CAIRO_MODULE_TRUE@ seed-cairo-enums.c
+
+@BUILD_CAIRO_MODULE_TRUE@libseed_cairo_la_CFLAGS = \
+@BUILD_CAIRO_MODULE_TRUE@ -Wall \
+@BUILD_CAIRO_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_CAIRO_MODULE_TRUE@ $(CAIRO_CFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(GDK_CFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_CAIRO_MODULE_TRUE@libseed_cairo_la_LDFLAGS = \
+@BUILD_CAIRO_MODULE_TRUE@ -module -avoid-version \
+@BUILD_CAIRO_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(GDK_LDFLAGS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(CAIRO_LDFLAGS)
+
+@BUILD_CAIRO_MODULE_TRUE@libseed_cairo_la_LIBADD = \
+@BUILD_CAIRO_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_CAIRO_MODULE_TRUE@ $(GDK_LIBS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(CAIRO_LIBS) \
+@BUILD_CAIRO_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/cairo/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/cairo/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_cairo.la: $(libseed_cairo_la_OBJECTS) $(libseed_cairo_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_cairo_la_LINK) $(am_libseed_cairo_la_rpath) $(libseed_cairo_la_OBJECTS) $(libseed_cairo_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-enums.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-image-surface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-matrix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-pattern.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-pdf-surface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo-surface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_cairo_la-seed-cairo.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_cairo_la-seed-cairo.lo: seed-cairo.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo.Tpo -c -o libseed_cairo_la-seed-cairo.lo `test -f 'seed-cairo.c' || echo '$(srcdir)/'`seed-cairo.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo.c' object='libseed_cairo_la-seed-cairo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo.lo `test -f 'seed-cairo.c' || echo '$(srcdir)/'`seed-cairo.c
+
+libseed_cairo_la-seed-cairo-surface.lo: seed-cairo-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-surface.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-surface.Tpo -c -o libseed_cairo_la-seed-cairo-surface.lo `test -f 'seed-cairo-surface.c' || echo '$(srcdir)/'`seed-cairo-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-surface.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-surface.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-surface.c' object='libseed_cairo_la-seed-cairo-surface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-surface.lo `test -f 'seed-cairo-surface.c' || echo '$(srcdir)/'`seed-cairo-surface.c
+
+libseed_cairo_la-seed-cairo-image-surface.lo: seed-cairo-image-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-image-surface.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-image-surface.Tpo -c -o libseed_cairo_la-seed-cairo-image-surface.lo `test -f 'seed-cairo-image-surface.c' || echo '$(srcdir)/'`seed-cairo-image-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-image-surface.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-image-surface.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-image-surface.c' object='libseed_cairo_la-seed-cairo-image-surface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-image-surface.lo `test -f 'seed-cairo-image-surface.c' || echo '$(srcdir)/'`seed-cairo-image-surface.c
+
+libseed_cairo_la-seed-cairo-pdf-surface.lo: seed-cairo-pdf-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-pdf-surface.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-pdf-surface.Tpo -c -o libseed_cairo_la-seed-cairo-pdf-surface.lo `test -f 'seed-cairo-pdf-surface.c' || echo '$(srcdir)/'`seed-cairo-pdf-surface.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-pdf-surface.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-pdf-surface.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-pdf-surface.c' object='libseed_cairo_la-seed-cairo-pdf-surface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-pdf-surface.lo `test -f 'seed-cairo-pdf-surface.c' || echo '$(srcdir)/'`seed-cairo-pdf-surface.c
+
+libseed_cairo_la-seed-cairo-matrix.lo: seed-cairo-matrix.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-matrix.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-matrix.Tpo -c -o libseed_cairo_la-seed-cairo-matrix.lo `test -f 'seed-cairo-matrix.c' || echo '$(srcdir)/'`seed-cairo-matrix.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-matrix.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-matrix.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-matrix.c' object='libseed_cairo_la-seed-cairo-matrix.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-matrix.lo `test -f 'seed-cairo-matrix.c' || echo '$(srcdir)/'`seed-cairo-matrix.c
+
+libseed_cairo_la-seed-cairo-pattern.lo: seed-cairo-pattern.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-pattern.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-pattern.Tpo -c -o libseed_cairo_la-seed-cairo-pattern.lo `test -f 'seed-cairo-pattern.c' || echo '$(srcdir)/'`seed-cairo-pattern.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-pattern.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-pattern.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-pattern.c' object='libseed_cairo_la-seed-cairo-pattern.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-pattern.lo `test -f 'seed-cairo-pattern.c' || echo '$(srcdir)/'`seed-cairo-pattern.c
+
+libseed_cairo_la-seed-cairo-enums.lo: seed-cairo-enums.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -MT libseed_cairo_la-seed-cairo-enums.lo -MD -MP -MF $(DEPDIR)/libseed_cairo_la-seed-cairo-enums.Tpo -c -o libseed_cairo_la-seed-cairo-enums.lo `test -f 'seed-cairo-enums.c' || echo '$(srcdir)/'`seed-cairo-enums.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_cairo_la-seed-cairo-enums.Tpo $(DEPDIR)/libseed_cairo_la-seed-cairo-enums.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-cairo-enums.c' object='libseed_cairo_la-seed-cairo-enums.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_cairo_la_CFLAGS) $(CFLAGS) -c -o libseed_cairo_la-seed-cairo-enums.lo `test -f 'seed-cairo-enums.c' || echo '$(srcdir)/'`seed-cairo-enums.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/cairo/seed-cairo-enums.c b/modules/cairo/seed-cairo-enums.c
new file mode 100644
index 0000000..dbc75ff
--- /dev/null
+++ b/modules/cairo/seed-cairo-enums.c
@@ -0,0 +1,144 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+#include "seed-cairo.h"
+
+#define ENUM_MEMBER(holder, name, value) \
+ seed_object_set_property (ctx, holder, name, seed_value_from_long (ctx, value, NULL))
+
+SeedValue
+seed_cairo_status_to_string (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_status_t status;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("status_to_string", "1 argument");
+ }
+ status = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_string (ctx, cairo_status_to_string (status), exception);
+}
+
+void
+seed_define_cairo_enums (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ SeedObject content_holder, format_holder, antialias_holder, fillrule_holder,
+ linecap_holder, linejoin_holder, operator_holder, status_holder;
+
+ content_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Content", content_holder);
+ ENUM_MEMBER(content_holder, "COLOR", CAIRO_CONTENT_COLOR);
+ ENUM_MEMBER(content_holder, "ALPHA", CAIRO_CONTENT_ALPHA);
+ ENUM_MEMBER(content_holder, "COLOR_ALPHA", CAIRO_CONTENT_COLOR_ALPHA);
+
+ format_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Format", format_holder);
+ ENUM_MEMBER(format_holder, "ARGB32", CAIRO_FORMAT_ARGB32);
+ ENUM_MEMBER(format_holder, "RGB23", CAIRO_FORMAT_RGB24);
+ ENUM_MEMBER(format_holder, "A8", CAIRO_FORMAT_A8);
+ ENUM_MEMBER(format_holder, "A1", CAIRO_FORMAT_A1);
+
+ antialias_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Antialias", antialias_holder);
+ ENUM_MEMBER(antialias_holder, "DEFAULT", CAIRO_ANTIALIAS_DEFAULT);
+ ENUM_MEMBER(antialias_holder, "NONE", CAIRO_ANTIALIAS_NONE);
+ ENUM_MEMBER(antialias_holder, "GRAY", CAIRO_ANTIALIAS_GRAY);
+ ENUM_MEMBER(antialias_holder, "SUBPIXEL", CAIRO_ANTIALIAS_SUBPIXEL);
+
+ fillrule_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Fillrule", fillrule_holder);
+ ENUM_MEMBER(fillrule_holder, "WINDING", CAIRO_FILL_RULE_WINDING);
+ ENUM_MEMBER(fillrule_holder, "EVEN_ODD", CAIRO_FILL_RULE_EVEN_ODD);
+
+ linecap_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Linecap", linecap_holder);
+ ENUM_MEMBER(linecap_holder, "BUTT", CAIRO_LINE_CAP_BUTT);
+ ENUM_MEMBER(linecap_holder, "ROUND", CAIRO_LINE_CAP_ROUND);
+ ENUM_MEMBER(linecap_holder, "SQUARE", CAIRO_LINE_CAP_SQUARE);
+
+ linejoin_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Linejoin", linejoin_holder);
+ ENUM_MEMBER(linejoin_holder, "MITER", CAIRO_LINE_JOIN_MITER);
+ ENUM_MEMBER(linejoin_holder, "ROUND", CAIRO_LINE_JOIN_ROUND);
+ ENUM_MEMBER(linejoin_holder, "BEVEL", CAIRO_LINE_JOIN_BEVEL);
+
+
+ operator_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Operator", operator_holder);
+ ENUM_MEMBER(operator_holder, "CLEAR", CAIRO_OPERATOR_CLEAR);
+ ENUM_MEMBER(operator_holder, "SOURCE", CAIRO_OPERATOR_SOURCE);
+ ENUM_MEMBER(operator_holder, "OVER", CAIRO_OPERATOR_OVER);
+ ENUM_MEMBER(operator_holder, "IN", CAIRO_OPERATOR_IN);
+ ENUM_MEMBER(operator_holder, "OUT", CAIRO_OPERATOR_OUT);
+ ENUM_MEMBER(operator_holder, "ATOP", CAIRO_OPERATOR_ATOP);
+ ENUM_MEMBER(operator_holder, "DEST", CAIRO_OPERATOR_DEST);
+ ENUM_MEMBER(operator_holder, "DEST_OVER", CAIRO_OPERATOR_DEST_OVER);
+ ENUM_MEMBER(operator_holder, "DEST_IN", CAIRO_OPERATOR_DEST_IN);
+ ENUM_MEMBER(operator_holder, "DEST_OUT", CAIRO_OPERATOR_DEST_OUT);
+ ENUM_MEMBER(operator_holder, "DEST_ATOP", CAIRO_OPERATOR_DEST_ATOP);
+ ENUM_MEMBER(operator_holder, "XOR", CAIRO_OPERATOR_XOR);
+ ENUM_MEMBER(operator_holder, "ADD", CAIRO_OPERATOR_ADD);
+ ENUM_MEMBER(operator_holder, "SATURATE", CAIRO_OPERATOR_SATURATE);
+
+ status_holder = seed_make_object (ctx, NULL, NULL);
+ seed_object_set_property (ctx, namespace_ref, "Status", status_holder);
+ ENUM_MEMBER(status_holder, "SUCCESS", CAIRO_STATUS_SUCCESS);
+ ENUM_MEMBER(status_holder, "NO_MEMORY", CAIRO_STATUS_NO_MEMORY);
+ ENUM_MEMBER(status_holder, "INVALID_RESTORE", CAIRO_STATUS_INVALID_RESTORE);
+ ENUM_MEMBER(status_holder, "INVALID_POP_GROUP", CAIRO_STATUS_INVALID_POP_GROUP);
+ ENUM_MEMBER(status_holder, "NO_CURRENT_POINT", CAIRO_STATUS_NO_CURRENT_POINT);
+ ENUM_MEMBER(status_holder, "INVALID_MATRIX", CAIRO_STATUS_INVALID_MATRIX);
+ ENUM_MEMBER(status_holder, "INVALID_STATUS", CAIRO_STATUS_INVALID_STATUS);
+ ENUM_MEMBER(status_holder, "NULL_POINTER", CAIRO_STATUS_NULL_POINTER);
+ ENUM_MEMBER(status_holder, "INVALID_STRING", CAIRO_STATUS_INVALID_STRING);
+ ENUM_MEMBER(status_holder, "INVALID_PATH_DATA", CAIRO_STATUS_INVALID_PATH_DATA);
+ ENUM_MEMBER(status_holder, "READ_ERROR", CAIRO_STATUS_READ_ERROR);
+ ENUM_MEMBER(status_holder, "WRITE_ERROR", CAIRO_STATUS_WRITE_ERROR);
+ ENUM_MEMBER(status_holder, "SURFACE_FINISHED", CAIRO_STATUS_SURFACE_FINISHED);
+ ENUM_MEMBER(status_holder, "SURFACE_TYPE_MISMATCH", CAIRO_STATUS_SURFACE_TYPE_MISMATCH);
+ ENUM_MEMBER(status_holder, "PATTERN_TYPE_MISMATCH", CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
+ ENUM_MEMBER(status_holder, "INVALID_CONTENT", CAIRO_STATUS_INVALID_CONTENT);
+ ENUM_MEMBER(status_holder, "INVALID_FORMAT", CAIRO_STATUS_INVALID_FORMAT);
+ ENUM_MEMBER(status_holder, "INVALID_VISUAL", CAIRO_STATUS_INVALID_VISUAL);
+ ENUM_MEMBER(status_holder, "FILE_NOT_FOUND", CAIRO_STATUS_FILE_NOT_FOUND);
+ ENUM_MEMBER(status_holder, "INVALID_DASH", CAIRO_STATUS_INVALID_DASH);
+ ENUM_MEMBER(status_holder, "INVALID_DSC_COMMENT", CAIRO_STATUS_INVALID_DSC_COMMENT);
+ ENUM_MEMBER(status_holder, "INVALID_INDEX", CAIRO_STATUS_INVALID_INDEX);
+ ENUM_MEMBER(status_holder, "CLIP_NOT_REPRESENTABLE", CAIRO_STATUS_CLIP_NOT_REPRESENTABLE);
+ ENUM_MEMBER(status_holder, "TEMP_FILE_ERROR", CAIRO_STATUS_TEMP_FILE_ERROR);
+ ENUM_MEMBER(status_holder, "INVALID_STRIDE", CAIRO_STATUS_INVALID_STRIDE);
+ ENUM_MEMBER(status_holder, "FONT_TYPE_MISMATCH", CAIRO_STATUS_FONT_TYPE_MISMATCH);
+ ENUM_MEMBER(status_holder, "USER_FONT_IMMUTABLE", CAIRO_STATUS_USER_FONT_IMMUTABLE);
+ ENUM_MEMBER(status_holder, "USER_FONT_ERROR", CAIRO_STATUS_USER_FONT_ERROR);
+ ENUM_MEMBER(status_holder, "NEGATIVE_COUNT", CAIRO_STATUS_NEGATIVE_COUNT);
+ ENUM_MEMBER(status_holder, "INVALID_CLUSTERS", CAIRO_STATUS_INVALID_CLUSTERS);
+ ENUM_MEMBER(status_holder, "INVALID_SLANT", CAIRO_STATUS_INVALID_SLANT);
+ ENUM_MEMBER(status_holder, "INVALID_WEIGHT", CAIRO_STATUS_INVALID_WEIGHT);
+
+ seed_create_function (ctx, "to_string", seed_cairo_status_to_string, status_holder);
+}
diff --git a/modules/cairo/seed-cairo-enums.h b/modules/cairo/seed-cairo-enums.h
new file mode 100644
index 0000000..4ae0b59
--- /dev/null
+++ b/modules/cairo/seed-cairo-enums.h
@@ -0,0 +1,5 @@
+#ifndef _SEED_CAIRO_ENUMS_H
+#define _SEED_CAIRO_ENUMS_H
+void seed_define_cairo_enums (SeedContext ctx, SeedObject namespace_ref);
+
+#endif
diff --git a/modules/cairo/seed-cairo-image-surface.c b/modules/cairo/seed-cairo-image-surface.c
new file mode 100644
index 0000000..1c68abf
--- /dev/null
+++ b/modules/cairo/seed-cairo-image-surface.c
@@ -0,0 +1,153 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#include "seed-cairo.h"
+#include "seed-cairo-surface.h"
+
+#define CAIRO_SURFACE_PRIV(obj) ((cairo_surface_t *)seed_object_get_private(obj))
+
+#define CHECK_SURFACE(obj) ({ \
+ if (!seed_object_is_of_class (ctx, obj, seed_cairo_image_surface_class)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Surface"); \
+ return seed_make_undefined (ctx); \
+ } \
+ if (!seed_object_get_private (obj)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_undefined (ctx);}})
+
+#define CHECK_THIS() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_undefined (ctx);}
+
+SeedClass seed_cairo_image_surface_class;
+SeedObject image_surface_constructor_ref;
+
+
+static SeedObject
+seed_object_from_cairo_image_surface (SeedContext ctx, cairo_surface_t *surf)
+{
+ SeedObject jsobj;
+
+ jsobj = cairo_surface_get_user_data (surf, seed_get_cairo_key());
+ if (jsobj)
+ return jsobj;
+
+ jsobj = seed_make_object (ctx, seed_cairo_image_surface_class, surf);
+ cairo_surface_set_user_data (surf, seed_get_cairo_key(), jsobj, seed_cairo_destroy_func);
+ return jsobj;
+}
+
+static SeedValue
+seed_cairo_image_surface_get_format (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_long (ctx, cairo_image_surface_get_format (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_image_surface_get_width (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_int (ctx, cairo_image_surface_get_width (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_image_surface_get_height (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_int (ctx, cairo_image_surface_get_height (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_image_surface_get_stride (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_int (ctx, cairo_image_surface_get_stride (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedObject
+seed_cairo_construct_image_surface (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ cairo_surface_t *ret;
+ gint width, height;
+ cairo_format_t format;
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("ImageSurface", "3 arguments");
+ }
+
+ format = seed_value_to_long (ctx, arguments[0], exception);
+ width = seed_value_to_int (ctx, arguments[1], exception);
+ height = seed_value_to_int (ctx, arguments[2], exception);
+ ret = cairo_image_surface_create (format, width, height);
+
+ return seed_object_from_cairo_image_surface (ctx, ret);
+}
+
+seed_static_value image_surface_values[] = {
+ {"format", seed_cairo_image_surface_get_format, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"width", seed_cairo_image_surface_get_width, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"height", seed_cairo_image_surface_get_height, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"stride", seed_cairo_image_surface_get_stride, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {0, 0, 0, 0}
+};
+
+
+
+
+void
+seed_define_cairo_image_surface (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ seed_class_definition image_def = seed_empty_class;
+ // TODO: FIX
+ seed_static_function webkit_fail = {0,0,0};
+
+ image_def.class_name = "ImageSurface";
+ image_def.static_values = image_surface_values;
+ image_def.parent_class = seed_get_cairo_surface_class ();
+ // FAIL
+ image_def.static_functions = &webkit_fail;
+ seed_cairo_image_surface_class = seed_create_class (&image_def);
+
+ image_surface_constructor_ref = seed_make_constructor (ctx,
+ NULL,
+ //seed_cairo_image_surface_class,
+ seed_cairo_construct_image_surface);
+ seed_object_set_property (ctx, namespace_ref, "ImageSurface", image_surface_constructor_ref);
+}
diff --git a/modules/cairo/seed-cairo-image-surface.h b/modules/cairo/seed-cairo-image-surface.h
new file mode 100644
index 0000000..c36132b
--- /dev/null
+++ b/modules/cairo/seed-cairo-image-surface.h
@@ -0,0 +1,9 @@
+#ifndef _SEED_CAIRO_IMAGE_SURFACE
+#define _SEED_CAIRO_IMAGE_SURFACe
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+void seed_define_cairo_image_surface (SeedContext ctx, SeedObject namespace_ref);
+
+#endif
diff --git a/modules/cairo/seed-cairo-matrix.c b/modules/cairo/seed-cairo-matrix.c
new file mode 100644
index 0000000..af12285
--- /dev/null
+++ b/modules/cairo/seed-cairo-matrix.c
@@ -0,0 +1,319 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#include "seed-cairo.h"
+SeedClass seed_matrix_class;
+
+SeedValue
+seed_value_from_cairo_matrix (SeedContext ctx,
+ const cairo_matrix_t *matrix,
+ SeedException *exception)
+{
+ SeedValue elems[6];
+
+ elems[0] = seed_value_from_double(ctx, matrix->xx, exception);
+ elems[1] = seed_value_from_double(ctx, matrix->yx, exception);
+ elems[2] = seed_value_from_double(ctx, matrix->xy, exception);
+ elems[3] = seed_value_from_double(ctx, matrix->yy, exception);
+ elems[4] = seed_value_from_double(ctx, matrix->x0, exception);
+ elems[5] = seed_value_from_double(ctx, matrix->y0, exception);
+
+ return seed_make_array (ctx, elems, 6, exception);
+}
+
+gboolean
+seed_value_to_cairo_matrix (SeedContext ctx,
+ SeedValue value,
+ cairo_matrix_t *matrix,
+ SeedException *exception)
+{
+ if (!seed_value_is_object (ctx, value))
+ return FALSE;
+
+ matrix->xx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 0, exception), exception);
+ matrix->yx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 1, exception), exception);
+ matrix->xy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 2, exception), exception);
+ matrix->yy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 3, exception), exception);
+ matrix->x0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 4, exception), exception);
+ matrix->y0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 5, exception), exception);
+
+ return TRUE;
+}
+
+// Should probably be a property?
+static SeedValue
+seed_cairo_matrix_init_identity (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_matrix_t m;
+
+ cairo_matrix_init_identity (&m);
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_init_translate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("init_translate", "2 arguments");
+ }
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_matrix_init_translate (&m, x, y);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_translate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("translate", "3 arguments");
+ }
+
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "translate needs an array [xx, yx, xy, yy, x0, y0]");
+ }
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+
+ cairo_matrix_translate (&m, x, y);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_init_scale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("init_scale", "2 arguments");
+ }
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_matrix_init_scale (&m, x, y);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_scale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("scale", "3 arguments");
+ }
+
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "scale needs an array [xx, yx, xy, yy, x0, y0]");
+ }
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+
+ cairo_matrix_scale (&m, x, y);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_init_rotate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble angle;
+ cairo_matrix_t m;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("init_rotate", "1 arguments");
+ }
+
+ angle = seed_value_to_double (ctx, arguments[0], exception);
+ cairo_matrix_init_rotate (&m, angle);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_rotate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble angle;
+ cairo_matrix_t m;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("rotate", "2 arguments");
+ }
+
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "rotate needs an array [xx, yx, xy, yy, x0, y0]");
+ }
+ angle = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_matrix_rotate (&m, angle);
+
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+
+static SeedValue
+seed_cairo_matrix_transform_distance (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue ret[2];
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("transform_distance", "3 arguments");
+ }
+
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "transform_distance needs an array [xx, yx, xy, yy, x0, y0]");
+ }
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+
+ cairo_matrix_transform_distance (&m, &x, &y);
+
+ ret[0] = seed_value_from_double (ctx, x, exception);
+ ret[1] = seed_value_from_double (ctx, y, exception);
+
+ return seed_make_array (ctx, ret, 2, exception);
+}
+
+static SeedValue
+seed_cairo_matrix_transform_point (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue ret[2];
+ gdouble x, y;
+ cairo_matrix_t m;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("transform_point", "3 arguments");
+ }
+
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "transform_point needs an array [xx, yx, xy, yy, x0, y0]");
+ }
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+
+ cairo_matrix_transform_point (&m, &x, &y);
+
+ ret[0] = seed_value_from_double (ctx, x, exception);
+ ret[1] = seed_value_from_double (ctx, y, exception);
+
+ return seed_make_array (ctx, ret, 2, exception);
+}
+
+seed_static_function matrix_funcs[] = {
+ {"init_identity", seed_cairo_matrix_init_identity, 0},
+ {"init_translate", seed_cairo_matrix_init_translate, 0},
+ {"init_scale", seed_cairo_matrix_init_scale, 0},
+ {"init_rotate", seed_cairo_matrix_init_rotate, 0},
+ {"translate", seed_cairo_matrix_translate, 0},
+ {"scale", seed_cairo_matrix_scale, 0},
+ {"rotate", seed_cairo_matrix_rotate, 0},
+ {"transform_point", seed_cairo_matrix_transform_point, 0},
+ {"transform_distance", seed_cairo_matrix_transform_distance, 0},
+ {0, 0, 0}
+};
+
+void
+seed_define_cairo_matrix (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ seed_class_definition matrix_def = seed_empty_class;
+
+ matrix_def.class_name = "Matrix";
+ matrix_def.static_functions = matrix_funcs;
+ seed_matrix_class = seed_create_class (&matrix_def);
+
+ seed_object_set_property (ctx, namespace_ref, "Matrix", seed_make_object (ctx, seed_matrix_class, NULL));
+}
diff --git a/modules/cairo/seed-cairo-matrix.h b/modules/cairo/seed-cairo-matrix.h
new file mode 100644
index 0000000..4fa23d3
--- /dev/null
+++ b/modules/cairo/seed-cairo-matrix.h
@@ -0,0 +1,14 @@
+#ifndef _SEED_MATRIX_H
+#define _SEED_MATRIX_H
+#include <seed.h>
+#include <cairo/cairo.h>
+
+void seed_define_cairo_matrix (SeedContext ctx, SeedObject namespace_ref);
+
+gboolean seed_value_to_cairo_matrix (SeedContext ctx, SeedValue value,
+ cairo_matrix_t *matrix, SeedException *exception);
+
+SeedValue seed_value_from_cairo_matrix (SeedContext ctx, const cairo_matrix_t *matrix,
+ SeedException *exception);
+
+#endif
diff --git a/modules/cairo/seed-cairo-pattern.c b/modules/cairo/seed-cairo-pattern.c
new file mode 100644
index 0000000..5d664f7
--- /dev/null
+++ b/modules/cairo/seed-cairo-pattern.c
@@ -0,0 +1,215 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#include "seed-cairo.h"
+#include "seed-cairo-matrix.h"
+
+#define CAIRO_PATTERN_PRIV(obj) ((cairo_pattern_t *)seed_object_get_private(obj))
+
+#define CHECK_PATTERN(obj, res) ({ \
+ if (!seed_object_is_of_class (ctx, obj, seed_cairo_pattern_class)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Pattern"); \
+ return seed_make_##res (ctx); \
+ } \
+ if (!seed_object_get_private (obj)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo pattern has been destroyed"); \
+ return seed_make_##res (ctx);}})
+
+#define CHECK_THIS() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo pattern has been destroyed"); \
+ return seed_make_undefined (ctx);}
+
+#define CHECK_THIS_BOOL(res) if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo pattern has been destroyed"); return FALSE;}
+
+
+
+
+SeedClass seed_cairo_pattern_class;
+
+SeedClass
+seed_get_cairo_pattern_class ()
+{
+ return seed_cairo_pattern_class;
+}
+
+static void
+seed_cairo_pattern_finalize (SeedObject obj)
+{
+ cairo_pattern_t *s = CAIRO_PATTERN_PRIV(obj);
+ if (s)
+ {
+ cairo_pattern_set_user_data (s, seed_get_cairo_key(), NULL, NULL);
+ cairo_pattern_destroy (s);
+ }
+}
+
+cairo_pattern_t *
+seed_object_to_cairo_pattern (SeedContext ctx, SeedObject obj, SeedException *exception)
+{
+ if (seed_object_is_of_class (ctx, obj, seed_cairo_pattern_class))
+ return CAIRO_PATTERN_PRIV (obj);
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Pattern");
+ return NULL;
+}
+
+SeedObject
+seed_object_from_cairo_pattern (SeedContext ctx, cairo_pattern_t *pat)
+{
+ SeedObject jsobj;
+
+ jsobj = cairo_pattern_get_user_data (pat, seed_get_cairo_key());
+ if (jsobj)
+ return jsobj;
+
+ jsobj = seed_make_object (ctx, seed_cairo_pattern_class, pat);
+ cairo_pattern_set_user_data (pat, seed_get_cairo_key(), jsobj, seed_cairo_destroy_func);
+ return jsobj;
+}
+
+static SeedObject
+seed_cairo_construct_linear_gradient (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gdouble x0,y0,x1,y1;
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("LinearGradient constructor", "4 arguments");
+ }
+
+ x0 = seed_value_to_double (ctx, arguments[0], exception);
+ y0 = seed_value_to_double (ctx, arguments[1], exception);
+ x1 = seed_value_to_double (ctx, arguments[2], exception);
+ y1 = seed_value_to_double (ctx, arguments[3], exception);
+
+ return seed_object_from_cairo_pattern (ctx, cairo_pattern_create_linear (x0, y0, x1, y1));
+}
+
+static SeedObject
+seed_cairo_construct_radial_gradient (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gdouble cx0, cy0, r0, cx1, cy1, r1;
+
+ if (argument_count != 6)
+ {
+ EXPECTED_EXCEPTION("RadialGradient constructor", "6 arguments");
+ }
+
+ cx0 = seed_value_to_double (ctx, arguments[0], exception);
+ cy0 = seed_value_to_double (ctx, arguments[1], exception);
+ r0 = seed_value_to_double (ctx, arguments[2], exception);
+ cx1 = seed_value_to_double (ctx, arguments[3], exception);
+ cy1 = seed_value_to_double (ctx, arguments[4], exception);
+ r1 = seed_value_to_double (ctx, arguments[5], exception);
+
+
+ return seed_object_from_cairo_pattern (ctx, cairo_pattern_create_radial (cx0, cy0, r0, cx1, cy1, r1));
+}
+
+static SeedValue
+seed_cairo_pattern_add_color_stop_rgb (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble offset, r, g, b;
+ cairo_pattern_t *pat;
+ CHECK_THIS();
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("add_color_stop_rgb", "4 arguments");
+ }
+
+ pat = seed_object_get_private (this_object);
+ offset = seed_value_to_double (ctx, arguments[0], exception);
+ r = seed_value_to_double (ctx, arguments[1], exception);
+ g = seed_value_to_double (ctx, arguments[2], exception);
+ b = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_pattern_add_color_stop_rgb (pat, offset, r, g, b);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_pattern_add_color_stop_rgba (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble offset, r, g, b, a;
+ cairo_pattern_t *pat;
+ CHECK_THIS();
+ if (argument_count != 5)
+ {
+ EXPECTED_EXCEPTION("add_color_stop_rgba", "5 arguments");
+ }
+
+ pat = seed_object_get_private (this_object);
+ offset = seed_value_to_double (ctx, arguments[0], exception);
+ r = seed_value_to_double (ctx, arguments[1], exception);
+ g = seed_value_to_double (ctx, arguments[2], exception);
+ b = seed_value_to_double (ctx, arguments[3], exception);
+ a = seed_value_to_double (ctx, arguments[4], exception);
+
+ cairo_pattern_add_color_stop_rgba (pat, offset, r, g, b, a);
+
+ return seed_make_undefined (ctx);
+}
+
+seed_static_function pattern_funcs[] = {
+ {"add_color_stop_rgb", seed_cairo_pattern_add_color_stop_rgb, 0},
+ {"add_color_stop_rgba", seed_cairo_pattern_add_color_stop_rgba, 0},
+ {0,0,0}
+};
+
+void
+seed_define_cairo_pattern (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ SeedObject linear_constructor, radial_constructor;
+ seed_class_definition pattern_def = seed_empty_class;
+
+ pattern_def.class_name = "Pattern";
+ pattern_def.finalize = seed_cairo_pattern_finalize;
+ pattern_def.static_functions = pattern_funcs;
+
+ seed_cairo_pattern_class = seed_create_class (&pattern_def);
+
+ linear_constructor = seed_make_constructor (ctx, NULL, seed_cairo_construct_linear_gradient);
+ seed_object_set_property(ctx, namespace_ref, "LinearGradient", linear_constructor);
+
+ radial_constructor = seed_make_constructor (ctx, NULL, seed_cairo_construct_radial_gradient);
+ seed_object_set_property(ctx, namespace_ref, "RadialGradient", radial_constructor);
+}
diff --git a/modules/cairo/seed-cairo-pattern.h b/modules/cairo/seed-cairo-pattern.h
new file mode 100644
index 0000000..427215a
--- /dev/null
+++ b/modules/cairo/seed-cairo-pattern.h
@@ -0,0 +1,21 @@
+#ifndef _SEED_CAIRO_PATTERN_H
+#define _SEED_CAIRO_PATTERN_H
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+SeedClass
+seed_get_cairo_pattern_class ();
+
+cairo_pattern_t *
+seed_object_to_cairo_pattern (SeedContext ctx, SeedObject obj, SeedException *exception);
+
+SeedObject
+seed_object_from_cairo_pattern (SeedContext ctx, cairo_pattern_t *pat);
+
+void
+seed_define_cairo_pattern (SeedContext ctx,
+ SeedObject namespace_ref);
+
+
+#endif
diff --git a/modules/cairo/seed-cairo-pdf-surface.c b/modules/cairo/seed-cairo-pdf-surface.c
new file mode 100644
index 0000000..4c6648d
--- /dev/null
+++ b/modules/cairo/seed-cairo-pdf-surface.c
@@ -0,0 +1,139 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+#include <cairo/cairo-pdf.h>
+
+#include "seed-cairo.h"
+#include "seed-cairo-surface.h"
+
+#define CAIRO_SURFACE_PRIV(obj) ((cairo_surface_t *)seed_object_get_private(obj))
+
+#define CHECK_SURFACE(obj) ({ \
+ if (!seed_object_is_of_class (ctx, obj, seed_cairo_pdf_surface_class)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Surface"); \
+ return seed_make_undefined (ctx); \
+ } \
+ if (!seed_object_get_private (obj)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_undefined (ctx);}})
+
+#define CHECK_THIS() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_undefined (ctx);}
+
+SeedClass seed_cairo_pdf_surface_class;
+SeedObject pdf_surface_constructor_ref;
+
+
+static SeedObject
+seed_object_from_cairo_pdf_surface (SeedContext ctx, cairo_surface_t *surf)
+{
+ SeedObject jsobj;
+
+ jsobj = cairo_surface_get_user_data (surf, seed_get_cairo_key());
+ if (jsobj)
+ return jsobj;
+
+ jsobj = seed_make_object (ctx, seed_cairo_pdf_surface_class, surf);
+ cairo_surface_set_user_data (surf, seed_get_cairo_key(), jsobj, seed_cairo_destroy_func);
+ return jsobj;
+}
+
+static SeedValue
+seed_cairo_pdf_surface_set_size (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_surface_t *surf;
+ gdouble x, y;
+
+ CHECK_THIS();
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("set_size", "2 arguments");
+ }
+ surf = seed_object_get_private (this_object);
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_pdf_surface_set_size (surf, x, y);
+
+ return seed_make_undefined (ctx);
+}
+
+
+static SeedObject
+seed_cairo_construct_pdf_surface (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ cairo_surface_t *ret;
+ gchar *filename = NULL;
+ gdouble width, height;
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("PDFSurface", "3 arguments");
+ }
+
+ if (!seed_value_is_null (ctx, arguments[0]))
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+ width = seed_value_to_double (ctx, arguments[1], exception);
+ height = seed_value_to_double (ctx, arguments[2], exception);
+ ret = cairo_pdf_surface_create (filename, width, height);
+
+ return seed_object_from_cairo_pdf_surface (ctx, ret);
+}
+
+seed_static_value pdf_surface_values[] = {
+ {0, 0, 0, 0}
+};
+
+seed_static_function pdf_surface_funcs[] = {
+ {"set_size", seed_cairo_pdf_surface_set_size, 0},
+ {0, 0, 0}
+};
+
+
+
+
+void
+seed_define_cairo_pdf_surface (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ seed_class_definition pdf_def = seed_empty_class;
+
+ pdf_def.class_name = "PDFSurface";
+ pdf_def.static_values = pdf_surface_values;
+ pdf_def.parent_class = seed_get_cairo_surface_class ();
+ pdf_def.static_functions = pdf_surface_funcs;
+ seed_cairo_pdf_surface_class = seed_create_class (&pdf_def);
+
+ pdf_surface_constructor_ref = seed_make_constructor (ctx,
+ NULL,
+ //seed_cairo_pdf_surface_class,
+ seed_cairo_construct_pdf_surface);
+ seed_object_set_property (ctx, namespace_ref, "PDFSurface", pdf_surface_constructor_ref);
+}
diff --git a/modules/cairo/seed-cairo-pdf-surface.h b/modules/cairo/seed-cairo-pdf-surface.h
new file mode 100644
index 0000000..6292513
--- /dev/null
+++ b/modules/cairo/seed-cairo-pdf-surface.h
@@ -0,0 +1,9 @@
+#ifndef _SEED_CAIRO_PDF_SURFACE
+#define _SEED_CAIRO_PDF_SURFACe
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+void seed_define_cairo_pdf_surface (SeedContext ctx, SeedObject namespace_ref);
+
+#endif
diff --git a/modules/cairo/seed-cairo-surface.c b/modules/cairo/seed-cairo-surface.c
new file mode 100644
index 0000000..55cf4f6
--- /dev/null
+++ b/modules/cairo/seed-cairo-surface.c
@@ -0,0 +1,416 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#include "seed-cairo.h"
+#include "seed-cairo-image-surface.h"
+#include "seed-cairo-pdf-surface.h"
+
+#define CAIRO_SURFACE_PRIV(obj) ((cairo_surface_t *)seed_object_get_private(obj))
+
+#define CHECK_SURFACE(obj, res) ({ \
+ if (!seed_object_is_of_class (ctx, obj, seed_cairo_surface_class)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Surface"); \
+ return seed_make_##res (ctx); \
+ } \
+ if (!seed_object_get_private (obj)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_##res (ctx);}})
+
+#define CHECK_THIS() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); \
+ return seed_make_undefined (ctx);}
+
+#define CHECK_THIS_BOOL(res) if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo surface has been destroyed"); return FALSE;}
+
+
+
+
+SeedClass seed_cairo_surface_class;
+
+SeedClass
+seed_get_cairo_surface_class ()
+{
+ return seed_cairo_surface_class;
+}
+
+static void
+seed_cairo_surface_finalize (SeedObject obj)
+{
+ cairo_surface_t *s = CAIRO_SURFACE_PRIV(obj);
+ if (s)
+ {
+ cairo_surface_set_user_data (s, seed_get_cairo_key(), NULL, NULL);
+ cairo_surface_destroy (s);
+ }
+}
+
+cairo_surface_t *
+seed_object_to_cairo_surface (SeedContext ctx, SeedObject obj, SeedException *exception)
+{
+ if (seed_object_is_of_class (ctx, obj, seed_cairo_surface_class))
+ return CAIRO_SURFACE_PRIV (obj);
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Surface");
+ return NULL;
+}
+
+SeedObject
+seed_object_from_cairo_surface (SeedContext ctx, cairo_surface_t *surf)
+{
+ SeedObject jsobj;
+
+ jsobj = cairo_surface_get_user_data (surf, seed_get_cairo_key());
+ if (jsobj)
+ return jsobj;
+
+ jsobj = seed_make_object (ctx, seed_cairo_surface_class, surf);
+ cairo_surface_set_user_data (surf, seed_get_cairo_key(), jsobj, seed_cairo_destroy_func);
+ return jsobj;
+}
+
+static SeedValue
+seed_cairo_surface_create_similar (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gint width, height;
+ cairo_surface_t *surface, *ret;
+ cairo_content_t content;
+ CHECK_THIS();
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("create_similar", "3 arguments");
+ }
+
+ surface = seed_object_to_cairo_surface (ctx, this_object, exception);
+ if (!surface)
+ return seed_make_undefined (ctx);
+ content = seed_value_to_long (ctx, arguments[0], exception);
+ width = seed_value_to_int (ctx, arguments[1], exception);
+ height = seed_value_to_int (ctx, arguments[2], exception);
+
+ ret = cairo_surface_create_similar (surface, content, width, height);
+ return seed_object_from_cairo_surface (ctx, ret);
+}
+
+static SeedValue
+seed_cairo_surface_status (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_long (ctx, cairo_surface_status (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_surface_get_content (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_long (ctx, cairo_surface_get_content (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_surface_finish (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_surface_finish (seed_object_to_cairo_surface(ctx, this_object, exception));
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_surface_flush (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_surface_flush (seed_object_to_cairo_surface(ctx, this_object, exception));
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_surface_mark_dirty_rectangle(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_surface_t *surf;
+ guint x, y, width, height;
+ CHECK_THIS();
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("mark_dirty_rectangle", "4 arguments");
+ }
+ surf = seed_object_to_cairo_surface (ctx, this_object, exception);
+ x = seed_value_to_int (ctx, arguments[0], exception);
+ y = seed_value_to_int (ctx, arguments[1], exception);
+ width = seed_value_to_int (ctx, arguments[2], exception);
+ height = seed_value_to_int (ctx, arguments[3], exception);
+
+ cairo_surface_mark_dirty_rectangle (surf, x, y, width, height);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_surface_mark_dirty (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_surface_mark_dirty (seed_object_to_cairo_surface(ctx, this_object, exception));
+ return seed_make_undefined (ctx);
+}
+
+static gboolean
+seed_cairo_surface_set_device_offset(SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_surface_t *surf;
+ gdouble x, y;
+ SeedValue jsx, jsy;
+ CHECK_THIS_BOOL();
+
+ if (!seed_value_is_object (ctx, value))
+ {
+ seed_make_exception(ctx, exception, "ArgumentError", "Cairo.Surface.device_offset must be an array [x,y]");
+ return FALSE;
+ }
+
+ jsx = seed_object_get_property_at_index (ctx, (SeedObject) value, 0, exception);
+ jsy = seed_object_get_property_at_index (ctx, (SeedObject) value, 1, exception);
+
+ surf = seed_object_to_cairo_surface (ctx, this_object, exception);
+ x = seed_value_to_double (ctx, jsx, exception);
+ y = seed_value_to_double (ctx, jsy, exception);
+
+ cairo_surface_set_device_offset (surf, x, y);
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_surface_get_device_offset(SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ SeedValue offsets[2];
+ cairo_surface_t *surf;
+ gdouble x, y;
+ CHECK_THIS();
+
+ surf = seed_object_to_cairo_surface (ctx, this_object, exception);
+ cairo_surface_get_device_offset (surf, &x, &y);
+
+ offsets[0] = seed_value_from_double (ctx, x, exception);
+ offsets[1] = seed_value_from_double (ctx, y, exception);
+
+ return seed_make_array (ctx, offsets, 2, exception);
+}
+
+static gboolean
+seed_cairo_surface_set_fallback_resolution(SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_surface_t *surf;
+ gdouble x, y;
+ SeedValue jsx, jsy;
+ CHECK_THIS_BOOL();
+
+ if (!seed_value_is_object (ctx, value))
+ {
+ seed_make_exception(ctx, exception, "ArgumentError", "Cairo.Surface.fallback_resolution must be an array [x,y]");
+ return FALSE;
+ }
+
+ jsx = seed_object_get_property_at_index (ctx, (SeedObject) value, 0, exception);
+ jsy = seed_object_get_property_at_index (ctx, (SeedObject) value, 1, exception);
+
+ surf = seed_object_to_cairo_surface (ctx, this_object, exception);
+ x = seed_value_to_double (ctx, jsx, exception);
+ y = seed_value_to_double (ctx, jsy, exception);
+
+ cairo_surface_set_fallback_resolution (surf, x, y);
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_surface_get_fallback_resolution(SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ SeedValue offsets[2];
+ cairo_surface_t *surf;
+ gdouble x, y;
+ CHECK_THIS();
+
+ surf = seed_object_to_cairo_surface (ctx, this_object, exception);
+ cairo_surface_get_fallback_resolution (surf, &x, &y);
+
+ offsets[0] = seed_value_from_double (ctx, x, exception);
+ offsets[1] = seed_value_from_double (ctx, y, exception);
+
+ return seed_make_array (ctx, offsets, 2, exception);
+}
+
+static SeedValue
+seed_cairo_surface_get_type (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_long (ctx, cairo_surface_get_type (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_surface_copy_page (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_surface_copy_page (seed_object_to_cairo_surface(ctx, this_object, exception));
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_surface_show_page (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_surface_show_page (seed_object_to_cairo_surface(ctx, this_object, exception));
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_surface_has_show_text_glyphs(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ return seed_value_from_boolean (ctx,
+ cairo_surface_has_show_text_glyphs (seed_object_to_cairo_surface(ctx, this_object, exception)), exception);
+}
+
+static SeedValue
+seed_cairo_surface_write_to_png (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_status_t ret;
+ cairo_surface_t *surf;
+ gchar *filename;
+ CHECK_THIS();
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("write_to_png", "1 argument");
+ }
+
+ surf = seed_object_get_private (this_object);
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+
+ ret = cairo_surface_write_to_png (surf, filename);
+ g_free (filename);
+
+ return seed_value_from_long (ctx, ret, exception);
+}
+
+
+seed_static_function surface_funcs[] = {
+ {"create_similar", seed_cairo_surface_create_similar, 0},
+ {"finish", seed_cairo_surface_finish, 0},
+ {"flush", seed_cairo_surface_flush, 0},
+ // {"get_font_options", seed_cairo_surface_get_font_options, 0},
+ {"mark_dirty", seed_cairo_surface_mark_dirty, 0},
+ {"mark_dirty_rectangle", seed_cairo_surface_mark_dirty_rectangle, 0},
+ {"copy_page", seed_cairo_surface_copy_page, 0},
+ {"show_page", seed_cairo_surface_show_page, 0},
+ {"has_show_text_glyphs", seed_cairo_surface_has_show_text_glyphs, 0},
+ {"write_to_png", seed_cairo_surface_write_to_png, 0},
+ {0,0,0}
+};
+
+seed_static_value surface_values[] = {
+ {"type", seed_cairo_surface_get_type, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"content", seed_cairo_surface_get_content, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"status", seed_cairo_surface_status, 0, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"device_offset", seed_cairo_surface_get_device_offset, seed_cairo_surface_set_device_offset, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"fallback_resolution", seed_cairo_surface_get_fallback_resolution, seed_cairo_surface_set_fallback_resolution, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {0, 0, 0, 0}
+};
+
+void
+seed_define_cairo_surface (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ seed_class_definition surface_def = seed_empty_class;
+
+ surface_def.class_name = "Surface";
+ surface_def.finalize = seed_cairo_surface_finalize;
+ surface_def.static_functions = surface_funcs;
+ surface_def.static_values = surface_values;
+
+ seed_cairo_surface_class = seed_create_class (&surface_def);
+
+ seed_define_cairo_image_surface (ctx, namespace_ref);
+ seed_define_cairo_pdf_surface (ctx, namespace_ref);
+}
diff --git a/modules/cairo/seed-cairo-surface.h b/modules/cairo/seed-cairo-surface.h
new file mode 100644
index 0000000..e58e9bb
--- /dev/null
+++ b/modules/cairo/seed-cairo-surface.h
@@ -0,0 +1,11 @@
+#ifndef _SEED_CAIRO_SURFACE_H
+#define _SEED_CAIRO_SURFACE_H
+
+SeedClass seed_get_cairo_surface_class ();
+
+void seed_define_cairo_surface (SeedContext ctx, SeedObject namespace_ref);
+
+cairo_surface_t *seed_object_to_cairo_surface (SeedContext ctx, SeedObject obj, SeedException *exception);
+SeedObject seed_object_from_cairo_surface (SeedContext ctx, cairo_surface_t *surf);
+
+#endif
diff --git a/modules/cairo/seed-cairo.c b/modules/cairo/seed-cairo.c
new file mode 100644
index 0000000..09ec4c4
--- /dev/null
+++ b/modules/cairo/seed-cairo.c
@@ -0,0 +1,1848 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <cairo/cairo.h>
+#include <gdk/gdk.h>
+#include "seed-cairo.h"
+#include "seed-cairo-surface.h"
+#include "seed-cairo-image-surface.h"
+#include "seed-cairo-enums.h"
+#include "seed-cairo-matrix.h"
+#include "seed-cairo-pattern.h"
+
+SeedEngine *eng;
+
+#define CAIRO_CONTEXT_PRIV(obj) ((cairo_t *)seed_object_get_private(obj))
+
+#define CHECK_CAIRO(obj) ({ \
+ if (!seed_object_is_of_class (ctx, obj, seed_cairo_class)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Context"); \
+ return seed_make_undefined (ctx); \
+ } \
+ if (!seed_object_get_private (obj)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo Context has been destroyed"); \
+ return seed_make_undefined (ctx);}})
+
+#define CHECK_THIS() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo Context has been destroyed"); \
+ return seed_make_undefined (ctx);}
+
+#define CHECK_THIS_BOOL() if (!seed_object_get_private (this_object)){ \
+ seed_make_exception (ctx, exception, "ArgumentError", "Cairo Context has been destroyed"); \
+ return FALSE;}
+
+SeedClass seed_cairo_context_class;
+
+cairo_user_data_key_t *
+seed_get_cairo_key ()
+{
+ static cairo_user_data_key_t foobaz;
+
+ return &foobaz;
+}
+
+void
+seed_cairo_destroy_func (void *obj)
+{
+ SeedObject object = (SeedObject)obj;
+ seed_object_set_private (object, NULL);
+}
+
+cairo_t *
+seed_object_to_cairo_context (SeedContext ctx, SeedObject obj, SeedException *exception)
+{
+ if (seed_object_is_of_class (ctx, obj, seed_cairo_context_class))
+ return CAIRO_CONTEXT_PRIV (obj);
+ seed_make_exception (ctx, exception, "ArgumentError", "Object is not a Cairo Context");
+ return NULL;
+}
+
+SeedObject
+seed_object_from_cairo_context (SeedContext ctx, cairo_t *cr)
+{
+ SeedObject jsobj;
+
+ jsobj = cairo_get_user_data (cr, seed_get_cairo_key());
+ if (jsobj)
+ return jsobj;
+
+ jsobj = seed_make_object (ctx, seed_cairo_context_class, cr);
+ cairo_set_user_data (cr, seed_get_cairo_key(), jsobj, seed_cairo_destroy_func);
+ return jsobj;
+}
+
+void
+seed_cairo_context_finalize (SeedObject obj)
+{
+ cairo_t *cr = CAIRO_CONTEXT_PRIV (obj);
+ if (cr)
+ {
+ cairo_set_user_data (cr, seed_get_cairo_key(), NULL, NULL);
+ cairo_destroy (cr);
+ }
+}
+
+static SeedObject
+seed_cairo_construct_context (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ cairo_surface_t *surf;
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("Context", "1 argument");
+ }
+ surf = seed_object_to_cairo_surface (ctx, arguments[0], exception);
+ if (!surf)
+ return seed_make_undefined (ctx);
+ return seed_object_from_cairo_context (ctx, cairo_create (surf));
+}
+
+static SeedObject
+seed_cairo_construct_context_from_window (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GObject *obj;
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("Context", "1 argument");
+ }
+ obj = seed_value_to_object (ctx, arguments[0], exception);
+ if (!GDK_IS_WINDOW(obj))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Context.from_window requires a GdkWindow argument");
+ return seed_make_null (ctx);
+ }
+
+ return seed_object_from_cairo_context (ctx, gdk_cairo_create (GDK_WINDOW (obj)));
+}
+
+static SeedObject
+seed_cairo_construct_context_steal (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("Context", "1 argument");
+ }
+ cairo_t* cr = seed_pointer_get_pointer(ctx, arguments[0]);
+ if (!cr) {
+ seed_make_exception (ctx, exception, "ArgumentError", "Context.steal requires a cairo context argument");
+ return seed_make_null (ctx);
+ }
+ return seed_object_from_cairo_context (ctx, cr);
+}
+
+static SeedValue
+seed_cairo_save (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_save(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_restore (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_restore(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_get_target (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ return seed_object_from_cairo_surface (ctx, cairo_get_target (cr));
+}
+
+static SeedValue
+seed_cairo_push_group (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_push_group(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_push_group_with_content (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_content_t content;
+ cairo_t *cr;
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("push_group_with_content", "1 argument");
+ }
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+ content = seed_value_to_long (ctx, arguments[0], exception);
+ cairo_push_group_with_content(cr, content);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_pop_group_to_source (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_pop_group_to_source(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_get_group_target (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ return seed_object_from_cairo_surface (ctx, cairo_get_group_target (cr));
+}
+
+static SeedValue
+seed_cairo_set_source_rgb(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble r,g,b;
+ cairo_t *cr;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("set_source_rgb", "3 arguments");
+ }
+ r = seed_value_to_double (ctx, arguments[0], exception);
+ g = seed_value_to_double (ctx, arguments[1], exception);
+ b = seed_value_to_double (ctx, arguments[2], exception);
+ cairo_set_source_rgb (cr, r, g, b);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_set_source_rgba(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble r,g,b,a;
+ cairo_t *cr;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("set_source_rgba", "4 arguments");
+ }
+ r = seed_value_to_double (ctx, arguments[0], exception);
+ g = seed_value_to_double (ctx, arguments[1], exception);
+ b = seed_value_to_double (ctx, arguments[2], exception);
+ a = seed_value_to_double (ctx, arguments[3], exception);
+ cairo_set_source_rgba (cr, r, g, b, a);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_set_source_surface (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x,y;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+ surface = seed_object_to_cairo_surface (ctx, arguments[0], exception);
+ if (!surface)
+ return seed_make_undefined (ctx);
+
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+ cairo_set_source_surface (cr, surface, x, y);
+
+ return seed_make_undefined (ctx);
+}
+
+static gboolean
+seed_cairo_set_antialias (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ cairo_antialias_t antialias;
+
+ CHECK_THIS_BOOL();
+ cr = seed_object_get_private (this_object);
+ antialias = seed_value_to_long (ctx, value, exception);
+
+ cairo_set_antialias (cr, antialias);
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_get_antialias (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_antialias_t antialias;
+ cairo_t *cr;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+ antialias = cairo_get_antialias (cr);
+
+ return seed_value_from_long (ctx, antialias, exception);
+}
+
+static SeedValue
+seed_cairo_set_dash(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue length;
+ cairo_t *cr;
+ gdouble *dashes, offset;
+ gint num_dashes, i;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("set_dash", "2 arguments");
+ }
+ length = seed_object_get_property (ctx, arguments[0], "length");
+ num_dashes = seed_value_to_int (ctx, length, exception);
+ dashes = g_alloca (num_dashes * sizeof(gdouble));
+ for (i = 0; i < num_dashes; i++)
+ {
+ dashes[i] = seed_value_to_double(ctx,
+ seed_object_get_property_at_index (ctx,
+ arguments[0],
+ i,
+ exception),
+ exception);
+
+ }
+ offset = seed_value_to_double (ctx, arguments[1], exception);
+ cairo_set_dash (cr, dashes, num_dashes, offset);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_pop_group (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+
+ return seed_object_from_cairo_pattern (ctx, cairo_pop_group (cr));
+}
+
+static SeedValue
+seed_cairo_get_dash_count (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ gint dash_count;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ dash_count = cairo_get_dash_count (cr);
+
+ return seed_value_from_int (ctx, dash_count, exception);
+}
+
+static SeedValue
+seed_cairo_get_dash (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue ret[2], *jsdashes;
+ cairo_t *cr;
+ gint dash_count, i;
+ gdouble *dashes, offset;
+
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+ dash_count = cairo_get_dash_count (cr);
+ dashes = g_alloca (dash_count * sizeof(gdouble));
+ jsdashes = g_alloca (dash_count * sizeof(SeedValue));
+
+ cairo_get_dash (cr, dashes, &offset);
+ for (i = 0; i < dash_count; i++)
+ {
+ jsdashes[i] = seed_value_from_double (ctx, dashes[i], exception);
+ }
+ ret[0] = seed_make_array (ctx, jsdashes, dash_count, exception);
+ ret[1] = seed_value_from_double (ctx, offset, exception);
+
+ return seed_make_array (ctx, ret, 2, exception);
+}
+
+static SeedValue
+seed_cairo_get_fill_rule (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_long (ctx, cairo_get_fill_rule (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_fill_rule (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_fill_rule (cr, seed_value_to_long (ctx, value, exception));
+
+ return TRUE;
+}
+
+
+static SeedValue
+seed_cairo_get_line_cap (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_long (ctx, cairo_get_line_cap (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_line_cap (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_line_cap (cr, seed_value_to_long (ctx, value, exception));
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_get_line_join (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_long (ctx, cairo_get_line_join (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_line_join (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_line_join (cr, seed_value_to_long (ctx, value, exception));
+
+ return TRUE;
+}
+
+
+static SeedValue
+seed_cairo_get_line_width (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_double (ctx, cairo_get_line_width (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_line_width (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_line_width (cr, seed_value_to_double (ctx, value, exception));
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_get_miter_limit (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_double (ctx, cairo_get_miter_limit (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_miter_limit (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_miter_limit (cr, seed_value_to_double (ctx, value, exception));
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_get_operator (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_long (ctx, cairo_get_operator (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_operator (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_operator (cr, seed_value_to_long (ctx, value, exception));
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_get_tolerance (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ return seed_value_from_double (ctx, cairo_get_tolerance (cr), exception);
+}
+
+static gboolean
+seed_cairo_set_tolerance (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_tolerance (cr, seed_value_to_double (ctx, value, exception));
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_clip (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_clip(cr);
+ return seed_make_undefined (ctx);
+}
+
+
+static SeedValue
+seed_cairo_clip_preserve (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_clip_preserve(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_reset_clip (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_reset_clip(cr);
+ return seed_make_undefined (ctx);
+}
+
+
+static SeedValue
+seed_cairo_clip_extents (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue jsextents[4];
+ gdouble extents[4];
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("clip_extents", "4 arguments");
+ }
+
+ cairo_clip_extents (cr, &extents[0], &extents[1], &extents[2], &extents[3]);
+ jsextents[0] = seed_value_from_double (ctx, extents[0], exception);
+ jsextents[1] = seed_value_from_double (ctx, extents[1], exception);
+ jsextents[2] = seed_value_from_double (ctx, extents[2], exception);
+ jsextents[3] = seed_value_from_double (ctx, extents[3], exception);
+
+ return seed_make_array (ctx, jsextents, 4, exception);
+}
+
+
+static SeedValue
+seed_cairo_fill (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_fill(cr);
+ return seed_make_undefined (ctx);
+}
+
+
+static SeedValue
+seed_cairo_fill_preserve (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_fill_preserve(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_fill_extents (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue jsextents[4];
+ gdouble extents[4];
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("clip_extents", "4 arguments");
+ }
+
+ cairo_fill_extents (cr, &extents[0], &extents[1], &extents[2], &extents[3]);
+ jsextents[0] = seed_value_from_double (ctx, extents[0], exception);
+ jsextents[1] = seed_value_from_double (ctx, extents[1], exception);
+ jsextents[2] = seed_value_from_double (ctx, extents[2], exception);
+ jsextents[3] = seed_value_from_double (ctx, extents[3], exception);
+
+ return seed_make_array (ctx, jsextents, 4, exception);
+}
+
+static SeedValue
+seed_cairo_in_fill (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_t *cr;
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("in_fill", "2 arguments");
+ }
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ return seed_value_from_boolean (ctx, cairo_in_fill (cr, x, y), exception);
+}
+
+static SeedValue
+seed_cairo_mask_surface (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x,y;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ cr = seed_object_get_private (this_object);
+ surface = seed_object_to_cairo_surface (ctx, arguments[0], exception);
+ if (!surface)
+ return seed_make_undefined (ctx);
+
+ x = seed_value_to_double (ctx, arguments[1], exception);
+ y = seed_value_to_double (ctx, arguments[2], exception);
+ cairo_mask_surface (cr, surface, x, y);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_mask (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ cairo_pattern_t *pat;
+
+ CHECK_THIS();
+ if (argument_count != 1 && argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("mask", "1 or 3 arguments");
+ }
+ if (argument_count == 3)
+ return seed_cairo_mask_surface (ctx, function, this_object, argument_count, arguments, exception);
+ cr = seed_object_get_private (this_object);
+ pat = seed_object_to_cairo_pattern (ctx, arguments[0], exception);
+ if (!pat)
+ {
+ seed_make_exception (ctx, arguments[0], "ArgumentError", "First argument should be a cairo_pattern"
+ " (or cairo surface if there are three arguments)");
+ return seed_make_undefined (ctx);
+ }
+ cairo_mask (cr, pat);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_paint (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_paint(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_paint_with_alpha (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("paint_with_alpha", "1 argument");
+ }
+
+ cr = seed_object_get_private (this_object);
+ cairo_paint_with_alpha (cr, seed_value_to_double (ctx, arguments[0], exception));
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_stroke (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_stroke(cr);
+ return seed_make_undefined (ctx);
+}
+
+
+static SeedValue
+seed_cairo_stroke_preserve (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_stroke_preserve(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_stroke_extents (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue jsextents[4];
+ gdouble extents[4];
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("clip_extents", "4 arguments");
+ }
+
+ cairo_stroke_extents (cr, &extents[0], &extents[1], &extents[2], &extents[3]);
+ jsextents[0] = seed_value_from_double (ctx, extents[0], exception);
+ jsextents[1] = seed_value_from_double (ctx, extents[1], exception);
+ jsextents[2] = seed_value_from_double (ctx, extents[2], exception);
+ jsextents[3] = seed_value_from_double (ctx, extents[3], exception);
+
+ return seed_make_array (ctx, jsextents, 4, exception);
+}
+
+static SeedValue
+seed_cairo_in_stroke (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x, y;
+ cairo_t *cr;
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("in_stroke", "2 arguments");
+ }
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ return seed_value_from_boolean (ctx, cairo_in_stroke (cr, x, y), exception);
+}
+
+static SeedValue
+seed_cairo_copy_page (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_copy_page(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_show_page (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_show_page(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_has_current_point (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ return seed_value_from_boolean (ctx, cairo_has_current_point(cr), exception);
+}
+
+static SeedValue
+seed_cairo_get_current_point (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue points[2];
+ gdouble x, y;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_get_current_point (cr, &x, &y);
+ points[0] = seed_value_from_double (ctx, x, exception);
+ points[1] = seed_value_from_double (ctx, y, exception);
+
+ return seed_make_array (ctx, points, 2, exception);
+}
+
+static SeedValue
+seed_cairo_new_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_new_path(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_new_sub_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_new_sub_path(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_close_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_close_path(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_arc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble xc, yc, radius, angle1, angle2;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 5)
+ {
+ EXPECTED_EXCEPTION ("arc", "5 arguments");
+ }
+ xc = seed_value_to_double (ctx, arguments[0], exception);
+ yc = seed_value_to_double (ctx, arguments[1], exception);
+ radius = seed_value_to_double (ctx, arguments[2], exception);
+ angle1 = seed_value_to_double (ctx, arguments[3], exception);
+ angle2 = seed_value_to_double (ctx, arguments[4], exception);
+
+ cairo_arc (cr, xc, yc, radius, angle1, angle2);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_arc_negative (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble xc, yc, radius, angle1, angle2;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 5)
+ {
+ EXPECTED_EXCEPTION ("arc_negative", "5 arguments");
+ }
+ xc = seed_value_to_double (ctx, arguments[0], exception);
+ yc = seed_value_to_double (ctx, arguments[1], exception);
+ radius = seed_value_to_double (ctx, arguments[2], exception);
+ angle1 = seed_value_to_double (ctx, arguments[3], exception);
+ angle2 = seed_value_to_double (ctx, arguments[4], exception);
+
+ cairo_arc_negative (cr, xc, yc, radius, angle1, angle2);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_curve_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1,x2,y2,x3,y3;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 6)
+ {
+ EXPECTED_EXCEPTION ("curve_to", "6 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+ x2 = seed_value_to_double (ctx, arguments[2], exception);
+ y2 = seed_value_to_double (ctx, arguments[3], exception);
+ x3 = seed_value_to_double (ctx, arguments[4], exception);
+ y3 = seed_value_to_double (ctx, arguments[5], exception);
+
+ cairo_curve_to (cr, x1, y2, x2, y2, x3, y3);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_rel_curve_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1,x2,y2,x3,y3;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 6)
+ {
+ EXPECTED_EXCEPTION ("rel_curve_to", "6 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+ x2 = seed_value_to_double (ctx, arguments[2], exception);
+ y2 = seed_value_to_double (ctx, arguments[3], exception);
+ x3 = seed_value_to_double (ctx, arguments[4], exception);
+ y3 = seed_value_to_double (ctx, arguments[5], exception);
+
+ cairo_rel_curve_to (cr, x1, y2, x2, y2, x3, y3);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_line_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("line_to", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_line_to (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_rel_line_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("rel_line_to", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_rel_line_to (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_move_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("move_to", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_move_to (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_rel_move_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("rel_move_to", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_rel_move_to (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_rectangle (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1, width, height;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION ("rectangle", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+ width = seed_value_to_double (ctx, arguments[2], exception);
+ height = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_rectangle (cr, x1, y1, width, height);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_text_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ gchar *text;
+ CHECK_THIS();
+ cr = seed_object_get_private (this_object);
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("text_path", "1 argument");
+ }
+ text = seed_value_to_string (ctx, arguments[0], exception);
+ cairo_text_path (cr, text);
+ g_free (text);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_path_extents (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue jsextents[4];
+ gdouble extents[4];
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 4)
+ {
+ EXPECTED_EXCEPTION("path_extents", "4 arguments");
+ }
+
+ cairo_path_extents (cr, &extents[0], &extents[1], &extents[2], &extents[3]);
+ jsextents[0] = seed_value_from_double (ctx, extents[0], exception);
+ jsextents[1] = seed_value_from_double (ctx, extents[1], exception);
+ jsextents[2] = seed_value_from_double (ctx, extents[2], exception);
+ jsextents[3] = seed_value_from_double (ctx, extents[3], exception);
+
+ return seed_make_array (ctx, jsextents, 4, exception);
+}
+
+static SeedValue
+seed_cairo_translate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("translate", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_translate (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_scale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble x1,y1;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("scale", "2 arguments");
+ }
+ x1 = seed_value_to_double (ctx, arguments[0], exception);
+ y1 = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_scale (cr, x1, y1);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_rotate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ gdouble angle;
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("rotate", "1 arguments");
+ }
+ angle = seed_value_to_double (ctx, arguments[0], exception);
+
+
+ cairo_rotate (cr, angle);
+ return seed_make_undefined (ctx);
+}
+
+
+
+
+static SeedValue
+seed_cairo_transform (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_matrix_t matrix;
+ cairo_t *cr;
+ CHECK_THIS();
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("transform", "1 argument");
+ }
+ if (!seed_value_to_cairo_matrix (ctx, arguments[0], &matrix, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "transform expects an array [xx,yx,xy,yy,x0,y0]");
+ return seed_make_undefined (ctx);
+ }
+ cr = seed_object_get_private (this_object);
+
+ cairo_transform (cr, &matrix);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_get_matrix (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ cairo_t *cr;
+ cairo_matrix_t m;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+ cairo_get_matrix (cr, &m);
+ return seed_value_from_cairo_matrix (ctx, &m, exception);
+}
+
+static gboolean
+seed_cairo_set_matrix (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ cairo_matrix_t m;
+ cairo_t *cr;
+ CHECK_THIS_BOOL();
+
+ cr = seed_object_get_private (this_object);
+ if (!seed_value_to_cairo_matrix (ctx, value, &m, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "matrix must be an array [xx,yx,xy,yy,x0,y0]");
+ return FALSE;
+ }
+ cairo_set_matrix (cr, &m);
+
+ return TRUE;
+}
+
+static SeedValue
+seed_cairo_identity_matrix (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ CHECK_THIS();
+ cairo_t *cr = seed_object_get_private (this_object);
+
+ cairo_identity_matrix(cr);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_user_to_device (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue out[2];
+ cairo_t *cr;
+ double ix, iy;
+
+ CHECK_THIS();
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("user_to_device", "2 arguments");
+ }
+ cr = seed_object_get_private (this_object);
+ ix = seed_value_to_double (ctx, arguments[0], exception);
+ iy = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_user_to_device (cr, &ix, &iy);
+ out[0] = seed_value_from_double (ctx, ix, exception);
+ out[1] = seed_value_from_double (ctx, iy, exception);
+
+ return seed_make_array (ctx, out, 2, exception);
+}
+
+
+static SeedValue
+seed_cairo_user_to_device_distance (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue out[2];
+ cairo_t *cr;
+ double ix, iy;
+
+ CHECK_THIS();
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("user_to_device_distance", "2 arguments");
+ }
+ cr = seed_object_get_private (this_object);
+ ix = seed_value_to_double (ctx, arguments[0], exception);
+ iy = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_user_to_device_distance (cr, &ix, &iy);
+ out[0] = seed_value_from_double (ctx, ix, exception);
+ out[1] = seed_value_from_double (ctx, iy, exception);
+
+ return seed_make_array (ctx, out, 2, exception);
+}
+
+static SeedValue
+seed_cairo_device_to_user (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue out[2];
+ cairo_t *cr;
+ double ix, iy;
+
+ CHECK_THIS();
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("device_to_user", "2 arguments");
+ }
+ cr = seed_object_get_private (this_object);
+ ix = seed_value_to_double (ctx, arguments[0], exception);
+ iy = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_device_to_user (cr, &ix, &iy);
+ out[0] = seed_value_from_double (ctx, ix, exception);
+ out[1] = seed_value_from_double (ctx, iy, exception);
+
+ return seed_make_array (ctx, out, 2, exception);
+}
+
+static SeedValue
+seed_cairo_device_to_user_distance (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ SeedValue out[2];
+ cairo_t *cr;
+ double ix, iy;
+
+ CHECK_THIS();
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("device_to_user_distance", "2 arguments");
+ }
+ cr = seed_object_get_private (this_object);
+ ix = seed_value_to_double (ctx, arguments[0], exception);
+ iy = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_device_to_user_distance (cr, &ix, &iy);
+ out[0] = seed_value_from_double (ctx, ix, exception);
+ out[1] = seed_value_from_double (ctx, iy, exception);
+
+ return seed_make_array (ctx, out, 2, exception);
+}
+
+static SeedValue
+seed_cairo_set_source (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ cairo_pattern_t *pat;
+
+ CHECK_THIS();
+ if (argument_count != 1 && argument_count != 3)
+ {
+ EXPECTED_EXCEPTION("set_source", "1 or 3 arguments");
+ }
+
+ if (argument_count == 3)
+ return seed_cairo_set_source_surface (ctx, function, this_object, argument_count, arguments, exception);
+ pat = seed_object_to_cairo_pattern (ctx, arguments[0], exception);
+ if (!pat)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "set_source needs a Cairo Pattern as argument");
+ return seed_make_undefined (ctx);
+ }
+
+ cr = seed_object_get_private (this_object);
+ cairo_set_source (cr,pat);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_cairo_get_source (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ cairo_t *cr;
+ CHECK_THIS();
+
+ cr = seed_object_get_private (this_object);
+
+ return seed_object_from_cairo_pattern (ctx, cairo_get_source(cr));
+}
+
+static SeedValue
+seed_cairo_destroy (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ seed_cairo_context_finalize(this_object);
+ return seed_make_undefined (ctx);
+}
+
+seed_static_value cairo_values[] = {
+ {"antialias", seed_cairo_get_antialias, seed_cairo_set_antialias, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"fill_rule", seed_cairo_get_fill_rule, seed_cairo_set_fill_rule, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"line_cap", seed_cairo_get_line_cap, seed_cairo_set_line_cap, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"line_join", seed_cairo_get_line_join, seed_cairo_set_line_join, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"line_width", seed_cairo_get_line_width, seed_cairo_set_line_width, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"miter_limit", seed_cairo_get_miter_limit, seed_cairo_set_miter_limit, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"operator", seed_cairo_get_operator, seed_cairo_set_operator, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"tolerance", seed_cairo_get_tolerance, seed_cairo_set_tolerance, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"matrix", seed_cairo_get_matrix, seed_cairo_set_matrix, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"target", seed_cairo_get_target, NULL, SEED_PROPERTY_ATTRIBUTE_READ_ONLY | SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function cairo_funcs[] = {
+ {"save", seed_cairo_save, 0},
+ {"restore", seed_cairo_restore, 0},
+ {"push_group", seed_cairo_push_group, 0},
+ {"push_group_with_content", seed_cairo_push_group_with_content, 0},
+ {"set_dash", seed_cairo_set_dash, 0},
+ {"get_dash_count", seed_cairo_get_dash_count, 0},
+ {"get_dash", seed_cairo_get_dash, 0},
+ {"pop_group", seed_cairo_pop_group, 0},
+ {"pop_group_to_source", seed_cairo_pop_group_to_source, 0},
+ {"get_group_target", seed_cairo_get_group_target, 0},
+ {"set_source_rgb", seed_cairo_set_source_rgb, 0},
+ {"set_source_rgba", seed_cairo_set_source_rgba, 0},
+ {"set_source", seed_cairo_set_source, 0},
+ {"set_source_surface", seed_cairo_set_source_surface, 0},
+ {"get_source", seed_cairo_get_source, 0},
+ {"clip", seed_cairo_clip, 0},
+ {"clip_preserve", seed_cairo_clip_preserve, 0},
+ {"reset_clip", seed_cairo_reset_clip, 0},
+ {"clip_extents", seed_cairo_clip_extents, 0},
+ // Rectangle list stuff?
+ {"fill", seed_cairo_fill, 0},
+ {"fill_preserve", seed_cairo_fill_preserve, 0},
+ {"fill_extents", seed_cairo_fill_extents, 0},
+ {"mask", seed_cairo_mask, 0},
+ {"in_fill", seed_cairo_in_fill, 0},
+ {"paint", seed_cairo_paint, 0},
+ {"paint_with_alpha", seed_cairo_paint_with_alpha, 0},
+ {"stroke", seed_cairo_stroke, 0},
+ {"stroke_preserve", seed_cairo_stroke_preserve, 0},
+ {"stroke_extents", seed_cairo_stroke_extents, 0},
+ {"in_stroke", seed_cairo_in_stroke, 0},
+ {"copy_page", seed_cairo_copy_page, 0},
+ {"show_page", seed_cairo_show_page, 0},
+ {"has_current_point", seed_cairo_has_current_point, 0},
+ {"get_current_point", seed_cairo_get_current_point, 0},
+ {"new_path", seed_cairo_new_path, 0},
+ {"new_sub_path", seed_cairo_new_sub_path, 0},
+ {"close_path", seed_cairo_close_path, 0},
+ {"arc", seed_cairo_arc, 0},
+ {"arc_negative", seed_cairo_arc_negative, 0},
+ {"curve_to", seed_cairo_curve_to, 0},
+ {"line_to", seed_cairo_line_to, 0},
+ {"move_to", seed_cairo_move_to, 0},
+ {"rectangle", seed_cairo_rectangle, 0},
+ //{"cairo_glpyh_path", seed_cairo_glyph_path, 0},
+ {"text_path", seed_cairo_text_path, 0},
+ {"rel_curve_to", seed_cairo_rel_curve_to, 0},
+ {"rel_line_to", seed_cairo_rel_line_to, 0},
+ {"rel_move_to", seed_cairo_rel_move_to, 0},
+ {"path_extents", seed_cairo_path_extents, 0},
+ {"translate", seed_cairo_translate, 0},
+ {"scale", seed_cairo_scale, 0},
+ {"rotate", seed_cairo_rotate, 0},
+ {"transform", seed_cairo_transform, 0},
+ {"identify_matrix", seed_cairo_identity_matrix, 0},
+ {"user_to_device", seed_cairo_user_to_device, 0},
+ {"user_to_device_distance", seed_cairo_user_to_device_distance, 0},
+ {"device_to_user", seed_cairo_device_to_user, 0},
+ {"device_to_user_distance", seed_cairo_device_to_user_distance, 0},
+ {"destroy", seed_cairo_destroy, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine * local_eng)
+{
+ SeedObject context_constructor_ref;
+ SeedObject gdk_context_constructor_ref;
+ SeedObject steal_context_constructor_ref;
+ SeedObject namespace_ref;
+ seed_class_definition cairo_def = seed_empty_class;
+ eng = local_eng;
+ namespace_ref = seed_make_object (eng->context, NULL, NULL);
+
+ // Temporary hack until API changes.
+ seed_value_protect (eng->context, namespace_ref);
+
+ seed_define_cairo_enums (eng->context, namespace_ref);
+ seed_define_cairo_surface (eng->context, namespace_ref);
+ seed_define_cairo_matrix (eng->context, namespace_ref);
+ seed_define_cairo_pattern (eng->context, namespace_ref);
+
+ cairo_def.class_name = "Context";
+ cairo_def.static_functions = cairo_funcs;
+ cairo_def.static_values = cairo_values;
+ cairo_def.finalize = seed_cairo_context_finalize;
+ seed_cairo_context_class = seed_create_class (&cairo_def);
+ // Hack around WebKit GC bug.
+ context_constructor_ref = seed_make_constructor (eng->context,
+ NULL,
+ // seed_cairo_context_class,
+ seed_cairo_construct_context);
+ gdk_context_constructor_ref = seed_make_constructor (eng->context,
+ NULL,
+ // seed_cairo_context_class,
+ seed_cairo_construct_context_from_window);
+ steal_context_constructor_ref = seed_make_constructor (eng->context,
+ NULL,
+ // seed_cairo_context_class,
+ seed_cairo_construct_context_steal);
+
+ seed_object_set_property (eng->context, namespace_ref, "Context", context_constructor_ref);
+ seed_object_set_property (eng->context, context_constructor_ref, "from_window", gdk_context_constructor_ref);
+ seed_object_set_property (eng->context, context_constructor_ref, "steal", steal_context_constructor_ref);
+
+ return namespace_ref;
+}
diff --git a/modules/cairo/seed-cairo.h b/modules/cairo/seed-cairo.h
new file mode 100644
index 0000000..719fb8f
--- /dev/null
+++ b/modules/cairo/seed-cairo.h
@@ -0,0 +1,13 @@
+#ifndef _SEED_CAIRO_H
+#define _SEED_CAIRO_H
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#define EXPECTED_EXCEPTION(name, argnum) \
+ seed_make_exception (ctx, exception, "ArgumentError", name " expected " argnum " got %Zd", argument_count); \
+ return seed_make_undefined (ctx);
+
+cairo_user_data_key_t *seed_get_cairo_key ();
+void seed_cairo_destroy_func (void *obj);
+
+#endif
diff --git a/modules/canvas/Makefile.am b/modules/canvas/Makefile.am
new file mode 100644
index 0000000..7670a3b
--- /dev/null
+++ b/modules/canvas/Makefile.am
@@ -0,0 +1,30 @@
+if BUILD_CANVAS_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+EXTRA_DIST=run-tests.js
+
+seedlib_LTLIBRARIES = \
+ libseed_canvas.la
+
+libseed_canvas_la_SOURCES = \
+ seed-canvas.c
+
+libseed_canvas_la_CFLAGS = \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ -I@top_srcdir@/libseed/ \
+ $(CAIRO_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_canvas_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(CAIRO_LDFLAGS)
+
+libseed_canvas_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(CAIRO_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
diff --git a/modules/canvas/Makefile.in b/modules/canvas/Makefile.in
new file mode 100644
index 0000000..5927467
--- /dev/null
+++ b/modules/canvas/Makefile.in
@@ -0,0 +1,666 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/canvas
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_CANVAS_MODULE_TRUE@libseed_canvas_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_CANVAS_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_CANVAS_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_canvas_la_SOURCES_DIST = seed-canvas.c
+@BUILD_CANVAS_MODULE_TRUE@am_libseed_canvas_la_OBJECTS = \
+@BUILD_CANVAS_MODULE_TRUE@ libseed_canvas_la-seed-canvas.lo
+libseed_canvas_la_OBJECTS = $(am_libseed_canvas_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_canvas_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_canvas_la_CFLAGS) $(CFLAGS) \
+ $(libseed_canvas_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_CANVAS_MODULE_TRUE@am_libseed_canvas_la_rpath = -rpath \
+@BUILD_CANVAS_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_canvas_la_SOURCES)
+DIST_SOURCES = $(am__libseed_canvas_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_CANVAS_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_CANVAS_MODULE_TRUE@EXTRA_DIST = run-tests.js
+@BUILD_CANVAS_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_CANVAS_MODULE_TRUE@ libseed_canvas.la
+
+@BUILD_CANVAS_MODULE_TRUE@libseed_canvas_la_SOURCES = \
+@BUILD_CANVAS_MODULE_TRUE@ seed-canvas.c
+
+@BUILD_CANVAS_MODULE_TRUE@libseed_canvas_la_CFLAGS = \
+@BUILD_CANVAS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_CANVAS_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_CANVAS_MODULE_TRUE@ $(CAIRO_CFLAGS) \
+@BUILD_CANVAS_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_CANVAS_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_CANVAS_MODULE_TRUE@libseed_canvas_la_LDFLAGS = \
+@BUILD_CANVAS_MODULE_TRUE@ -module -avoid-version \
+@BUILD_CANVAS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_CANVAS_MODULE_TRUE@ $(CAIRO_LDFLAGS)
+
+@BUILD_CANVAS_MODULE_TRUE@libseed_canvas_la_LIBADD = \
+@BUILD_CANVAS_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_CANVAS_MODULE_TRUE@ $(CAIRO_LIBS) \
+@BUILD_CANVAS_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/canvas/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/canvas/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_canvas.la: $(libseed_canvas_la_OBJECTS) $(libseed_canvas_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_canvas_la_LINK) $(am_libseed_canvas_la_rpath) $(libseed_canvas_la_OBJECTS) $(libseed_canvas_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_canvas_la-seed-canvas.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_canvas_la-seed-canvas.lo: seed-canvas.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_canvas_la_CFLAGS) $(CFLAGS) -MT libseed_canvas_la-seed-canvas.lo -MD -MP -MF $(DEPDIR)/libseed_canvas_la-seed-canvas.Tpo -c -o libseed_canvas_la-seed-canvas.lo `test -f 'seed-canvas.c' || echo '$(srcdir)/'`seed-canvas.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_canvas_la-seed-canvas.Tpo $(DEPDIR)/libseed_canvas_la-seed-canvas.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-canvas.c' object='libseed_canvas_la-seed-canvas.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_canvas_la_CFLAGS) $(CFLAGS) -c -o libseed_canvas_la-seed-canvas.lo `test -f 'seed-canvas.c' || echo '$(srcdir)/'`seed-canvas.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/canvas/run-tests.js b/modules/canvas/run-tests.js
new file mode 100755
index 0000000..829568d
--- /dev/null
+++ b/modules/canvas/run-tests.js
@@ -0,0 +1,416 @@
+#!/usr/bin/env seed
+Canvas = imports.canvas;
+
+function drawSpirograph(ctx,R,r,O){
+ var x1 = R-O;
+ var y1 = 0;
+ var i = 1;
+ ctx.beginPath();
+ ctx.moveTo(x1,y1);
+ do {
+ if (i>20000) break;
+ var x2 =
+ (R+r)*Math.cos(i*Math.PI/72) - (r+O)*Math.cos(((R+r)/r)*(i*Math.PI/72))
+ var y2 =
+ (R+r)*Math.sin(i*Math.PI/72) - (r+O)*Math.sin(((R+r)/r)*(i*Math.PI/72))
+ ctx.lineTo(x2,y2);
+ x1 = x2;
+ y1 = y2;
+ i++;
+ } while (x2 != R-O && y2 != 0 );
+ ctx.stroke();
+}
+
+
+function test10(ctx)
+{
+ for (i=0;i<6;i++){
+ for (j=0;j<6;j++){
+ ctx.fillStyle = 'rgb(' + Math.floor(255-42.5*i) + ',' +
+ Math.floor(255-42.5*j) + ',0)';
+ ctx.fillRect(j*25,i*25,25,25);
+ }
+ }
+ ctx.translate(150, 0);
+ for (i=0;i<6;i++){
+ for (j=0;j<6;j++){
+ ctx.strokeStyle = 'rgb(0,' + Math.floor(255-42.5*i) + ',' +
+ Math.floor(255-42.5*j) + ')';
+ ctx.beginPath();
+ ctx.arc(12.5+j*25,12.5+i*25,10,0,Math.PI*2,true);
+ ctx.stroke();
+ }
+ }
+}
+
+function test11(ctx)
+{
+ // draw background
+ ctx.fillStyle = '#FD0';
+ ctx.fillRect(0,0,75,75);
+ ctx.fillStyle = '#6C0';
+ ctx.fillRect(75,0,75,75);
+ ctx.fillStyle = '#09F';
+ ctx.fillRect(0,75,75,75);
+ ctx.fillStyle = '#F30';
+ ctx.fillRect(75,75,75,75);
+ ctx.fillStyle = '#FFF';
+
+ // set transparency value
+ ctx.globalAlpha = 0.2;
+
+ // Draw semi transparent circles
+ for (i=0;i<7;i++){
+ ctx.beginPath();
+ ctx.arc(75,75,10+10*i,0,Math.PI*2,true);
+ ctx.fill();
+ }
+}
+
+function test12(ctx)
+{
+ ctx.fillStyle = 'rgb(255,221,0)';
+ ctx.fillRect(0,0,150,37.5);
+ ctx.fillStyle = 'rgb(102,204,0)';
+ ctx.fillRect(0,37.5,150,37.5);
+ ctx.fillStyle = 'rgb(0,153,255)';
+ ctx.fillRect(0,75,150,37.5);
+ ctx.fillStyle = 'rgb(255,51,0)';
+ ctx.fillRect(0,112.5,150,37.5);
+
+ // Draw semi transparent rectangles
+ for (i=0;i<10;i++){
+ ctx.fillStyle = 'rgba(255,255,255,'+(i+1)/10+')';
+ for (j=0;j<4;j++){
+ ctx.fillRect(5+i*14,5+j*37.5,14,27.5)
+ }
+ }
+}
+
+function test13(ctx)
+{
+ for (i = 0; i < 10; i++){
+ ctx.lineWidth = 1+i;
+ ctx.beginPath();
+ ctx.moveTo(5+i*14,5);
+ ctx.lineTo(5+i*14,140);
+ ctx.stroke();
+ }
+}
+
+function test14(ctx)
+{
+ var lineCap = ['butt','round','square'];
+
+ ctx.strokeStyle = '#09f';
+ ctx.beginPath();
+ ctx.moveTo(10,10);
+ ctx.lineTo(140,10);
+ ctx.moveTo(10,140);
+ ctx.lineTo(140,140);
+ ctx.stroke();
+
+ // Draw lines
+ ctx.strokeStyle = "rgb(0,0,0)";
+ for (i=0;i<lineCap.length;i++){
+ ctx.lineWidth = 15;
+ ctx.lineCap = lineCap[i];
+ ctx.beginPath();
+ ctx.moveTo(25+i*50,10);
+ ctx.lineTo(25+i*50,140);
+ ctx.stroke();
+ }
+}
+
+function test15(ctx)
+{
+ var lineJoin = ['round','bevel','miter'];
+ ctx.lineWidth = 10;
+ for (i=0;i<lineJoin.length;i++){
+ ctx.lineJoin = lineJoin[i];
+ ctx.beginPath();
+ ctx.moveTo(-5,5+i*40);
+ ctx.lineTo(35,45+i*40);
+ ctx.lineTo(75,5+i*40);
+ ctx.lineTo(115,45+i*40);
+ ctx.lineTo(155,5+i*40);
+ ctx.stroke();
+ }
+}
+
+function test16(ctx)
+{
+ ctx.strokeStyle = "#fc0";
+ ctx.lineWidth = 1.5;
+ ctx.fillRect(0,0,300,300);
+
+ // Uniform scaling
+ ctx.save()
+ ctx.translate(50,50);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(100,0);
+ ctx.scale(0.75,0.75);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(133.333,0);
+ ctx.scale(0.75,0.75);
+ drawSpirograph(ctx,22,6,5);
+ ctx.restore();
+
+ // Non uniform scaling (y direction)
+ ctx.strokeStyle = "#0cf";
+ ctx.save()
+ ctx.translate(50,150);
+ ctx.scale(1,0.75);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(100,0);
+ ctx.scale(1,0.75);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(100,0);
+ ctx.scale(1,0.75);
+ drawSpirograph(ctx,22,6,5);
+ ctx.restore();
+
+ // Non uniform scaling (x direction)
+ ctx.strokeStyle = "#cf0";
+ ctx.save()
+ ctx.translate(50,250);
+ ctx.scale(0.75,1);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(133.333,0);
+ ctx.scale(0.75,1);
+ drawSpirograph(ctx,22,6,5);
+
+ ctx.translate(177.777,0);
+ ctx.scale(0.75,1);
+ drawSpirograph(ctx,22,6,5);
+ ctx.restore();
+
+}
+
+function test1(ctx)
+{
+ ctx.fillStyle = "rgb(200,0,0)";
+ ctx.fillRect (10, 10, 55, 50);
+
+ ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
+ ctx.fillRect (30, 30, 55, 50);
+}
+
+function test2(ctx)
+{
+ ctx.fillRect(25,25,100,100);
+ ctx.clearRect(45,45,60,60);
+ ctx.strokeRect(50,50,50,50);
+}
+
+function test3(ctx)
+{
+ ctx.beginPath();
+ ctx.moveTo(75,50);
+ ctx.lineTo(100,75);
+ ctx.lineTo(100,25);
+ ctx.fill();
+}
+
+function test4(ctx)
+{
+ ctx.moveTo(0, 0);
+ ctx.beginPath();
+ ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle
+ ctx.moveTo(110,75);
+ ctx.arc(75,75,35,0,Math.PI,false); // Mouth (clockwise)
+ ctx.moveTo(65,65);
+ ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye
+ ctx.moveTo(95,65);
+ ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye
+ ctx.stroke();
+}
+
+function test5(ctx)
+{
+ // Filled triangle
+ ctx.beginPath();
+ ctx.moveTo(25,25);
+ ctx.lineTo(105,25);
+ ctx.lineTo(25,105);
+ ctx.fill();
+
+ // Stroked triangle
+ ctx.beginPath();
+ ctx.moveTo(125,125);
+ ctx.lineTo(125,45);
+ ctx.lineTo(45,125);
+ ctx.closePath();
+ ctx.stroke();
+
+}
+
+function test6(ctx)
+{
+ for (i=0;i<4;i++){
+ for(j=0;j<3;j++){
+ ctx.beginPath();
+ var x = 25+j*50; // x coordinate
+ var y = 25+i*50; // y coordinate
+ var radius = 20; // Arc radius
+ var startAngle = 0; // Starting point on circle
+ var endAngle = Math.PI+(Math.PI*j)/2; // End point on circle
+ var anticlockwise = i%2==0 ? false : true; // clockwise or anticlockwise
+
+ ctx.arc(x,y,radius,startAngle,endAngle, anticlockwise);
+
+ if (i>1){
+ ctx.fill();
+ } else {
+ ctx.stroke();
+ }
+ }
+ }
+
+}
+
+function test7(ctx)
+{
+ ctx.beginPath();
+ ctx.moveTo(75,25);
+ ctx.quadraticCurveTo(25,25,25,62.5);
+ ctx.quadraticCurveTo(25,100,50,100);
+ ctx.quadraticCurveTo(50,120,30,125);
+ ctx.quadraticCurveTo(60,120,65,100);
+ ctx.quadraticCurveTo(125,100,125,62.5);
+ ctx.quadraticCurveTo(125,25,75,25);
+ ctx.stroke();
+}
+
+
+function test8(ctx)
+{
+ ctx.beginPath();
+ ctx.moveTo(75,40);
+ ctx.bezierCurveTo(75,37,70,25,50,25);
+ ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
+ ctx.bezierCurveTo(20,80,40,102,75,120);
+ ctx.bezierCurveTo(110,102,130,80,130,62.5);
+ ctx.bezierCurveTo(130,62.5,130,25,100,25);
+ ctx.bezierCurveTo(85,25,75,37,75,40);
+ ctx.fill();
+}
+
+function roundedRect(ctx,x,y,width,height,radius){
+ ctx.beginPath();
+ ctx.moveTo(x,y+radius);
+ ctx.lineTo(x,y+height-radius);
+ ctx.quadraticCurveTo(x,y+height,x+radius,y+height);
+ ctx.lineTo(x+width-radius,y+height);
+ ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);
+ ctx.lineTo(x+width,y+radius);
+ ctx.quadraticCurveTo(x+width,y,x+width-radius,y);
+ ctx.lineTo(x+radius,y);
+ ctx.quadraticCurveTo(x,y,x,y+radius);
+ ctx.stroke();
+}
+
+function test9(ctx)
+{
+ roundedRect(ctx,12,12,150,150,15);
+ roundedRect(ctx,19,19,150,150,9);
+ roundedRect(ctx,53,53,49,33,10);
+ roundedRect(ctx,53,119,49,16,6);
+ roundedRect(ctx,135,53,49,33,10);
+ roundedRect(ctx,135,119,25,49,10);
+
+ ctx.beginPath();
+ ctx.arc(37,37,13,Math.PI/7,-Math.PI/7,true);
+ ctx.lineTo(31,37);
+ ctx.fill();
+ for(i=0;i<8;i++){
+ ctx.fillRect(51+i*16,35,4,4);
+ }
+ for(i=0;i<6;i++){
+ ctx.fillRect(115,51+i*16,4,4);
+ }
+ for(i=0;i<8;i++){
+ ctx.fillRect(51+i*16,99,4,4);
+ }
+ ctx.beginPath();
+ ctx.moveTo(83,116);
+ ctx.lineTo(83,102);
+ ctx.bezierCurveTo(83,94,89,88,97,88);
+ ctx.bezierCurveTo(105,88,111,94,111,102);
+ ctx.lineTo(111,116);
+ ctx.lineTo(106.333,111.333);
+ ctx.lineTo(101.666,116);
+ ctx.lineTo(97,111.333);
+ ctx.lineTo(92.333,116);
+ ctx.lineTo(87.666,111.333);
+ ctx.lineTo(83,116);
+ ctx.fill();
+ ctx.fillStyle = "rgb(255,255,255)";
+ ctx.beginPath();
+ ctx.moveTo(91,96);
+ ctx.bezierCurveTo(88,96,87,99,87,101);
+ ctx.bezierCurveTo(87,103,88,106,91,106);
+ ctx.bezierCurveTo(94,106,95,103,95,101);
+ ctx.bezierCurveTo(95,99,94,96,91,96);
+ ctx.moveTo(103,96);
+ ctx.bezierCurveTo(100,96,99,99,99,101);
+ ctx.bezierCurveTo(99,103,100,106,103,106);
+ ctx.bezierCurveTo(106,106,107,103,107,101);
+ ctx.bezierCurveTo(107,99,106,96,103,96);
+ ctx.fill();
+ ctx.fillStyle = "rgb(0,0,0)";
+ ctx.beginPath();
+ ctx.arc(101,102,2,0,Math.PI*2,true);
+ ctx.fill();
+ ctx.beginPath();
+ ctx.arc(89,102,2,0,Math.PI*2,true);
+ ctx.fill();
+}
+
+var compositeTypes = [
+ 'source-over','source-in','source-out','source-atop',
+ 'destination-over','destination-in','destination-out','destination-atop',
+ 'lighter','darker','copy','xor'
+];
+ function test17(ctx){
+ for (var i=0;i<3;i++){
+ for (var j = 0;j<4;j++){
+ // draw rectangle
+ ctx.save();
+ ctx.fillStyle = "#09f";
+ ctx.fillRect(70*i,70*j,40,40);
+
+ // set composite property
+ ctx.globalCompositeOperation = compositeTypes[i*4+j];
+
+ // draw circle
+ ctx.fillStyle = "#f30";
+ ctx.beginPath();
+ ctx.arc(70*i,70*j,17,0,Math.PI*2,true);
+ ctx.fill();
+ ctx.restore();
+ }
+ }
+ }
+
+
+tests = [test1, test2, test3, test4,
+ test5, test6, test7, test8,
+ test9, test10, test11, test12,
+ test13, test14, test15, test16, test17];
+
+ctx = new Canvas.PDFCanvas("tests.pdf", 500, 500);
+for (test in tests)
+ {
+ ctx.save();
+ tests[test](ctx);
+ ctx.restore();
+ ctx.showPage();
+ }
+
+ctx.finish();
diff --git a/modules/canvas/seed-canvas.c b/modules/canvas/seed-canvas.c
new file mode 100644
index 0000000..aafac85
--- /dev/null
+++ b/modules/canvas/seed-canvas.c
@@ -0,0 +1,1095 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include <cairo.h>
+#include <cairo-pdf.h>
+#include <cairo-svg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+SeedObject namespace_ref;
+SeedClass canvas_class;
+SeedEngine *eng;
+
+typedef struct _SeedCanvasColor {
+ gdouble r;
+ gdouble g;
+ gdouble b;
+ gdouble a;
+} SeedCanvasColor;
+
+typedef struct _SeedCanvasStyle {
+ SeedCanvasColor fill;
+ SeedCanvasColor stroke;
+
+ gdouble global_opacity;
+ cairo_operator_t operator;
+} SeedCanvasStyle;
+
+typedef struct _SeedCanvasPrivates {
+ cairo_t *cr;
+
+ GSList *styles;
+} SeedCanvasPrivates;
+
+#define GET_CR \
+ SeedCanvasPrivates *priv = seed_object_get_private(this_object); \
+ cairo_t *cr = priv->cr
+
+
+SeedObject
+canvas_construct_canvas_from_cairo (SeedContext ctx, cairo_t * cr,
+ SeedException * exception)
+{
+ SeedObject obj;
+ SeedCanvasPrivates *priv = g_slice_alloc(sizeof(SeedCanvasPrivates));
+
+ cairo_set_source_rgb (cr, 0, 0, 0);
+ cairo_set_miter_limit (cr, 10);
+
+ priv->cr = cr;
+ priv->styles = NULL;
+
+ obj = seed_make_object (ctx, canvas_class, priv);
+
+ seed_object_set_property (ctx, obj, "globalAlpha",
+ seed_value_from_double (ctx, 1.0, exception));
+ seed_object_set_property (ctx, obj, "lineWidth",
+ seed_value_from_double (ctx, 1.0, exception));
+ seed_object_set_property (ctx, obj, "miterLimit",
+ seed_value_from_double (ctx, 10, exception));
+ seed_object_set_property (ctx, obj, "lineCap",
+ seed_value_from_string (ctx, "butt", exception));
+ seed_object_set_property (ctx, obj, "lineJoin",
+ seed_value_from_string (ctx, "miter", exception));
+ seed_object_set_property (ctx, obj, "cairo",
+ (SeedValue) seed_make_pointer (ctx, cr));
+
+ return obj;
+}
+
+SeedObject
+seed_construct_image_canvas (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject obj;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+ gchar *filename;
+ gdouble width, height;
+
+ if (argument_count != 3)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Canvas.PDFCanvas constructor expected"
+ "3 arguments");
+ return (SeedObject) seed_make_null (ctx);
+ }
+
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+
+ width = seed_value_to_double (ctx, arguments[1], exception);
+ height = seed_value_to_double (ctx, arguments[2], exception);
+
+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ obj = canvas_construct_canvas_from_cairo (ctx, cr, exception);
+
+ return obj;
+}
+
+SeedObject
+canvas_construct_pdf_canvas (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject obj;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+ gchar *filename;
+ gdouble width, height;
+
+ if (argument_count != 3)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Canvas.PDFCanvas constructor expected"
+ "3 arguments");
+ return (SeedObject) seed_make_null (ctx);
+ }
+
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+
+ width = seed_value_to_double (ctx, arguments[1], exception);
+ height = seed_value_to_double (ctx, arguments[2], exception);
+
+ surface = cairo_pdf_surface_create (filename, width, height);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ obj = canvas_construct_canvas_from_cairo (ctx, cr, exception);
+
+ return obj;
+}
+
+SeedObject
+canvas_construct_svg_canvas (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject obj;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+ gchar *filename;
+ gdouble width, height;
+
+ if (argument_count != 3)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Canvas.PDFCanvas constructor expected"
+ "3 arguments");
+ return (SeedObject) seed_make_null (ctx);
+ }
+
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+
+ width = seed_value_to_double (ctx, arguments[1], exception);
+ height = seed_value_to_double (ctx, arguments[2], exception);
+
+ surface = cairo_svg_surface_create (filename, width, height);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ obj = canvas_construct_canvas_from_cairo (ctx, cr, exception);
+
+ return obj;
+}
+
+SeedObject
+canvas_construct_canvas (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject obj;
+ cairo_t *cr;
+ if (argument_count != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Canvas.CairoCanvas constructor"
+ "expected 1 argument");
+ return (SeedObject) seed_make_null (ctx);
+ }
+
+ cr = seed_pointer_get_pointer (ctx, arguments[0]);
+
+ obj = canvas_construct_canvas_from_cairo (ctx, cr, exception);
+
+ return obj;
+}
+
+void
+seed_canvas_parse_color (SeedCanvasColor *color,
+ gchar *spec)
+{
+ if (*spec == '#')
+ {
+ guint r = 0, g = 0, b = 0, a = 0, found;
+
+ if (strlen (spec) > 4)
+ found = sscanf(spec, "#%2x%2x%2x%2x", &r, &g, &b, &a);
+ else
+ {
+ found = sscanf (spec, "#%1x%1x%1x%1x", &r, &g, &b, &a);
+ r *= 17;
+ g *= 17;
+ b *= 17;
+ a *= 17;
+ }
+ if (found < 4)
+ a = 0xff;
+
+ color->r = r / 255.0;
+ color->g = g / 255.0;
+ color->b = b / 255.0;
+ color->a = a / 255.0;
+
+ return;
+ }
+ else if (*spec == 'r')
+ {
+ switch (*(spec + 3))
+ {
+ case 'a':
+ {
+ gdouble r, g, b;
+ gfloat a;
+
+ sscanf (spec, "rgba(%lf,%lf,%lf,%f)", &r, &g, &b, &a);
+
+ color->r = r/255.0;
+ color->g = g/255.0;
+ color->b = b/255.0;
+ color->a = a;
+
+ return;
+ }
+ case '(':
+ {
+ gdouble r, g, b;
+
+ sscanf (spec, "rgb(%lf,%lf,%lf)", &r, &g, &b);
+
+ color->r = r / 255.0;
+ color->g = g / 255.0;
+ color->b = b / 255.0;
+ color->a = 1.0;
+
+ return;
+ }
+ }
+ }
+ else if (*spec == '[')
+ {
+ color->r = color->b = color->g = 0;
+ color->a = 1;
+ }
+}
+
+gboolean
+seed_canvas_update_stroke_style (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException * e)
+{
+ SeedCanvasStyle *style;
+ SeedCanvasPrivates *priv = seed_object_get_private(this_object);
+
+ gchar *stroke_style = seed_value_to_string (ctx, value, e);
+
+ if (!priv->styles)
+ {
+ priv->styles = g_slist_prepend(priv->styles, g_new0(SeedCanvasStyle, 1));
+ ((SeedCanvasStyle *) priv->styles->data)->global_opacity = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->fill.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->operator = CAIRO_OPERATOR_OVER;
+ }
+
+ style = (SeedCanvasStyle *)priv->styles->data;
+
+ seed_canvas_parse_color (&style->stroke, stroke_style);
+
+ g_free(stroke_style);
+
+ return TRUE;
+}
+
+
+gboolean
+seed_canvas_update_fill_style (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ SeedCanvasStyle *style;
+ SeedCanvasPrivates *priv = seed_object_get_private(this_object);
+
+ gchar *fill_style = seed_value_to_string (ctx, value, e);
+
+ if (!priv->styles)
+ {
+ priv->styles = g_slist_prepend(priv->styles, g_new0(SeedCanvasStyle, 1));
+ ((SeedCanvasStyle *) priv->styles->data)->global_opacity = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->stroke.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->operator = CAIRO_OPERATOR_OVER;
+ }
+
+ style = (SeedCanvasStyle *)priv->styles->data;
+
+
+ seed_canvas_parse_color (&style->fill, fill_style);
+
+ g_free(fill_style);
+
+ return TRUE;
+}
+
+gboolean
+seed_canvas_update_global_alpha (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ SeedCanvasStyle *style;
+ SeedCanvasPrivates *priv = seed_object_get_private(this_object);
+
+ gdouble global_alpha = seed_value_to_double (ctx, value, e);
+
+ if (!priv->styles)
+ {
+ priv->styles = g_slist_prepend(priv->styles, g_new0(SeedCanvasStyle, 1));
+ ((SeedCanvasStyle *) priv->styles->data)->global_opacity = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->stroke.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->fill.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->operator = CAIRO_OPERATOR_OVER;
+ }
+
+ style = (SeedCanvasStyle *)priv->styles->data;
+
+ style->global_opacity = global_alpha;
+
+ return TRUE;
+}
+
+gboolean
+seed_canvas_update_global_composite (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ SeedCanvasStyle *style;
+ GET_CR;
+ gchar *composite_op = seed_value_to_string (ctx, value, e);
+
+ if (!priv->styles)
+ {
+ priv->styles = g_slist_prepend(priv->styles, g_new0(SeedCanvasStyle, 1));
+ ((SeedCanvasStyle *) priv->styles->data)->global_opacity = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->stroke.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->fill.a = 1;
+ ((SeedCanvasStyle *) priv->styles->data)->operator = CAIRO_OPERATOR_OVER;
+ }
+
+ style = (SeedCanvasStyle *)priv->styles->data;
+
+ if (!strcmp (composite_op, "copy"))
+ style->operator = CAIRO_OPERATOR_SOURCE;
+ else if (!strcmp (composite_op, "source-over"))
+ style->operator = CAIRO_OPERATOR_OVER;
+ else if (!strcmp (composite_op, "source-in"))
+ style->operator = CAIRO_OPERATOR_IN;
+ else if (!strcmp (composite_op, "source-out"))
+ style->operator = CAIRO_OPERATOR_OUT;
+ else if (!strcmp (composite_op, "source-atop"))
+ style->operator = CAIRO_OPERATOR_ATOP;
+ else if (!strcmp (composite_op, "destination-over"))
+ style->operator = CAIRO_OPERATOR_DEST_OVER;
+ else if (!strcmp (composite_op, "destination-in"))
+ style->operator = CAIRO_OPERATOR_DEST_IN;
+ else if (!strcmp (composite_op, "destination-out"))
+ style->operator = CAIRO_OPERATOR_DEST_OVER;
+ else if (!strcmp (composite_op, "destination-atop"))
+ style->operator = CAIRO_OPERATOR_DEST_ATOP;
+ else if (!strcmp (composite_op, "xor"))
+ style->operator = CAIRO_OPERATOR_XOR;
+ else if (!strcmp (composite_op, "darker"))
+ style->operator = CAIRO_OPERATOR_SATURATE;
+ else if (!strcmp (composite_op, "lighter"))
+ style->operator = CAIRO_OPERATOR_ADD;
+ else
+ style->operator = CAIRO_OPERATOR_OVER;
+
+ cairo_set_operator (cr, style->operator);
+
+ g_free (composite_op);
+
+ return TRUE;
+}
+
+gboolean
+seed_canvas_set_linewidth (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ GET_CR;
+ gdouble line_width = seed_value_to_double (ctx, value, e);
+
+ cairo_set_line_width (cr, line_width);
+ return TRUE;
+}
+
+gboolean
+seed_canvas_set_miterlimit (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ GET_CR;
+
+ cairo_set_miter_limit (cr, seed_value_to_double (ctx, value, e));
+ return TRUE;
+}
+
+gboolean
+seed_canvas_set_linecap (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ GET_CR;
+ cairo_line_cap_t cap = CAIRO_LINE_CAP_BUTT;
+ gchar *line_cap = seed_value_to_string (ctx, value, e);
+
+ if (!strcmp (line_cap, "round"))
+ cap = CAIRO_LINE_CAP_ROUND;
+ else if (!strcmp (line_cap, "square"))
+ cap = CAIRO_LINE_CAP_SQUARE;
+
+ g_free (line_cap);
+
+ cairo_set_line_cap (cr, cap);
+ return TRUE;
+}
+
+gboolean
+seed_canvas_set_linejoin (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value, SeedException * e)
+{
+ GET_CR;
+ cairo_line_join_t join = CAIRO_LINE_JOIN_MITER;
+ gchar *line_join = seed_value_to_string (ctx, value, e);
+
+ if (!strcmp (line_join, "round"))
+ join = CAIRO_LINE_JOIN_ROUND;
+ else if (!strcmp (line_join, "bevel"))
+ join = CAIRO_LINE_JOIN_BEVEL;
+
+ g_free (line_join);
+
+ cairo_set_line_join (cr, join);
+ return TRUE;
+}
+
+void
+seed_canvas_apply_stroke_style (SeedCanvasStyle *style,
+ cairo_t * cr)
+{
+ cairo_set_source_rgba(cr,
+ style->stroke.r,
+ style->stroke.g,
+ style->stroke.b,
+ style->stroke.a * style->global_opacity);
+ cairo_set_operator (cr, style->operator);
+}
+
+void
+seed_canvas_apply_fill_style (SeedCanvasStyle *style,
+ cairo_t * cr)
+{
+ cairo_set_source_rgba(cr,
+ style->fill.r,
+ style->fill.g,
+ style->fill.b,
+ style->fill.a * style->global_opacity);
+ cairo_set_operator (cr, style->operator);
+}
+
+SeedValue
+seed_canvas_save (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ SeedCanvasStyle *old_style = (SeedCanvasStyle *)priv->styles->data;
+
+ cairo_save (cr);
+
+ priv->styles = g_slist_prepend(priv->styles, g_new(SeedCanvasStyle, 1));
+
+ memcpy(priv->styles->data, old_style, sizeof(SeedCanvasStyle));
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_restore (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ SeedCanvasStyle *style;
+
+ style = (SeedCanvasStyle *)priv->styles->data;
+ priv->styles = g_slist_delete_link(priv->styles, priv->styles);
+ g_free(style);
+
+ cairo_restore (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_scale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x = seed_value_to_double (ctx, arguments[0], exception);
+ gdouble y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_scale (cr, x, y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_translate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x = seed_value_to_double (ctx, arguments[0], exception);
+ gdouble y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_translate (cr, x, y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_rotate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x = seed_value_to_double (ctx, arguments[0], exception);
+
+ cairo_rotate (cr, x);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_transform (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ cairo_matrix_t matrix;
+ gdouble xx, yx, xy, yy, x0, y0;
+
+ xx = seed_value_to_double (ctx, arguments[0], exception);
+ yx = seed_value_to_double (ctx, arguments[1], exception);
+ xy = seed_value_to_double (ctx, arguments[2], exception);
+ yy = seed_value_to_double (ctx, arguments[3], exception);
+ x0 = seed_value_to_double (ctx, arguments[4], exception);
+ y0 = seed_value_to_double (ctx, arguments[5], exception);
+
+ cairo_matrix_init (&matrix, xx, yx, xy, yy, x0, y0);
+ cairo_transform (cr, &matrix);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_set_transform (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GET_CR;
+ cairo_matrix_t matrix;
+ gdouble xx, yx, xy, yy, x0, y0;
+
+ cairo_identity_matrix (cr);
+
+ xx = seed_value_to_double (ctx, arguments[0], exception);
+ yx = seed_value_to_double (ctx, arguments[1], exception);
+ xy = seed_value_to_double (ctx, arguments[2], exception);
+ yy = seed_value_to_double (ctx, arguments[3], exception);
+ x0 = seed_value_to_double (ctx, arguments[4], exception);
+ y0 = seed_value_to_double (ctx, arguments[5], exception);
+
+ cairo_matrix_init (&matrix, xx, yx, xy, yy, x0, y0);
+ cairo_transform (cr, &matrix);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_clear_rect (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y, width, height;
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+ width = seed_value_to_double (ctx, arguments[2], exception);
+ height = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_save (cr);
+
+ cairo_set_source_rgb (cr, 1, 1, 1);
+ cairo_rectangle (cr, x, y, width, height);
+
+ cairo_fill (cr);
+
+ cairo_restore (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_stroke_rect (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y, width, height;
+
+ seed_canvas_apply_stroke_style ((SeedCanvasStyle *)priv->styles->data, cr);
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+ width = seed_value_to_double (ctx, arguments[2], exception);
+ height = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_rectangle (cr, x, y, width, height);
+ cairo_stroke (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_fill_rect (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y, width, height;
+ seed_canvas_apply_fill_style ((SeedCanvasStyle *)priv->styles->data, cr);
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+ width = seed_value_to_double (ctx, arguments[2], exception);
+ height = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_rectangle (cr, x, y, width, height);
+ cairo_fill (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_end_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ cairo_close_path (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_begin_path (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GET_CR;
+
+ cairo_new_path (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_move_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y;
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_move_to (cr, x, y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_line_to (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y;
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+
+ cairo_line_to (cr, x, y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_stroke (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ seed_canvas_apply_stroke_style ((SeedCanvasStyle *)priv->styles->data,
+ cr);
+
+ cairo_stroke (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_clip (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ cairo_clip (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_fill (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ seed_canvas_apply_fill_style ((SeedCanvasStyle *)priv->styles->data, cr);
+
+ cairo_fill (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_arc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble xc, yc, radius, start, end;
+ gboolean counter_clockwise;
+
+ xc = seed_value_to_double (ctx, arguments[0], exception);
+ yc = seed_value_to_double (ctx, arguments[1], exception);
+ radius = seed_value_to_double (ctx, arguments[2], exception);
+ start = seed_value_to_double (ctx, arguments[3], exception);
+ end = seed_value_to_double (ctx, arguments[4], exception);
+ counter_clockwise = seed_value_to_boolean (ctx, arguments[5], exception);
+
+ if (counter_clockwise)
+ cairo_arc_negative (cr, xc, yc, radius, end, start);
+ else
+ cairo_arc (cr, xc, yc, radius, start, end);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_quadratic (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+
+ gdouble p0x, p0y, cp1x, cp1y, cp2x, cp2y, cp3x, cp3y;
+ gdouble qp1x, qp1y, qp2x, qp2y;
+
+ cairo_get_current_point (cr, &p0x, &p0y);
+
+ qp1x = seed_value_to_double (ctx, arguments[0], exception);
+ qp1y = seed_value_to_double (ctx, arguments[1], exception);
+ qp2x = seed_value_to_double (ctx, arguments[2], exception);
+ qp2y = seed_value_to_double (ctx, arguments[3], exception);
+
+
+ // Convert quadratic curve to cubic curve...
+ // I think the math is explained in some
+ // freetype documentation somewhere.
+ cp3x = qp2x;
+ cp3y = qp2y;
+
+ cp1x = p0x + 2 / 3.0 * (qp1x - p0x);
+ cp1y = p0y + 2 / 3.0 * (qp1y - p0y);
+
+ cp2x = cp1x + 1 / 3.0 * (qp2x - p0x);
+ cp2y = cp1y + 1 / 3.0 * (qp2y - p0y);
+
+ cairo_curve_to (cr, cp1x, cp1y, cp2x, cp2y, cp3x, cp3y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_bezier (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble cp0x, cp0y, cp1x, cp1y, cp2x, cp2y;
+
+ cp0x = seed_value_to_double (ctx, arguments[0], exception);
+ cp0y = seed_value_to_double (ctx, arguments[1], exception);
+ cp1x = seed_value_to_double (ctx, arguments[2], exception);
+ cp1y = seed_value_to_double (ctx, arguments[3], exception);
+ cp2x = seed_value_to_double (ctx, arguments[4], exception);
+ cp2y = seed_value_to_double (ctx, arguments[5], exception);
+
+ cairo_curve_to (cr, cp0x, cp0y, cp1x, cp1y, cp2x, cp2y);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_rect (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ gdouble x, y, width, height;
+
+ x = seed_value_to_double (ctx, arguments[0], exception);
+ y = seed_value_to_double (ctx, arguments[1], exception);
+ width = seed_value_to_double (ctx, arguments[2], exception);
+ height = seed_value_to_double (ctx, arguments[3], exception);
+
+ cairo_rectangle (cr, x, y, width, height);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_flush (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ cairo_surface_t *surface = cairo_get_target (cr);
+
+ cairo_surface_flush (surface);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_finish (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ cairo_surface_t *surface = cairo_get_target (cr);
+
+ cairo_surface_finish (surface);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_showpage (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+ {
+ GET_CR;
+ cairo_show_page (cr);
+
+ return seed_make_null (ctx);
+}
+
+SeedValue
+seed_canvas_destroy (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ GET_CR;
+ cairo_destroy (cr);
+
+ return seed_make_null (ctx);
+}
+
+static void
+canvas_finalize (SeedObject object)
+{
+ cairo_t *cr = seed_object_get_private (object);
+ if (cr)
+ cairo_destroy (cr);
+}
+
+seed_static_function canvas_funcs[] = {
+ {"save", seed_canvas_save, 0},
+ {"restore", seed_canvas_restore, 0},
+ {"scale", seed_canvas_scale, 0},
+ {"rotate", seed_canvas_rotate, 0},
+ {"translate", seed_canvas_translate, 0},
+ {"transform", seed_canvas_transform, 0},
+ {"setTransform", seed_canvas_set_transform, 0},
+ {"clearRect", seed_canvas_clear_rect, 0},
+ {"fillRect", seed_canvas_fill_rect, 0},
+ {"strokeRect", seed_canvas_stroke_rect, 0},
+ {"beginPath", seed_canvas_begin_path, 0},
+ {"closePath", seed_canvas_end_path, 0},
+ {"moveTo", seed_canvas_move_to, 0},
+ {"lineTo", seed_canvas_line_to, 0},
+ {"fill", seed_canvas_fill, 0},
+ {"stroke", seed_canvas_stroke, 0},
+ {"clip", seed_canvas_clip, 0},
+ {"arc", seed_canvas_arc, 0},
+ {"quadraticCurveTo", seed_canvas_quadratic, 0},
+ {"bezierCurveTo", seed_canvas_bezier, 0},
+ {"rect", seed_canvas_rect, 0},
+ {"flush", seed_canvas_flush, 0},
+ {"finish", seed_canvas_finish, 0},
+ {"showPage", seed_canvas_showpage, 0},
+ {"destroy", seed_canvas_destroy, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_value canvas_properties[] = {
+ {"lineWidth", 0, seed_canvas_set_linewidth, 0},
+ {"lineCap", 0, seed_canvas_set_linecap, 0},
+ {"lineJoin", 0, seed_canvas_set_linejoin, 0},
+ {"miterLimit", 0, seed_canvas_set_miterlimit, 0},
+ {"strokeStyle", 0, seed_canvas_update_stroke_style, 0},
+ {"fillStyle", 0, seed_canvas_update_fill_style, 0},
+ {"globalAlpha", 0, seed_canvas_update_global_alpha, 0},
+ {"globalCompositeOperation", 0, seed_canvas_update_global_composite, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init (SeedEngine * local_eng)
+{
+ SeedObject canvas_constructor, pdf_constructor,
+ svg_constructor, image_constructor;
+ seed_class_definition canvas_class_def = seed_empty_class;
+
+ eng = local_eng;
+
+ namespace_ref = seed_make_object (eng->context, 0, 0);
+
+ canvas_class_def.class_name = "CairoCanvas";
+ canvas_class_def.static_functions = canvas_funcs;
+ canvas_class_def.finalize = canvas_finalize;
+ canvas_class_def.static_values = canvas_properties;
+
+ canvas_class = seed_create_class (&canvas_class_def);
+
+ canvas_constructor = seed_make_constructor (eng->context,
+ canvas_class,
+ canvas_construct_canvas);
+
+ pdf_constructor = seed_make_constructor (eng->context,
+ canvas_class,
+ canvas_construct_pdf_canvas);
+
+ svg_constructor = seed_make_constructor (eng->context,
+ canvas_class,
+ canvas_construct_svg_canvas);
+
+ image_constructor = seed_make_constructor (eng->context,
+ canvas_class,
+ seed_construct_image_canvas);
+
+ seed_object_set_property (eng->context, namespace_ref, "CairoCanvas",
+ canvas_constructor);
+ seed_object_set_property (eng->context, namespace_ref, "PDFCanvas",
+ pdf_constructor);
+ seed_object_set_property (eng->context, namespace_ref, "SVGCanvas",
+ svg_constructor);
+ seed_object_set_property (eng->context, namespace_ref, "ImageCanvas",
+ svg_constructor);
+
+ return namespace_ref;
+}
diff --git a/modules/dbus/Makefile.am b/modules/dbus/Makefile.am
new file mode 100644
index 0000000..646e34f
--- /dev/null
+++ b/modules/dbus/Makefile.am
@@ -0,0 +1,55 @@
+if BUILD_DBUS_MODULE
+
+SUBDIRS = util
+
+EXTRA_DIST = dbus2js.py \
+ dbus.js \
+ dbus-values.h \
+ lang.js \
+ dbus-exports.h
+
+moduledir = $(datadir)/seed@SEED_GTK_VERSION@
+module_DATA = dbus.js lang.js
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_dbusnative.la
+
+libseed_dbusnative_la_SOURCES = \
+ module.c \
+ util/dbus.c \
+ util/dbus-proxy.c \
+ util/dbus-signals.c \
+ dbus-values.c \
+ dbus-exports.c
+
+
+libseed_dbusnative_la_CFLAGS = \
+ -Wall \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(DBUSGLIB_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+
+libseed_dbusnative_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(DBUS_LDFLAGS) \
+ $(DBUSGLIB_LDFLAGS) \
+ -L/lib
+
+libseed_dbusnative_la_LIBADD = \
+ -ldbus-1 \
+ -ldbus-glib-1 \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+
+endif
+
+
+
diff --git a/modules/dbus/Makefile.in b/modules/dbus/Makefile.in
new file mode 100644
index 0000000..3295fd5
--- /dev/null
+++ b/modules/dbus/Makefile.in
@@ -0,0 +1,910 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/dbus
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)" "$(DESTDIR)$(moduledir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_DBUS_MODULE_TRUE@libseed_dbusnative_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_DBUS_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_dbusnative_la_SOURCES_DIST = module.c util/dbus.c \
+ util/dbus-proxy.c util/dbus-signals.c dbus-values.c \
+ dbus-exports.c
+@BUILD_DBUS_MODULE_TRUE@am_libseed_dbusnative_la_OBJECTS = \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-module.lo \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-dbus.lo \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-dbus-proxy.lo \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-dbus-signals.lo \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-dbus-values.lo \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative_la-dbus-exports.lo
+libseed_dbusnative_la_OBJECTS = $(am_libseed_dbusnative_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_dbusnative_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) \
+ $(libseed_dbusnative_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_DBUS_MODULE_TRUE@am_libseed_dbusnative_la_rpath = -rpath \
+@BUILD_DBUS_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_dbusnative_la_SOURCES)
+DIST_SOURCES = $(am__libseed_dbusnative_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+DATA = $(module_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = util
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_DBUS_MODULE_TRUE@SUBDIRS = util
+@BUILD_DBUS_MODULE_TRUE@EXTRA_DIST = dbus2js.py \
+@BUILD_DBUS_MODULE_TRUE@ dbus.js \
+@BUILD_DBUS_MODULE_TRUE@ dbus-values.h \
+@BUILD_DBUS_MODULE_TRUE@ lang.js \
+@BUILD_DBUS_MODULE_TRUE@ dbus-exports.h
+
+@BUILD_DBUS_MODULE_TRUE@moduledir = $(datadir)/seed@SEED_GTK_VERSION@
+@BUILD_DBUS_MODULE_TRUE@module_DATA = dbus.js lang.js
+@BUILD_DBUS_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_DBUS_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_DBUS_MODULE_TRUE@ libseed_dbusnative.la
+
+@BUILD_DBUS_MODULE_TRUE@libseed_dbusnative_la_SOURCES = \
+@BUILD_DBUS_MODULE_TRUE@ module.c \
+@BUILD_DBUS_MODULE_TRUE@ util/dbus.c \
+@BUILD_DBUS_MODULE_TRUE@ util/dbus-proxy.c \
+@BUILD_DBUS_MODULE_TRUE@ util/dbus-signals.c \
+@BUILD_DBUS_MODULE_TRUE@ dbus-values.c \
+@BUILD_DBUS_MODULE_TRUE@ dbus-exports.c
+
+@BUILD_DBUS_MODULE_TRUE@libseed_dbusnative_la_CFLAGS = \
+@BUILD_DBUS_MODULE_TRUE@ -Wall \
+@BUILD_DBUS_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_DBUS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(DBUS_CFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(DBUSGLIB_CFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_DBUS_MODULE_TRUE@libseed_dbusnative_la_LDFLAGS = \
+@BUILD_DBUS_MODULE_TRUE@ -module -avoid-version \
+@BUILD_DBUS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(DBUS_LDFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ $(DBUSGLIB_LDFLAGS) \
+@BUILD_DBUS_MODULE_TRUE@ -L/lib
+
+@BUILD_DBUS_MODULE_TRUE@libseed_dbusnative_la_LIBADD = \
+@BUILD_DBUS_MODULE_TRUE@ -ldbus-1 \
+@BUILD_DBUS_MODULE_TRUE@ -ldbus-glib-1 \
+@BUILD_DBUS_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_DBUS_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/dbus/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/dbus/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_dbusnative.la: $(libseed_dbusnative_la_OBJECTS) $(libseed_dbusnative_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_dbusnative_la_LINK) $(am_libseed_dbusnative_la_rpath) $(libseed_dbusnative_la_OBJECTS) $(libseed_dbusnative_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-dbus-exports.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-dbus-proxy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-dbus-signals.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-dbus-values.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-dbus.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_dbusnative_la-module.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_dbusnative_la-module.lo: module.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-module.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-module.Tpo -c -o libseed_dbusnative_la-module.lo `test -f 'module.c' || echo '$(srcdir)/'`module.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-module.Tpo $(DEPDIR)/libseed_dbusnative_la-module.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='module.c' object='libseed_dbusnative_la-module.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-module.lo `test -f 'module.c' || echo '$(srcdir)/'`module.c
+
+libseed_dbusnative_la-dbus.lo: util/dbus.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-dbus.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-dbus.Tpo -c -o libseed_dbusnative_la-dbus.lo `test -f 'util/dbus.c' || echo '$(srcdir)/'`util/dbus.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-dbus.Tpo $(DEPDIR)/libseed_dbusnative_la-dbus.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='util/dbus.c' object='libseed_dbusnative_la-dbus.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-dbus.lo `test -f 'util/dbus.c' || echo '$(srcdir)/'`util/dbus.c
+
+libseed_dbusnative_la-dbus-proxy.lo: util/dbus-proxy.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-dbus-proxy.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-dbus-proxy.Tpo -c -o libseed_dbusnative_la-dbus-proxy.lo `test -f 'util/dbus-proxy.c' || echo '$(srcdir)/'`util/dbus-proxy.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-dbus-proxy.Tpo $(DEPDIR)/libseed_dbusnative_la-dbus-proxy.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='util/dbus-proxy.c' object='libseed_dbusnative_la-dbus-proxy.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-dbus-proxy.lo `test -f 'util/dbus-proxy.c' || echo '$(srcdir)/'`util/dbus-proxy.c
+
+libseed_dbusnative_la-dbus-signals.lo: util/dbus-signals.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-dbus-signals.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-dbus-signals.Tpo -c -o libseed_dbusnative_la-dbus-signals.lo `test -f 'util/dbus-signals.c' || echo '$(srcdir)/'`util/dbus-signals.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-dbus-signals.Tpo $(DEPDIR)/libseed_dbusnative_la-dbus-signals.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='util/dbus-signals.c' object='libseed_dbusnative_la-dbus-signals.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-dbus-signals.lo `test -f 'util/dbus-signals.c' || echo '$(srcdir)/'`util/dbus-signals.c
+
+libseed_dbusnative_la-dbus-values.lo: dbus-values.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-dbus-values.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-dbus-values.Tpo -c -o libseed_dbusnative_la-dbus-values.lo `test -f 'dbus-values.c' || echo '$(srcdir)/'`dbus-values.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-dbus-values.Tpo $(DEPDIR)/libseed_dbusnative_la-dbus-values.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-values.c' object='libseed_dbusnative_la-dbus-values.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-dbus-values.lo `test -f 'dbus-values.c' || echo '$(srcdir)/'`dbus-values.c
+
+libseed_dbusnative_la-dbus-exports.lo: dbus-exports.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -MT libseed_dbusnative_la-dbus-exports.lo -MD -MP -MF $(DEPDIR)/libseed_dbusnative_la-dbus-exports.Tpo -c -o libseed_dbusnative_la-dbus-exports.lo `test -f 'dbus-exports.c' || echo '$(srcdir)/'`dbus-exports.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_dbusnative_la-dbus-exports.Tpo $(DEPDIR)/libseed_dbusnative_la-dbus-exports.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-exports.c' object='libseed_dbusnative_la-dbus-exports.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_dbusnative_la_CFLAGS) $(CFLAGS) -c -o libseed_dbusnative_la-dbus-exports.lo `test -f 'dbus-exports.c' || echo '$(srcdir)/'`dbus-exports.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-moduleDATA: $(module_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(moduledir)" || $(MKDIR_P) "$(DESTDIR)$(moduledir)"
+ @list='$(module_DATA)'; test -n "$(moduledir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(moduledir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(moduledir)" || exit $$?; \
+ done
+
+uninstall-moduleDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(module_DATA)'; test -n "$(moduledir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(moduledir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(moduledir)" && rm -f $$files
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(seedlibdir)" "$(DESTDIR)$(moduledir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-moduleDATA install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-moduleDATA uninstall-seedlibLTLIBRARIES
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ clean-seedlibLTLIBRARIES ctags ctags-recursive 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-moduleDATA install-pdf install-pdf-am install-ps \
+ install-ps-am install-seedlibLTLIBRARIES install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-moduleDATA uninstall-seedlibLTLIBRARIES
+
+
+# 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/modules/dbus/dbus-exports.c b/modules/dbus/dbus-exports.c
new file mode 100644
index 0000000..f38be51
--- /dev/null
+++ b/modules/dbus/dbus-exports.c
@@ -0,0 +1,763 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "dbus-exports.h"
+#include "dbus-values.h"
+
+#include <seed.h>
+#include <string.h>
+
+#include <util/dbus.h>
+
+typedef struct _Exports {
+ // Why does GJS have this?
+ SeedObject object;
+
+ DBusBusType which_bus;
+ DBusConnection *connection_weak_ref;
+ gboolean filter_was_registered;
+} Exports;
+
+SeedClass seed_js_exports_class = NULL;
+
+static void on_bus_opened (DBusConnection *connection,
+ void *data);
+static void on_bus_closed (DBusConnection *connection,
+ void *data);
+static DBusHandlerResult on_message (DBusConnection *connection,
+ DBusMessage *message,
+ void *user_data);
+
+static const BigDBusConnectFuncs system_connect_funcs = {
+ DBUS_BUS_SYSTEM,
+ on_bus_opened,
+ on_bus_closed
+};
+
+static const BigDBusConnectFuncs session_connect_funcs = {
+ DBUS_BUS_SESSION,
+ on_bus_opened,
+ on_bus_closed
+};
+
+static void
+on_bus_opened(DBusConnection *connection,
+ void *data)
+{
+ Exports *priv = data;
+
+ g_assert(priv->connection_weak_ref == NULL);
+
+ priv->connection_weak_ref = connection;
+
+ if (priv->filter_was_registered)
+ return;
+
+ if (!dbus_connection_add_filter(connection,
+ on_message, priv,
+ NULL))
+ {
+ g_warning("DBus: Failed to add message filter");
+ return;
+ }
+
+ priv->filter_was_registered = TRUE;
+}
+
+static void
+on_bus_closed(DBusConnection *connection,
+ void *data)
+{
+ Exports *priv = data;
+
+ g_assert(priv->connection_weak_ref != NULL);
+
+ priv->connection_weak_ref = NULL;
+
+ if (priv->filter_was_registered)
+ {
+ dbus_connection_remove_filter(connection,
+ on_message, priv);
+ priv->filter_was_registered = FALSE;
+ }
+}
+
+#define dbus_reply_from_exception(ctx, message, reply_p, exception) \
+ (dbus_reply_from_exception_and_sender((ctx), \
+ dbus_message_get_sender(message), \
+ dbus_message_get_serial(message), \
+ (reply_p), exception))
+
+static gboolean
+dbus_reply_from_exception_and_sender(SeedContext ctx,
+ const gchar *sender,
+ dbus_uint32_t serial,
+ DBusMessage **reply_p,
+ SeedException *exception)
+{
+ SeedValue name_val;
+ gchar *s;
+ const gchar *name = NULL;
+
+
+ *reply_p = NULL;
+
+ if (seed_value_is_undefined (ctx, *exception) ||
+ seed_value_is_null (ctx, *exception) ||
+ !seed_value_is_object (ctx, *exception))
+ return FALSE;
+
+ name_val = seed_object_get_property(ctx, *exception, "dbusErrorName");
+ name = seed_value_to_string (ctx, name_val, NULL);
+
+ s = seed_exception_to_string (ctx, *exception);
+ g_warning("JS exception we will send as dbus reply to %s: %s",
+ sender,
+ s);
+
+ *reply_p = dbus_message_new(DBUS_MESSAGE_TYPE_ERROR);
+ dbus_message_set_destination(*reply_p, sender);
+ dbus_message_set_reply_serial(*reply_p, serial);
+ dbus_message_set_no_reply(*reply_p, TRUE);
+ dbus_message_set_error_name(*reply_p, name ? name : DBUS_ERROR_FAILED);
+ if (s != NULL) {
+ DBusMessageIter iter;
+
+ dbus_message_iter_init_append(*reply_p, &iter);
+
+ if (!dbus_message_iter_append_basic(&iter,
+ DBUS_TYPE_STRING,
+ &s)) {
+ dbus_message_unref(*reply_p);
+ g_free(s);
+ return FALSE;
+ }
+ g_free(s);
+ }
+
+ return TRUE;
+}
+
+// Is this going to leak later?
+static gboolean
+signature_from_method(SeedContext ctx,
+ SeedObject method_obj,
+ const char **signature,
+ SeedException *exception)
+{
+ SeedValue signature_value;
+
+ if ((signature_value = seed_object_get_property(ctx,
+ method_obj, "outSignature")))
+ {
+ *signature = seed_value_to_string (ctx, signature_value, exception);
+ if (*signature == NULL)
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ /* We default to a{sv} */
+ *signature = "a{sv}";
+ }
+
+ return TRUE;
+}
+
+static gboolean
+signature_has_one_element(const char *signature)
+{
+ DBusSignatureIter iter;
+
+ if (!signature)
+ return FALSE;
+
+ dbus_signature_iter_init(&iter, signature);
+
+ return !dbus_signature_iter_next(&iter);
+}
+
+static DBusMessage *
+build_reply_from_jsval(SeedContext ctx,
+ const char *signature,
+ const char *sender,
+ dbus_uint32_t serial,
+ SeedValue rval,
+ SeedException *exception)
+{
+ DBusMessage *reply;
+ DBusMessageIter arg_iter;
+ DBusSignatureIter sig_iter;
+ gboolean marshalled = FALSE;
+
+ reply = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN);
+ dbus_message_set_destination(reply, sender);
+ dbus_message_set_reply_serial(reply, serial);
+ dbus_message_set_no_reply(reply, TRUE);
+
+ dbus_message_iter_init_append(reply, &arg_iter);
+
+ if (seed_value_is_undefined (ctx, rval) || g_str_equal(signature, ""))
+ {
+ /* We don't want to send anything in these cases so skip the
+ * marshalling altogether.
+ */
+ return reply;
+ }
+
+ dbus_signature_iter_init(&sig_iter, signature);
+
+ if (signature_has_one_element(signature))
+ {
+ marshalled = seed_js_one_value_to_dbus(ctx, rval, &arg_iter, &sig_iter, exception);
+ }
+ else
+ {
+ if (!seed_value_is_object (ctx, rval))
+ {
+ g_warning("Signature has multiple items but return value is not an array");
+ return reply;
+ }
+ marshalled = seed_js_values_to_dbus(ctx, 0, rval, &arg_iter, &sig_iter, exception);
+ }
+
+ if (!marshalled) {
+ /* replace our planned reply with an error */
+ dbus_message_unref(reply);
+ if (!dbus_reply_from_exception_and_sender(ctx, sender, serial, &reply, exception))
+ g_warning ("conversion of dbus return value failed but no exception was set?");
+ }
+
+ return reply;
+}
+
+static DBusMessage*
+invoke_js_from_dbus(SeedContext ctx,
+ DBusMessage *method_call,
+ SeedObject this_obj,
+ SeedObject method_obj,
+ SeedException *exception)
+{
+ DBusMessage *reply;
+ int argc;
+ SeedValue *argv;
+ SeedValue rval;
+ DBusMessageIter arg_iter;
+ GArray *values;
+ const char *signature;
+
+ reply = NULL;
+
+ dbus_message_iter_init(method_call, &arg_iter);
+
+ if (!seed_js_values_from_dbus(ctx, &arg_iter, &values, exception))
+ {
+ if (!dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ g_warning("conversion of dbus method arg failed but no exception was set?");
+ return reply;
+ }
+
+ argc = values->len;
+ argv = (SeedValue *)values->data;
+
+ seed_js_add_dbus_props(ctx, method_call, argv[0], exception);
+
+ rval = seed_object_call (ctx, method_obj, NULL,
+ argc, argv, exception);
+ if (!seed_value_is_null (ctx, *exception) &&
+ seed_value_is_object (ctx, *exception))
+ {
+ g_warning("dbus method invocation failed");
+
+ if (!dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ g_warning("dbus method invocation failed but no exception was set?");
+
+ goto out;
+ }
+
+ if (dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ {
+ g_warning("Closure invocation succeeded but an exception was set?");
+ goto out;
+ }
+
+ if (!signature_from_method(ctx,
+ method_obj,
+ &signature, exception))
+ {
+ if (!dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ g_warning("dbus method invocation failed but no exception was set?");
+
+ goto out;
+ }
+
+ reply = build_reply_from_jsval(ctx,
+ signature,
+ dbus_message_get_sender(method_call),
+ dbus_message_get_serial(method_call),
+ rval,
+ exception);
+
+ out:
+ g_array_free(values, TRUE);
+
+ if (reply)
+ g_warning ("Sending %s reply to dbus method %s",
+ dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_METHOD_RETURN ?
+ "normal" : "error",
+ dbus_message_get_member(method_call));
+ else
+ g_warning ("Failed to create reply to dbus method %s",
+ dbus_message_get_member(method_call));
+
+ return reply;
+}
+
+static SeedValue
+async_call_callback(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ DBusConnection *connection;
+ DBusBusType which_bus;
+ DBusMessage *reply;
+ const char *sender;
+ dbus_uint32_t serial;
+ SeedValue prop_value, retval;
+ const char *signature;
+ gboolean thrown;
+
+ retval = seed_make_undefined (ctx);
+ reply = NULL;
+ thrown = FALSE;
+
+ prop_value = seed_object_get_property (ctx, function, "_dbusSender");
+ sender = seed_value_to_string (ctx, prop_value, exception);
+ if (!sender)
+ return FALSE;
+
+ prop_value = seed_object_get_property(ctx,
+ function,
+ "_dbusSerial");
+
+
+ serial = seed_value_to_uint (ctx, prop_value, exception);
+ prop_value = seed_object_get_property(ctx,
+ function,
+ "_dbusBusType");
+
+ which_bus = seed_value_to_int(ctx, prop_value, exception);
+
+ /* From now we have enough information to
+ * send the exception back to the callee so we'll do so
+ */
+ prop_value = seed_object_get_property(ctx,
+ function,
+ "_dbusOutSignature");
+
+ signature = seed_value_to_string (ctx, prop_value, exception);
+ if (!signature)
+ return FALSE;
+
+ if (argument_count != 1) {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "The callback to async DBus calls takes one argument, "
+ "the return value or array of return values");
+ thrown = TRUE;
+ goto out;
+ }
+
+ reply = build_reply_from_jsval(ctx,
+ signature,
+ sender,
+ serial,
+ arguments[0],
+ exception);
+
+out:
+ if (!reply && thrown)
+ {
+ if (!dbus_reply_from_exception_and_sender(ctx, sender, serial, &reply, exception))
+ g_warning("dbus method invocation failed but no exception was set?");
+ }
+
+ if (reply)
+ {
+ big_dbus_add_bus_weakref(which_bus, &connection);
+ if (!connection)
+ {
+ seed_make_exception(ctx, exception, "DBusError",
+ "We were disconnected from the bus before the callback "
+ "to some async remote call was called");
+ dbus_message_unref(reply);
+ big_dbus_remove_bus_weakref(which_bus, &connection);
+ return FALSE;
+ }
+ dbus_connection_send(connection, reply, NULL);
+ big_dbus_remove_bus_weakref(which_bus, &connection);
+ dbus_message_unref(reply);
+ }
+
+ return retval;
+}
+
+/* returns an error message or NULL */
+static DBusMessage *
+invoke_js_async_from_dbus(SeedContext ctx,
+ DBusBusType bus_type,
+ DBusMessage *method_call,
+ SeedObject this_obj,
+ SeedObject method_obj,
+ SeedException *exception)
+{
+ DBusMessage *reply;
+ int argc;
+ SeedValue *argv;
+ DBusMessageIter arg_iter;
+ GArray *values;
+ SeedObject callback_object;
+ SeedValue sender_string, signature_string;
+ gboolean thrown;
+ SeedValue ignored;
+ const char *signature;
+
+ reply = NULL;
+ thrown = FALSE;
+ argc = 0;
+ argv = NULL;
+
+ if (!seed_js_values_from_dbus(ctx, &arg_iter, &values, exception))
+ {
+ if (!dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ g_warning ("conversion of dbus method arg failed but no exception was set?");
+ return reply;
+ }
+
+ /* we will add an argument, the callback */
+ callback_object = seed_make_function(ctx, async_call_callback,
+ "" /* anonymous */);
+
+ g_assert(callback_object);
+
+ g_array_append_val(values, callback_object);
+
+ /* We attach the DBus sender and serial as properties to
+ * callback, so we don't need to bother with memory managing them
+ * if the callback is never called and just discarded.*/
+ sender_string = seed_value_from_string (ctx, dbus_message_get_sender (method_call), exception);
+ if (!sender_string)
+ {
+ thrown = TRUE;
+ goto out;
+ }
+
+ seed_object_set_property (ctx, callback_object, "_dbusSender", sender_string);
+ seed_object_set_property (ctx, callback_object, "_dbusSerial",
+ seed_value_from_int (ctx, dbus_message_get_serial (method_call),
+ exception));
+ seed_object_set_property (ctx, callback_object, "_dbusBusType",
+ seed_value_from_int (ctx, bus_type, exception));
+
+ if (!signature_from_method(ctx,
+ method_obj,
+ &signature,
+ exception))
+ {
+ thrown = TRUE;
+ goto out;
+ }
+
+ signature_string = seed_value_from_string (ctx, signature, exception);
+ if (!signature_string)
+ {
+ thrown = TRUE;
+ goto out;
+ }
+ seed_object_set_property (ctx, callback_object, "_dbusOutSignature",
+ signature_string);
+ argc = values->len;
+ argv = (SeedValue *)values->data;
+
+ seed_object_call (ctx, method_obj, this_obj, argc,
+ argv, &ignored);
+out:
+ if (thrown)
+ {
+ if (!dbus_reply_from_exception(ctx, method_call, &reply, exception))
+ g_warning("conversion of dbus method arg failed but no exception was set?");
+ }
+
+ g_array_free (values, TRUE);
+
+ return reply;
+}
+
+static SeedObject
+find_js_property_by_path(SeedContext ctx,
+ SeedObject root_obj,
+ const gchar *path)
+{
+ gchar **elements;
+ gint i;
+ SeedObject obj;
+
+ elements = g_strsplit(path, "/", -1);
+ obj = root_obj;
+
+ /* g_strsplit returns empty string for the first
+ * '/' so we start with elements[1]
+ */
+ for (i = 1; elements[i] != NULL; ++i)
+ {
+ obj = seed_object_get_property(ctx, obj, elements[i]);
+
+ if (seed_value_is_undefined (ctx, obj) ||
+ !seed_value_is_object (ctx, obj))
+ {
+ obj = NULL;
+ break;
+ }
+ }
+
+ g_strfreev(elements);
+
+ return obj;
+}
+
+static gboolean
+find_method(SeedContext ctx,
+ SeedObject obj,
+ const gchar *method_name,
+ SeedValue *method_value)
+{
+ *method_value = seed_object_get_property (ctx, obj, method_name);
+ if (seed_value_is_undefined (ctx, *method_value) ||
+ !seed_value_is_object (ctx, *method_value))
+ return FALSE;
+
+ return TRUE;
+}
+
+
+static DBusHandlerResult
+on_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *user_data)
+{
+ SeedContext ctx;
+ const char *path;
+ DBusHandlerResult result;
+ SeedObject obj;
+ const char *method_name;
+ char *async_method_name;
+ SeedValue method_value;
+ DBusMessage *reply;
+ Exports *priv;
+
+ priv = user_data;
+ async_method_name = NULL;
+ reply = NULL;
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+
+ if (dbus_message_get_type(message) != DBUS_MESSAGE_TYPE_METHOD_CALL)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ method_value = seed_make_undefined (ctx);
+
+ result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ path = dbus_message_get_path(message);
+
+ obj = find_js_property_by_path(ctx,
+ priv->object,
+ path);
+ if (obj == NULL)
+ {
+ g_warning("There is no JS object at %s",
+ path);
+ goto out;
+ }
+
+ method_name = dbus_message_get_member(message);
+
+ async_method_name = g_strdup_printf("%sAsync", method_name);
+
+ /* try first if an async version exists */
+ if (find_method(ctx,
+ obj,
+ async_method_name,
+ &method_value)) {
+
+ g_warning ("Invoking async method %s on JS obj at dbus path %s",
+ async_method_name, path);
+
+ reply = invoke_js_async_from_dbus(ctx,
+ priv->which_bus,
+ message,
+ obj,
+ method_value,
+ NULL); // Need exception here.
+
+ result = DBUS_HANDLER_RESULT_HANDLED;
+
+ /* otherwise try the sync version */
+ } else if (find_method(ctx,
+ obj,
+ method_name,
+ &method_value)) {
+
+ g_warning("Invoking method %s on JS obj at dbus path %s",
+ method_name, path);
+
+ reply = invoke_js_from_dbus(ctx,
+ message,
+ obj,
+ method_value,
+ NULL); // Need exception here
+
+ result = DBUS_HANDLER_RESULT_HANDLED;
+ /* otherwise FAIL */
+ } else {
+ g_warning("There is a JS object at %s but it has no method %s",
+ path, method_name);
+ }
+
+ if (reply != NULL) {
+ dbus_connection_send(connection, reply, NULL);
+ dbus_message_unref(reply);
+ }
+
+out:
+ seed_context_unref (ctx);
+ if (async_method_name)
+ g_free(async_method_name);
+ return result;
+}
+
+static void
+exports_constructor(SeedContext ctx,
+ SeedObject obj)
+{
+ Exports *priv;
+
+ priv = g_slice_new0(Exports);
+
+ seed_object_set_private (obj, priv);
+ priv->object = obj;
+}
+
+static gboolean
+add_connect_funcs(SeedContext ctx,
+ SeedObject obj,
+ DBusBusType which_bus)
+{
+ Exports *priv;
+ BigDBusConnectFuncs const *connect_funcs;
+
+ priv = seed_object_get_private (obj);
+ if (priv == NULL)
+ return FALSE;
+
+ if (which_bus == DBUS_BUS_SESSION) {
+ connect_funcs = &session_connect_funcs;
+ } else if (which_bus == DBUS_BUS_SYSTEM) {
+ connect_funcs = &system_connect_funcs;
+ } else
+ g_assert_not_reached();
+
+ priv->which_bus = which_bus;
+ big_dbus_add_connect_funcs_sync_notify(connect_funcs, priv);
+
+ return TRUE;
+}
+
+static void
+exports_finalize (SeedObject obj)
+{
+ Exports *priv;
+ BigDBusConnectFuncs const *connect_funcs = NULL;
+
+ priv = seed_object_get_private (obj);
+ if (priv == NULL)
+ return; /* we are the prototype, not a real instance, so constructor never called */
+
+ if (priv->which_bus == DBUS_BUS_SESSION) {
+ connect_funcs = &session_connect_funcs;
+ } else if (priv->which_bus == DBUS_BUS_SYSTEM) {
+ connect_funcs = &system_connect_funcs;
+ } else
+ g_assert_not_reached();
+
+ big_dbus_remove_connect_funcs(connect_funcs, priv);
+
+ if (priv->connection_weak_ref != NULL) {
+ on_bus_closed(priv->connection_weak_ref, priv);
+ }
+
+ g_slice_free(Exports, priv);
+}
+
+
+static SeedObject
+exports_new (SeedContext ctx,
+ DBusBusType which_bus)
+{
+ SeedObject exports;
+ SeedObject global;
+
+ global = seed_context_get_global_object (ctx);
+ if (!seed_js_exports_class)
+ {
+ seed_class_definition def = seed_empty_class;
+ def.initialize = exports_constructor;
+ def.finalize = exports_finalize;
+
+ seed_js_exports_class = seed_create_class (&def);
+ }
+ exports = seed_make_object (ctx, seed_js_exports_class, NULL);
+
+ return exports;
+}
+
+gboolean
+seed_js_define_dbus_exports(SeedContext ctx,
+ SeedObject on_object,
+ DBusBusType which_bus)
+{
+ SeedObject exports;
+
+
+ exports = exports_new(ctx, which_bus);
+ if (!exports)
+ return FALSE;
+
+ if (!add_connect_funcs(ctx, exports, which_bus))
+ return FALSE;
+
+ seed_object_set_property (ctx, on_object, "exports",
+ exports);
+
+ return TRUE;
+}
diff --git a/modules/dbus/dbus-exports.h b/modules/dbus/dbus-exports.h
new file mode 100644
index 0000000..716cf61
--- /dev/null
+++ b/modules/dbus/dbus-exports.h
@@ -0,0 +1,17 @@
+
+#ifndef __SEED_JS_DBUS_EXPORTS_H__
+#define __SEED_JS_DBUS_EXPORTS_H__
+
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <seed.h>
+
+G_BEGIN_DECLS
+
+gboolean seed_js_define_dbus_exports (SeedContext ctx,
+ SeedObject object,
+ DBusBusType which_bus);
+
+G_END_DECLS
+
+#endif
diff --git a/modules/dbus/dbus-values.c b/modules/dbus/dbus-values.c
new file mode 100644
index 0000000..2338477
--- /dev/null
+++ b/modules/dbus/dbus-values.c
@@ -0,0 +1,973 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ * Copyright 2008 litl, LLC. All Rights Reserved.
+ */
+
+#include "dbus-values.h"
+
+#include <seed.h>
+#include <seed-debug.h>
+
+//#include <util/dbus.h>
+//#include <util/log.h>
+
+#include <string.h>
+
+gboolean
+seed_js_one_value_from_dbus (SeedContext ctx,
+ DBusMessageIter * iter,
+ SeedValue *value_p,
+ SeedException *exception)
+{
+ int arg_type;
+
+ *value_p = seed_make_undefined (ctx);
+
+ arg_type = dbus_message_iter_get_arg_type (iter);
+
+ SEED_NOTE(MODULE,
+ "Converting dbus type '%c' to SeedValue",
+ arg_type != DBUS_TYPE_INVALID ? arg_type : '0');
+
+ switch (arg_type)
+ {
+ case DBUS_TYPE_STRUCT:
+ {
+ SeedObject obj;
+ DBusMessageIter struct_iter;
+ int index;
+
+ obj = seed_make_object (ctx, NULL, NULL);
+
+ dbus_message_iter_recurse (iter, &struct_iter);
+ index = 0;
+ while (dbus_message_iter_get_arg_type (&struct_iter) !=
+ DBUS_TYPE_INVALID)
+ {
+ SeedValue prop_value;
+
+ prop_value = seed_make_undefined (ctx);
+
+ if (!seed_js_one_value_from_dbus
+ (ctx, &struct_iter, &prop_value, exception))
+ {
+ return FALSE;
+ }
+
+ seed_object_set_property_at_index (ctx, obj, index,
+ prop_value, exception);
+ dbus_message_iter_next (&struct_iter);
+ index++;
+ }
+ seed_object_set_property (ctx, obj, "length",
+ seed_value_from_int (ctx, index, exception));
+ *value_p = (SeedValue) obj;
+ }
+ break;
+ case DBUS_TYPE_ARRAY:
+ {
+ int elem_type = dbus_message_iter_get_element_type (iter);
+
+ if (elem_type == DBUS_TYPE_DICT_ENTRY)
+ {
+ /* Create a dictionary object */
+ SeedObject obj;
+ DBusMessageIter array_iter;
+
+ obj = seed_make_object (ctx, NULL, NULL);
+
+ dbus_message_iter_recurse (iter, &array_iter);
+ while (dbus_message_iter_get_arg_type (&array_iter) !=
+ DBUS_TYPE_INVALID)
+ {
+ DBusMessageIter entry_iter;
+ const char *key;
+ SeedValue entry_value;
+
+ dbus_message_iter_recurse (&array_iter, &entry_iter);
+
+ if (dbus_message_iter_get_arg_type (&entry_iter) !=
+ DBUS_TYPE_STRING)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Dictionary keys are not strings,"
+ "can't convert to JavaScript");
+
+ return FALSE;
+ }
+
+ dbus_message_iter_get_basic (&entry_iter, &key);
+
+ dbus_message_iter_next (&entry_iter);
+
+ SEED_NOTE(MODULE,
+ "Defining dict entry %s in jsval dict",
+ key);
+
+ entry_value = seed_make_undefined (ctx);
+
+ if (!seed_js_one_value_from_dbus
+ (ctx, &entry_iter, &entry_value, exception))
+ {
+ return FALSE;
+ }
+
+ seed_object_set_property (ctx, obj,
+ key, entry_value);
+
+ dbus_message_iter_next (&array_iter);
+ }
+
+ *value_p = (SeedValue) obj;
+ }
+ else if (elem_type == DBUS_TYPE_BYTE)
+ {
+ /* byte arrays go to a string */
+ const char *v_BYTES;
+ int n_bytes;
+ DBusMessageIter array_iter;
+
+ dbus_message_iter_recurse (iter, &array_iter);
+ dbus_message_iter_get_fixed_array (&array_iter,
+ &v_BYTES, &n_bytes);
+ // This is where I am.
+ *value_p = seed_value_from_binary_string (ctx, v_BYTES, n_bytes, exception);
+ }
+ else
+ {
+ SeedObject obj;
+ DBusMessageIter array_iter;
+ int index;
+
+ obj = seed_make_object (ctx, NULL, NULL);
+
+ dbus_message_iter_recurse (iter, &array_iter);
+ index = 0;
+ while (dbus_message_iter_get_arg_type (&array_iter) !=
+ DBUS_TYPE_INVALID)
+ {
+ SeedValue prop_value;
+
+ prop_value = seed_make_undefined (ctx);
+
+ if (!seed_js_one_value_from_dbus
+ (ctx, &array_iter, &prop_value, exception))
+ {
+ return FALSE;
+ }
+
+ seed_object_set_property_at_index (ctx, obj, index, prop_value, exception);
+
+ dbus_message_iter_next (&array_iter);
+ index++;
+ }
+ seed_object_set_property (ctx, obj, "length",
+ seed_value_from_int (ctx,
+ index, exception));
+ *value_p = (SeedValue) obj;
+ }
+ }
+ break;
+ case DBUS_TYPE_BOOLEAN:
+ {
+ dbus_bool_t v_BOOLEAN;
+ dbus_message_iter_get_basic (iter, &v_BOOLEAN);
+ *value_p = seed_value_from_boolean (ctx, v_BOOLEAN, exception);
+ }
+ break;
+ case DBUS_TYPE_BYTE:
+ {
+ unsigned char v_BYTE;
+ dbus_message_iter_get_basic (iter, &v_BYTE);
+ *value_p = seed_value_from_int (ctx, v_BYTE, exception);
+ }
+ break;
+ case DBUS_TYPE_INT32:
+ {
+ dbus_int32_t v_INT32;
+ dbus_message_iter_get_basic (iter, &v_INT32);
+ *value_p = seed_value_from_int (ctx, v_INT32, exception);
+ }
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ dbus_uint32_t v_UINT32;
+ dbus_message_iter_get_basic (iter, &v_UINT32);
+ *value_p = seed_value_from_uint (ctx, v_UINT32, exception);
+ }
+ break;
+ case DBUS_TYPE_INT64:
+ {
+ dbus_int64_t v_INT64;
+ dbus_message_iter_get_basic (iter, &v_INT64);
+ *value_p = seed_value_from_int64 (ctx, v_INT64, exception);
+ }
+ break;
+ case DBUS_TYPE_UINT64:
+ {
+ dbus_uint64_t v_UINT64;
+ dbus_message_iter_get_basic (iter, &v_UINT64);
+ *value_p = seed_value_from_uint64 (ctx, v_UINT64, exception);
+ }
+ break;
+ case DBUS_TYPE_DOUBLE:
+ {
+ double v_DOUBLE;
+ dbus_message_iter_get_basic (iter, &v_DOUBLE);
+ *value_p = seed_value_from_double (ctx, v_DOUBLE, exception);
+ }
+ break;
+ case DBUS_TYPE_OBJECT_PATH:
+ case DBUS_TYPE_STRING:
+ {
+ char *v_STRING;
+
+ dbus_message_iter_get_basic (iter, &v_STRING);
+
+ *value_p = seed_value_from_string (ctx, v_STRING, exception);
+ }
+ break;
+
+ case DBUS_TYPE_VARIANT:
+ {
+ DBusMessageIter variant_iter;
+
+ dbus_message_iter_recurse (iter, &variant_iter);
+
+ return seed_js_one_value_from_dbus (ctx, &variant_iter, value_p, exception);
+ }
+ break;
+
+ case DBUS_TYPE_INVALID:
+ *value_p = seed_make_undefined (ctx);
+ break;
+
+ default:
+ SEED_NOTE (MODULE,
+ "Don't know how to convert dbus type %c to JavaScript",
+ arg_type);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+seed_js_values_from_dbus (SeedContext ctx,
+ DBusMessageIter * iter,
+ GArray **array_p,
+ SeedException *exception)
+{
+ GArray *array;
+ SeedValue value;
+
+ value = seed_make_undefined (ctx);
+
+ array = g_array_new (FALSE, FALSE, sizeof(SeedValue));
+
+ /* TODO */
+ // THIS IS WHERE IA M
+ // Wheee.
+ do
+ {
+ if (!seed_js_one_value_from_dbus (ctx, iter, &value, exception))
+ {
+ g_array_free (array, TRUE);
+ return FALSE;
+ }
+
+ g_array_append_val (array, value);
+ }
+ while (dbus_message_iter_next (iter));
+
+ *array_p = array;
+ return TRUE;
+}
+
+static void
+append_basic_maybe_in_variant (DBusMessageIter * iter,
+ int dbus_type,
+ void *value, gboolean wrap_in_variant)
+{
+ if (wrap_in_variant)
+ {
+ char buf[2];
+ DBusMessageIter variant_iter;
+
+ buf[0] = dbus_type;
+ buf[1] = '\0';
+
+ dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT, buf,
+ &variant_iter);
+ dbus_message_iter_append_basic (&variant_iter, dbus_type, value);
+ dbus_message_iter_close_container (iter, &variant_iter);
+ }
+ else
+ {
+ dbus_message_iter_append_basic (iter, dbus_type, value);
+ }
+}
+
+static void
+append_byte_array_maybe_in_variant (DBusMessageIter * iter,
+ const char *data,
+ gsize len,
+ gboolean wrap_in_variant)
+{
+ DBusMessageIter array_iter;
+ DBusMessageIter variant_iter;
+
+ if (wrap_in_variant)
+ {
+ dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT, "ay",
+ &variant_iter);
+ }
+
+ dbus_message_iter_open_container (wrap_in_variant ? &variant_iter : iter,
+ DBUS_TYPE_ARRAY, "y", &array_iter);
+
+ dbus_message_iter_append_fixed_array (&array_iter, DBUS_TYPE_BYTE,
+ &data, len);
+
+ dbus_message_iter_close_container (wrap_in_variant ? &variant_iter : iter,
+ &array_iter);
+
+ if (wrap_in_variant)
+ {
+ dbus_message_iter_close_container (iter, &variant_iter);
+ }
+}
+
+static gboolean
+append_string (SeedContext ctx,
+ DBusMessageIter * iter,
+ const char *forced_signature,
+ const char *s,
+ gsize len,
+ SeedException *exception)
+{
+ int forced_type;
+
+ if (forced_signature == NULL || *forced_signature == DBUS_TYPE_INVALID)
+ forced_type = DBUS_TYPE_STRING;
+ else
+ forced_type = *forced_signature;
+
+ switch (forced_type)
+ {
+ case DBUS_TYPE_STRING:
+ case DBUS_TYPE_OBJECT_PATH:
+ case DBUS_TYPE_SIGNATURE:
+ append_basic_maybe_in_variant (iter, forced_type, &s, FALSE);
+ break;
+ case DBUS_TYPE_VARIANT:
+ append_basic_maybe_in_variant (iter, DBUS_TYPE_STRING, &s, TRUE);
+ break;
+ case DBUS_TYPE_ARRAY:
+ g_assert (forced_signature != NULL);
+ g_assert (forced_signature[0] == DBUS_TYPE_ARRAY);
+ if (forced_signature[1] == DBUS_TYPE_BYTE)
+ {
+ append_byte_array_maybe_in_variant (iter, s, len, FALSE);
+ }
+ else
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript string can't be converted to dbus array with elements of type '%c'",
+ forced_signature[1]);
+ return FALSE;
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript string can't be converted to dbus type '%c'",
+ forced_type);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Seems to be unused
+
+static gboolean
+append_int32 (SeedContext ctx,
+ DBusMessageIter * iter,
+ int forced_type,
+ dbus_int32_t v_INT32,
+ SeedException *exception)
+{
+ if (forced_type == DBUS_TYPE_INVALID)
+ forced_type = DBUS_TYPE_INT32;
+
+ switch (forced_type)
+ {
+ case DBUS_TYPE_INT32:
+ append_basic_maybe_in_variant (iter, forced_type, &v_INT32, FALSE);
+ break;
+ case DBUS_TYPE_VARIANT:
+ append_basic_maybe_in_variant (iter, DBUS_TYPE_INT32, &v_INT32, TRUE);
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ dbus_uint32_t v_UINT32 = v_INT32;
+ append_basic_maybe_in_variant (iter, forced_type, &v_UINT32, FALSE);
+ }
+ break;
+ case DBUS_TYPE_DOUBLE:
+ {
+ double v_DOUBLE = v_INT32;
+ append_basic_maybe_in_variant (iter, forced_type, &v_DOUBLE, FALSE);
+ }
+ break;
+ case DBUS_TYPE_BYTE:
+ {
+ unsigned char v_BYTE = v_INT32;
+ append_basic_maybe_in_variant (iter, forced_type, &v_BYTE, FALSE);
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript Integer can't be converted to dbus type '%c'",
+ forced_type);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+*/
+
+static gboolean
+append_double (SeedContext ctx,
+ DBusMessageIter * iter, int forced_type, double v_DOUBLE,
+ SeedException *exception)
+{
+ if (forced_type == DBUS_TYPE_INVALID)
+ forced_type = DBUS_TYPE_DOUBLE;
+
+ switch (forced_type)
+ {
+ case DBUS_TYPE_DOUBLE:
+ append_basic_maybe_in_variant (iter, forced_type, &v_DOUBLE, FALSE);
+ break;
+ case DBUS_TYPE_VARIANT:
+ append_basic_maybe_in_variant (iter, DBUS_TYPE_DOUBLE, &v_DOUBLE, TRUE);
+ break;
+ case DBUS_TYPE_INT32:
+ {
+ dbus_int32_t v_INT32 = v_DOUBLE;
+ append_basic_maybe_in_variant (iter, forced_type, &v_INT32, FALSE);
+ }
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ dbus_uint32_t v_UINT32 = v_DOUBLE;
+ append_basic_maybe_in_variant (iter, forced_type, &v_UINT32, FALSE);
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript Number can't be converted to dbus type '%c'",
+ forced_type);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+append_boolean (SeedContext ctx,
+ DBusMessageIter * iter,
+ int forced_type, dbus_bool_t v_BOOLEAN,
+ SeedException *exception)
+{
+ if (forced_type == DBUS_TYPE_INVALID)
+ forced_type = DBUS_TYPE_BOOLEAN;
+
+ switch (forced_type)
+ {
+ case DBUS_TYPE_BOOLEAN:
+ append_basic_maybe_in_variant (iter, forced_type, &v_BOOLEAN, FALSE);
+ break;
+ case DBUS_TYPE_VARIANT:
+ append_basic_maybe_in_variant (iter, DBUS_TYPE_BOOLEAN, &v_BOOLEAN,
+ TRUE);
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript Boolean can't be converted to dbus type '%c'",
+ forced_type);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+append_array (SeedContext ctx,
+ DBusMessageIter * iter,
+ DBusSignatureIter * sig_iter, SeedObject array,
+ int length,
+ SeedException *exception)
+{
+ DBusSignatureIter element_sig_iter;
+ int forced_type;
+ SeedValue element;
+ DBusMessageIter array_iter;
+ DBusMessageIter variant_iter;
+ int i;
+ char *sig;
+
+ forced_type = dbus_signature_iter_get_current_type (sig_iter);
+
+ if (forced_type == DBUS_TYPE_VARIANT)
+ {
+ DBusSignatureIter variant_sig_iter;
+
+ dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT,
+ "av", &variant_iter);
+ dbus_signature_iter_init (&variant_sig_iter, "av");
+ if (!append_array (ctx, &variant_iter,
+ &variant_sig_iter, array, length, exception))
+ return FALSE;
+ dbus_message_iter_close_container (iter, &variant_iter);
+
+ return TRUE;
+ }
+ else if (forced_type != DBUS_TYPE_ARRAY)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript Array can't be converted to dbus type %c",
+ forced_type);
+ return FALSE;
+ }
+
+ g_assert (dbus_signature_iter_get_current_type (sig_iter) ==
+ DBUS_TYPE_ARRAY);
+ dbus_signature_iter_recurse (sig_iter, &element_sig_iter);
+
+ sig = dbus_signature_iter_get_signature (&element_sig_iter);
+ dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, sig, &array_iter);
+ dbus_free (sig);
+
+ for (i = 0; i < length; i++)
+ {
+ element = seed_object_get_property_at_index (ctx, array, i, exception);
+
+ SEED_NOTE(MODULE, " Adding array element %u", i);
+
+ if (!seed_js_one_value_to_dbus (ctx, element, &array_iter,
+ &element_sig_iter, exception))
+ return FALSE;
+ }
+
+ dbus_message_iter_close_container (iter, &array_iter);
+
+ return TRUE;
+}
+// TODO: THIS IS WHERE I AM
+static gboolean
+append_dict (SeedContext ctx,
+ DBusMessageIter * iter,
+ DBusSignatureIter * sig_iter,
+ SeedObject props,
+ SeedException *exception)
+{
+ DBusSignatureIter element_sig_iter;
+ int forced_type;
+ DBusMessageIter variant_iter;
+ gchar **prop_names;
+ guint num_props, i;
+ DBusMessageIter dict_iter;
+ DBusSignatureIter dict_value_sig_iter;
+ char *sig;
+ SeedValue prop_signatures;
+
+ forced_type = dbus_signature_iter_get_current_type (sig_iter);
+
+ if (forced_type == DBUS_TYPE_VARIANT)
+ {
+ DBusSignatureIter variant_sig_iter;
+
+ dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT,
+ "a{sv}", &variant_iter);
+ dbus_signature_iter_init (&variant_sig_iter, "a{sv}");
+ if (!append_dict (ctx, &variant_iter, &variant_sig_iter, props, exception))
+ return FALSE;
+ dbus_message_iter_close_container (iter, &variant_iter);
+
+ return TRUE;
+ }
+ else if (forced_type != DBUS_TYPE_ARRAY)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "JavaScript Object can't be converted to dbus type %c",
+ forced_type);
+ return FALSE;
+ }
+
+ g_assert (dbus_signature_iter_get_current_type (sig_iter) ==
+ DBUS_TYPE_ARRAY);
+ dbus_signature_iter_recurse (sig_iter, &element_sig_iter);
+
+ if (dbus_signature_iter_get_current_type (&element_sig_iter) !=
+ DBUS_TYPE_DICT_ENTRY)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Objects must be marshaled as array of dict entry not of %c",
+ dbus_signature_iter_get_current_type (&element_sig_iter));
+ return FALSE;
+ }
+
+ /* dbus itself enforces that dict keys are strings */
+
+ g_assert (dbus_signature_iter_get_current_type (&element_sig_iter) ==
+ DBUS_TYPE_DICT_ENTRY);
+ dbus_signature_iter_recurse (&element_sig_iter, &dict_value_sig_iter);
+ /* check it points to key type first */
+ g_assert (dbus_signature_iter_get_current_type (&dict_value_sig_iter) ==
+ DBUS_TYPE_STRING);
+ /* move to value type */
+ dbus_signature_iter_next (&dict_value_sig_iter);
+
+ sig = dbus_signature_iter_get_signature (&element_sig_iter);
+ dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, sig, &dict_iter);
+ dbus_free (sig);
+
+ /* If a dictionary contains another dictionary at key
+ * _dbus_signatures, the sub-dictionary can provide the signature
+ * of each value in the outer dictionary. This allows forcing
+ * integers to unsigned or whatever.
+ *
+ * _dbus_signatures has a weird name to avoid conflicting with
+ * real properties. Matches _dbus_sender which is used elsewhere.
+ *
+ * We don't bother rooting the signature object or the stuff in it
+ * because we assume the outer dictionary is rooted so the stuff
+ * in it is also.
+ */
+ prop_signatures = seed_object_get_property (ctx, props, "_dbus_signatures");
+
+ if (!seed_value_is_undefined (ctx, prop_signatures) && !seed_value_is_object (ctx, prop_signatures))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "_dbus_signatures prop must be an object");
+ return FALSE;
+ }
+
+ if (!seed_value_is_undefined (ctx, prop_signatures) &&
+ dbus_signature_iter_get_current_type (&dict_value_sig_iter) !=
+ DBUS_TYPE_VARIANT)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Specifying _dbus_signatures for a dictionary with non-variant values is useless");
+ return FALSE;
+ }
+
+ prop_names = seed_object_copy_property_names (ctx, props);
+ num_props = g_strv_length (prop_names);
+
+ for (i = 0; i < num_props; i++)
+ {
+ char *name;
+ SeedValue propval;
+ DBusMessageIter entry_iter;
+ const char *value_signature;
+
+ name = prop_names[i];
+
+ if (strcmp (name, "_dbus_signatures") == 0)
+ {
+ /* skip the magic "_dbus_signatures" field */
+ goto next;
+ }
+
+ /* see if this prop has a forced signature */
+ value_signature = NULL;
+ if (!seed_value_is_undefined (ctx, prop_signatures))
+ {
+ SeedValue signature_value;
+
+ signature_value = seed_object_get_property (ctx, prop_signatures, name);
+ if (!seed_value_is_undefined (ctx, signature_value))
+ {
+ value_signature = seed_value_to_string (ctx, signature_value, exception);
+ if (value_signature == NULL)
+ {
+ return FALSE;
+ }
+ }
+ }
+
+ // if (!gjs_object_require_property
+ // (ctx, props, "DBus append_dict", name, &propval))
+ //return FALSE;
+ propval = seed_object_get_property (ctx, props, name);
+
+ SEED_NOTE(MODULE, " Adding property %s", name);
+
+ /* seed_js_one_value_to_dbus() would check this also, but would not
+ * print the property name, which is often useful
+ */
+ if (seed_value_is_null (ctx, propval))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Property '%s' has a null value, can't send over dbus",
+ name);
+ return FALSE;
+ }
+
+ dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_DICT_ENTRY,
+ NULL, &entry_iter);
+
+ dbus_message_iter_append_basic (&entry_iter, DBUS_TYPE_STRING, &name);
+ g_free (name);
+
+ if (value_signature != NULL)
+ {
+ DBusSignatureIter forced_signature_iter;
+ DBusMessageIter variant_iter;
+
+ g_assert (dbus_signature_iter_get_current_type
+ (&dict_value_sig_iter) == DBUS_TYPE_VARIANT);
+
+ dbus_message_iter_open_container (&entry_iter,
+ DBUS_TYPE_VARIANT,
+ value_signature, &variant_iter);
+
+ dbus_signature_iter_init (&forced_signature_iter, value_signature);
+
+ if (!seed_js_one_value_to_dbus (ctx, propval, &variant_iter,
+ &forced_signature_iter, exception))
+ return FALSE;
+
+ dbus_message_iter_close_container (&entry_iter, &variant_iter);
+ }
+ else
+ {
+ if (!seed_js_one_value_to_dbus (ctx, propval, &entry_iter,
+ &dict_value_sig_iter, exception))
+ return FALSE;
+ }
+
+ dbus_message_iter_close_container (&dict_iter, &entry_iter);
+
+ next:
+ continue;
+ }
+ g_strfreev (prop_names);
+
+ dbus_message_iter_close_container (iter, &dict_iter);
+
+ return TRUE;
+}
+
+gboolean
+seed_js_one_value_to_dbus (SeedContext ctx,
+ SeedValue value,
+ DBusMessageIter * iter,
+ DBusSignatureIter * sig_iter,
+ SeedException *exception)
+{
+ SeedType type;
+ int forced_type;
+
+ forced_type = dbus_signature_iter_get_current_type (sig_iter);
+
+ SEED_NOTE(MODULE,
+ "Converting dbus type '%c' from SeedValue",
+ forced_type != DBUS_TYPE_INVALID ? forced_type : '0');
+
+ /* Don't write anything on the bus if the signature is empty */
+ if (forced_type == DBUS_TYPE_INVALID)
+ return TRUE;
+
+ type = seed_value_get_type (ctx, value);
+
+ if (seed_value_is_null (ctx, value))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Can't send null values over dbus");
+ return FALSE;
+ }
+ else if (type == SEED_TYPE_STRING)
+ {
+ char *data;
+ gsize len;
+ char buf[3] = { '\0', '\0', '\0' };
+ if (forced_type == DBUS_TYPE_ARRAY)
+ {
+ buf[0] = DBUS_TYPE_ARRAY;
+ buf[1] = dbus_signature_iter_get_element_type (sig_iter);
+ }
+ else
+ {
+ buf[0] = forced_type;
+ }
+
+ data = NULL;
+ len = 0;
+ // FIX?
+ if (buf[1] == DBUS_TYPE_BYTE)
+ {
+ data = seed_value_to_string (ctx, value, exception);
+ len = strlen (data);
+ // if (!gjs_string_get_binary_data (ctx, value, &data, &len))
+ //return FALSE;
+ }
+ else
+ {
+ data = seed_value_to_string (ctx, value, exception);
+ len = strlen (data);
+ }
+
+ if (!append_string (ctx, iter, buf, data, len, exception))
+ {
+ g_free (data);
+ return FALSE;
+ }
+
+ g_free (data);
+ }
+ /* else if (type == SEED_TYPE_NUMBER)
+ {
+ dbus_int32_t v_INT32;
+ v_INT32 = seed_value_to_int (ctx, value, exception);
+
+ if (!append_int32 (ctx, iter, forced_type, v_INT32, exception))
+ return FALSE;
+ }*/
+ else if (type == SEED_TYPE_NUMBER)
+ {
+ double v_DOUBLE;
+ v_DOUBLE = seed_value_to_double (ctx, value, exception);
+
+ if (!append_double (ctx, iter, forced_type, v_DOUBLE, exception))
+ return FALSE;
+ }
+ else if (type == SEED_TYPE_BOOLEAN)
+ {
+ dbus_bool_t v_BOOLEAN;
+ v_BOOLEAN = seed_value_to_boolean (ctx, value, exception);
+
+ if (!append_boolean (ctx, iter, forced_type, v_BOOLEAN, exception))
+ return FALSE;
+ }
+ else if (type == SEED_TYPE_OBJECT)
+ {
+ SeedValue lengthval;
+
+ /* see if there's a length property */
+ lengthval = seed_object_get_property (ctx, value, "length");
+
+ if (seed_value_get_type (ctx, lengthval) == SEED_TYPE_NUMBER)
+ {
+ guint length;
+
+ length = seed_value_to_int (ctx, lengthval, exception);
+
+ SEED_NOTE(MODULE,
+ "Looks like an array length %u", length);
+ if (!append_array (ctx, iter, sig_iter, value, length, exception))
+ return FALSE;
+ }
+ else
+ {
+ SEED_NOTE(MODULE, "Looks like a dictionary");
+ if (!append_dict (ctx, iter, sig_iter, value, exception))
+ return FALSE;
+ }
+ }
+ else if (type == SEED_TYPE_UNDEFINED)
+ {
+ SEED_NOTE (MODULE,
+ "Can't send void (undefined) values over dbus");
+ seed_make_exception (ctx, exception, "ArgumentError", "Can't send void (undefined) values over dbus");
+ return FALSE;
+ }
+ else
+ {
+ SEED_NOTE (MODULE,
+ "Don't know how to convert this jsval to dbus type");
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Don't know how to convert this jsval to dbus type");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+seed_js_values_to_dbus (SeedContext ctx,
+ int index,
+ SeedObject values,
+ DBusMessageIter * iter,
+ DBusSignatureIter * sig_iter,
+ SeedException *exception)
+{
+ SeedValue value;
+ guint length;
+
+ length = seed_value_to_int (ctx,
+ seed_object_get_property (ctx, values, "length"),
+ exception);
+ if (index > (int) length)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Index %d is bigger than array length %d", index,
+ length);
+ return FALSE;
+ }
+
+ if (index == (int) length)
+ return TRUE;
+
+ value = seed_object_get_property_at_index (ctx, values, index, exception);
+
+ if (!seed_js_one_value_to_dbus (ctx, value, iter, sig_iter, exception))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Error marshalling js value to dbus");
+ return FALSE;
+ }
+
+ if (dbus_signature_iter_next (sig_iter))
+ {
+ return seed_js_values_to_dbus (ctx, index + 1, values, iter,
+ sig_iter, exception);
+ }
+
+ return TRUE;
+}
+
+/* If jsval is an object, add properties from the DBusMessage such as the
+ * sender. If jsval is not an object, do nothing.
+ */
+gboolean
+seed_js_add_dbus_props (SeedContext ctx, DBusMessage * message, SeedValue value,
+ SeedException *exception)
+{
+ gchar *sender;
+
+ if (seed_value_is_null (ctx, value) || !seed_value_is_object (ctx, value))
+ return TRUE;
+
+ sender = (gchar *)dbus_message_get_sender (message);
+
+ seed_object_set_property (ctx, value, "_dbus_sender",
+ seed_value_from_string (ctx, sender, exception));
+
+ return TRUE;
+}
diff --git a/modules/dbus/dbus-values.h b/modules/dbus/dbus-values.h
new file mode 100644
index 0000000..2aa948f
--- /dev/null
+++ b/modules/dbus/dbus-values.h
@@ -0,0 +1,42 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#ifndef __SEED_JS_DBUS_VALUES_H__
+#define __SEED_JS_DBUS_VALUES_H__
+
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <seed.h>
+
+G_BEGIN_DECLS
+
+extern SeedContextGroup group;
+
+gboolean seed_js_values_from_dbus (SeedContext ctx,
+ DBusMessageIter *iter,
+ GArray **aray_p,
+ SeedException *exception);
+gboolean seed_js_one_value_from_dbus (SeedContext ctx,
+ DBusMessageIter *iter,
+ SeedValue *value_p,
+ SeedException *exception);
+gboolean seed_js_values_to_dbus (SeedContext ctx,
+ int index,
+ SeedObject values,
+ DBusMessageIter *iter,
+ DBusSignatureIter *sig_iter,
+ SeedException *exception);
+gboolean seed_js_one_value_to_dbus (SeedContext ctx,
+ SeedValue value,
+ DBusMessageIter *iter,
+ DBusSignatureIter *sig_iter,
+ SeedException *exception);
+gboolean seed_js_add_dbus_props (SeedContext ctx,
+ DBusMessage *message,
+ SeedValue value,
+ SeedException *exception);
+
+
+G_END_DECLS
+
+#endif /* __SEED_JS_DBUS_VALUES_H__ */
diff --git a/modules/dbus/dbus.js b/modules/dbus/dbus.js
new file mode 100644
index 0000000..b0fae2c
--- /dev/null
+++ b/modules/dbus/dbus.js
@@ -0,0 +1,684 @@
+// Copyright 2008 litl, LLC. All Rights Reserved.
+log = print
+Lang = imports.lang;
+//const StringUtil = imports.stringUtil;
+//const ArrayUtil = imports.arrayUtil;
+
+// Parameters for acquire_name, keep in sync with
+// enum in util/dbus.h
+const SINGLE_INSTANCE = 0;
+const MANY_INSTANCES = 1;
+
+const NO_START_IF_NOT_FOUND = false;
+const START_IF_NOT_FOUND = true;
+
+// Merge stuff defined in native code
+dbusnative = imports.dbusnative;
+Lang.copyProperties(dbusnative, this);
+
+function propsToArray(obj) {
+ var a = new Array();
+ for (i in ifaces)
+ a.push(i);
+ return a;
+}
+
+
+var Introspectable = {
+ name: 'org.freedesktop.DBus.Introspectable',
+ methods: [
+ // Introspectable: return an XML description of the object.
+ // Out Args:
+ // xml_data: XML description of the object.
+ { name: 'Introspect', inSignature: '', outSignature: 's' }
+ ],
+ signals: [],
+ properties: []
+};
+
+var Properties = {
+ name: 'org.freedesktop.DBus.Properties',
+ methods: [
+ { name: 'Get', inSignature: 'ss', outSignature: 'v' },
+ { name: 'Set', inSignature: 'ssv', outSignature: '' },
+ { name: 'GetAll', inSignature: 's', outSignature: 'a{sv}' }
+ ],
+ signals: [],
+ properties: []
+};
+
+function _proxyInvoker(obj, ifaceName, methodName, outSignature, inSignature, timeout, arg_array) {
+ var replyFunc;
+
+ /* Note: "this" in here is the module, "obj" is the proxy object
+ */
+
+ if (ifaceName == null)
+ ifaceName = obj._dbusInterface;
+
+ /* Convert arg_array to a *real* array */
+ arg_array = Array.prototype.slice.call(arg_array);
+
+ /* The default replyFunc only logs the responses */
+ replyFunc = _logReply;
+
+ var expectedNumberArgs = this.signatureLength(inSignature);
+
+ if (arg_array.length < expectedNumberArgs) {
+ throw new Error("Not enough arguments passed for method: " + methodName +
+ ". Expected " + expectedNumberArgs + ", got " + arg_array.length);
+ } else if (arg_array.length == expectedNumberArgs + 1) {
+ /* If there's one more than the expected number
+ * of argument we asume the last one is the reply
+ * function
+ */
+ replyFunc = arg_array.pop();
+ } else if (arg_array.length != expectedNumberArgs) {
+ throw new Error("Too many arguments passed for method: " + methodName +
+ ". Maximum is " + expectedNumberArgs + " + one callback");
+ }
+
+ /* Auto-start on method calls is too unpredictable; in particular if
+ * something crashes we want to cleanly restart it, not have it
+ * come back next time someone tries to use it.
+ */
+ obj._dbusBus.call_async(obj._dbusBusName,
+ obj._dbusPath,
+ ifaceName,
+ methodName,
+ outSignature,
+ inSignature,
+ NO_START_IF_NOT_FOUND,
+ timeout,
+ arg_array,
+ replyFunc);
+}
+
+function _proxyInvokerSync(obj, ifaceName, methodName, outSignature, inSignature, timeout, arg_array) {
+ if (ifaceName == null)
+ ifaceName = obj._dbusInterface;
+
+ /* Convert arg_array to a *real* array */
+ arg_array = Array.prototype.slice.call(arg_array);
+
+ var expectedNumberArgs = this.signatureLength(inSignature);
+
+ if (arg_array.length < expectedNumberArgs) {
+ throw new Error("Not enough arguments passed for method: " + methodName +
+ ". Expected " + expectedNumberArgs + ", got " + arg_array.length);
+ } else if (arg_array.length > expectedNumberArgs) {
+ throw new Error("Too many arguments passed for method: " + methodName +
+ ". Maximum is " + expectedNumberArgs);
+ }
+
+ /* Auto-start on method calls is too unpredictable; in particular if
+ * something crashes we want to cleanly restart it, not have it
+ * come back next time someone tries to use it.
+ */
+ return obj._dbusBus.call(obj._dbusBusName,
+ obj._dbusPath,
+ ifaceName,
+ methodName,
+ outSignature,
+ inSignature,
+ NO_START_IF_NOT_FOUND,
+ arg_array);
+
+}
+
+function _logReply(result, exc) {
+ if (result != null) {
+ log("Ignored reply to dbus method: " + result.toSource());
+ }
+ if (exc != null) {
+ log("Ignored exception from dbus method: " + exc.message);
+ }
+}
+
+function _makeProxyMethod(member) {
+ return function() {
+ /* JSON methods are the default */
+ if (!("outSignature" in member))
+ member.outSignature = "a{sv}";
+
+ if (!("inSignature" in member))
+ member.inSignature = "a{sv}";
+
+ if (!("timeout" in member))
+ member.timeout = -1;
+
+ _proxyInvoker(this, null, member.name,
+ member.outSignature, member.inSignature,
+ member.timeout, arguments);
+ };
+}
+
+function _makeProxyMethodSync(member) {
+ return function() {
+ /* JSON methods are the default */
+ if (!("outSignature" in member))
+ member.outSignature = "a{sv}";
+
+ if (!("inSignature" in member))
+ member.inSignature = "a{sv}";
+
+ if (!("timeout" in member))
+ member.timeout = -1;
+
+ return _proxyInvokerSync(this, null, member.name,
+ member.outSignature, member.inSignature,
+ member.timeout, arguments);
+ };
+}
+
+// stub we insert in all proxy prototypes
+function _getBusName() {
+ return this._dbusBusName;
+}
+
+// stub we insert in all proxy prototypes
+function _getPath() {
+ return this._dbusPath;
+}
+
+// stub we insert in all proxy prototypes
+function _getBus() {
+ return this._dbusBus;
+}
+
+// stub we insert in all proxy prototypes
+function _getInterface() {
+ return this._dbusInterface;
+}
+
+function _invokeSignalWatchCallback(callback, emitter, argsFromDBus) {
+ var argArray = [emitter];
+ var length = argsFromDBus.length;
+ for (var i = 0; i < length; ++i) {
+ argArray.push(argsFromDBus[i]);
+ }
+ callback.apply(null, argArray);
+}
+
+function _connect(signalName, callback) {
+ if (!this._signalNames || !(signalName in this._signalNames))
+ throw new Error("Signal " + signalName + " not defined in this object");
+
+ var me = this;
+ return this._dbusBus.watch_signal(this._dbusBusName,
+ this._dbusPath,
+ this._dbusInterface,
+ signalName,
+ function() {
+ _invokeSignalWatchCallback(callback,
+ me,
+ arguments);
+ });
+}
+
+function _disconnectByID(ID) {
+ this._dbusBus.unwatch_signal_by_id(ID);
+}
+
+function _getRemote(propName) {
+ // convert arguments to regular array
+ var argArray = [].splice.call(arguments, 0);
+ // prepend iface the property is on
+ argArray.splice(0, 0, this._dbusInterface);
+
+ _proxyInvoker(this, "org.freedesktop.DBus.Properties",
+ "Get",
+ "v",
+ "ss",
+ -1,
+ argArray);
+}
+
+function _setRemote(propName, value) {
+ // convert arguments to regular array
+ var argArray = [].splice.call(arguments, 0);
+ // prepend iface the property is on
+ argArray.splice(0, 0, this._dbusInterface);
+
+ _proxyInvoker(this, "org.freedesktop.DBus.Properties",
+ "Set",
+ "",
+ "ssv",
+ -1,
+ argArray);
+}
+
+function _getRemoteSync(propName) {
+ // convert arguments to regular array
+ var argArray = [].splice.call(arguments, 0);
+ // prepend iface the property is on
+ argArray.splice(0, 0, this._dbusInterface);
+
+ return _proxyInvokerSync(this, "org.freedesktop.DBus.Properties",
+ "Get",
+ "v",
+ "ss",
+ -1,
+ argArray);
+}
+
+function _setRemoteSync(propName, value) {
+ // convert arguments to regular array
+ var argArray = [].splice.call(arguments, 0);
+ // prepend iface the property is on
+ argArray.splice(0, 0, this._dbusInterface);
+
+ _proxyInvokerSync(this, "org.freedesktop.DBus.Properties",
+ "Set",
+ "",
+ "ssv",
+ -1,
+ argArray);
+}
+
+function _getAllRemote() {
+ // convert arguments to regular array
+ var argArray = [].splice.call(arguments, 0);
+ // prepend iface the properties are on
+ argArray.splice(0, 0, this._dbusInterface);
+
+ _proxyInvoker(this, "org.freedesktop.DBus.Properties",
+ "GetAll",
+ "a{sv}",
+ "s",
+ -1,
+ argArray);
+}
+
+// adds remote members to a prototype. The instances using
+// the prototype must be proxified with proxifyObject, too.
+// Note that the bus (system vs. session) is per-instance not
+// per-prototype so the bus should not be involved in this
+// function.
+// The "iface" arg is a special object that might have properties
+// for 'name', 'methods', and 'signals'
+function proxifyPrototype(proto, iface) {
+ if ('name' in iface)
+ proto._dbusInterface = iface.name;
+ else
+ proto._dbusInterface = null;
+
+ if ('methods' in iface) {
+ var methods = iface.methods;
+
+ for (var i = 0; i < methods.length; ++i) {
+ var method = methods[i];
+
+ if (!('name' in method))
+ throw new Error("Method definition must have a name");
+
+ /* To ease transition let's create two methods: Foo and FooRemote.
+ * Foo will just log a warning so we can catch people using the
+ * old naming system. FooRemote is the actual proxy method.
+ */
+ var methodName = method.name + "Remote";
+ proto[methodName] = _makeProxyMethod(method);
+ proto[methodName+"Sync"] = _makeProxyMethodSync(method);
+ proto[method.name] = function() {
+ log("PROXY-ERROR: " + method.name + " called, you should be using " +
+ methodName + " instead");
+ };
+ }
+ }
+
+ if ('signals' in iface) {
+ var signals = iface.signals;
+ var signalNames = {};
+
+ for (var i = 0; i < signals.length; i++) {
+ var signal = signals[i];
+
+ if (!('name' in signal))
+ throw new Error("Signal definition must have a name");
+
+ var name = signal.name;
+
+ /* This is a bit silly, but we might want to add more information
+ * later and it still beats an Array in checking if the object has
+ * a given signal
+ */
+ signalNames[name] = name;
+ }
+
+ proto['_signalNames'] = signalNames;
+ proto['connect'] = _connect;
+ proto['disconnect'] = _disconnectByID;
+ }
+
+ // properties just adds GetRemote, SetRemote, and GetAllRemote
+ // methods; using attributes would force synchronous API.
+ if ('properties' in iface &&
+ iface.properties.length > 0) {
+ proto['GetRemote'] = _getRemote;
+ proto['SetRemote'] = _setRemote;
+ proto['GetRemoteSync'] = _getRemoteSync;
+ proto['SetRemoteSync'] = _setRemoteSync;
+ proto['GetAllRemote'] = _getAllRemote;
+ }
+
+ proto['getBusName'] = _getBusName;
+ proto['getPath'] = _getPath;
+ proto['getBus'] = _getBus;
+ proto['getInterface'] = _getInterface;
+}
+
+// methods common to both session and system buses.
+// add them to the common prototype of this.session and this.system.
+
+// convert any object to a dbus proxy ... assumes its prototype is
+// also proxified
+this.system.proxifyObject = this.session.proxifyObject = function(obj, busName, path) {
+ if (!busName) {
+ throw new Error('missing bus name proxifying object');
+ }
+ if (!path) {
+ throw new Error('missing path proxifying object');
+ }
+ if (path[0] != '/')
+ throw new Error("Path doesn't look like a path: " + path);
+
+ obj._dbusBus = this;
+ obj._dbusBusName = busName;
+ obj._dbusPath = path;
+};
+
+// add 'object' to the exports object at the given path
+var _addExports = function(node, path, object) {
+ if (path == '') {
+ if ('-impl-' in node)
+ throw new Error("Object already registered for path.");
+ node['-impl-'] = object;
+ } else {
+ var idx = path.indexOf('/');
+ var head = (idx >= 0) ? path.slice(0, idx) : path;
+ var tail = (idx >= 0) ? path.slice(idx+1) : '';
+ if (!(head in node))
+ node[head] = {};
+ _addExports(node[head], tail, object);
+ }
+};
+// Fiiix
+// remove any implementation from exports at the given path.
+var _removeExportsPath = function(node, path) {
+ if (path == '') {
+ delete node['-impl-'];
+ } else {
+ var idx = path.indexOf('/');
+ var head = (idx >= 0) ? path.slice(0, idx) : path;
+ var tail = (idx >= 0) ? path.slice(idx+1) : '';
+ // recursively delete next component
+ _removeExportsPath(node[head], tail);
+ // are we empty now? if so, clean us up.
+ // If we had destructuring assignment, this would be cool
+ if (propsToArray(node[head]).length == 0) {
+ delete node[head];
+ }
+ }
+};
+
+this._busProto = this.session.__proto__
+// export the object at the specified object path
+this._busProto.exportObject = function(path, object) {
+ if (path.slice(0,1) != '/')
+ throw new Error("Bad path! Must start with /");
+ // keep session and system paths separate, just in case we register on both
+ var pathProp = '_dbusPaths' + this._dbusBusType;
+ // optimize for the common one-path case by using a colon-delimited
+ // string rather than an array.
+ if (!(pathProp in object)) {
+ object[pathProp] = path;
+ } else {
+ object[pathProp] += ':' + path;
+ }
+ _addExports(this.exports, path.slice(1), object);
+};
+
+// unregister this object from all its paths
+this._busProto.unexportObject = function(object) {
+ // keep session and system paths separate, just in case we register on both
+ var pathProp = '_dbusPaths' + this._dbusBusType;
+ if (!(pathProp in object))
+ return; // already or never registered.
+ var dbusPaths = object[pathProp].split(':');
+ for (var i = 0; i < dbusPaths.length; ++i) {
+ var path = dbusPaths[i];
+ _removeExportsPath(this.exports, path.slice(1));
+ }
+ delete object[pathProp];
+};
+
+
+// given a "this" with _dbusInterfaces, return a dict from property
+// names to property signatures. Used as value of _dbus_signatures
+// when passing around a dict of properties.
+function _getPropertySignatures(ifaceName) {
+ var iface = this._dbusInterfaces[ifaceName];
+ if (!iface)
+ throw new Error("Object has no interface " + ifaceName);
+ if (!('_dbusPropertySignaturesCache' in iface)) {
+ var signatures = {};
+ if ('properties' in iface) {
+ var properties = iface.properties;
+ for (var i = 0; i < properties.length; ++i) {
+ signatures[properties[i].name] =
+ properties[i].signature;
+ }
+ }
+ iface._dbusPropertySignaturesCache = signatures;
+ }
+ return iface._dbusPropertySignaturesCache;
+}
+
+// split a "single complete type" (SCT) from the rest of a dbus signature.
+// Returns the tail, and the head is added to acc.
+function _eatSCT(acc, s) {
+ // eat the first character
+ var c = s.charAt(0);
+ s = s.slice(1);
+ acc.push(c);
+ // if this is a compound type, loop eating until we reach the close paren
+ if (c=='(') {
+ while (s.charAt(0) != ')') {
+ s = _eatSCT(acc, s);
+ }
+ s = _eatSCT(acc, s); // the close paren
+ } else if (c=='{') {
+ s = _eatSCT(acc, s);
+ s = _eatSCT(acc, s);
+ if (s.charAt(0) != '}')
+ throw new Error("Bad DICT_ENTRY signature!");
+ s = _eatSCT(acc, s); // the close brace
+ } else if (c=='a') {
+ s = _eatSCT(acc, s); // element type
+ }
+ return s;
+}
+
+// parse signature string, generating a list of "single complete types"
+//function _parseDBusSigs(sig) {
+ // while (sig.length > 0) {
+ // var one = [];
+ // sig = _eatSCT(one, sig);
+ // yield one.join('');
+// }
+//}
+
+function _parseDBusSigs(sig){
+ var sigs = [];
+ while (sig.length > 0) {
+ sig = _eatSCT(sigs, sig);
+ }
+ return sigs.join('');
+}
+
+
+// given a "this" with _dbusInterfaces, returns DBus Introspection
+// format XML giving interfaces and methods implemented.
+function _getInterfaceXML() {
+ var result = '';
+ // iterate through defined interfaces
+ var ifaces = ('_dbusInterfaces' in this) ? this._dbusInterfaces : {};
+ ifaces = propsToArray(ifaces);
+ // add introspectable and properties
+ ifaces.push(Introspectable);
+ ifaces.push(Properties);
+
+ for (var i = 0; i < ifaces.length; i++) {
+ var iface = ifaces[i];
+ result += Seed.sprintf(' <interface name="%s">\n', iface.name);
+ // describe methods.
+ var methods = ('methods' in iface) ? iface.methods : [];
+ for (var j = 0; j < methods.length; j++) {
+ var method = methods[j];
+ result += Seed.sprintf(
+ ' <method name="%s">\n', method.name);
+ for (var sig in _parseDBusSigs(method.inSignature)) {
+ result += Seed.sprintf(
+ ' <arg type="%s" direction="in"/>\n', sig);
+ }
+ for (var sig in _parseDBusSigs(method.outSignature)) {
+ result += Seed.sprintf(
+ ' <arg type="%s" direction="out"/>\n', sig);
+ }
+ result += ' </method>\n';
+ }
+ // describe signals
+ var signals = ('signals' in iface) ? iface.signals : [];
+ for (var j = 0; j < signals.length; j++) {
+ var signal = signals[j];
+ result += Seed.sprintf(
+ ' <signal name="%s">\n', signal.name);
+ for (var sig in _parseDBusSigs(signal.inSignature)) {
+ result += Seed.sprintf(
+ ' <arg type="%s"/>\n', sig);
+ }
+ result += ' </signal>\n';
+ }
+ // describe properties
+ var properties = ('properties' in iface) ? iface.properties : [];
+ for (var j = 0; j < properties.length; j++) {
+ var property = properties[j];
+ result += Seed.sprintf(
+ ' <property name="%s" type="%s" access="%s"/>\n',
+ property.name, property.signature, property.access);
+ }
+ // close <interface> tag
+ result += ' </interface>\n';
+ }
+ return result;
+}
+
+// Verifies that a given object conforms to a given interface,
+// and stores meta-info from the interface in the object as
+// required.
+// Note that an object can be exported on multiple buses, so conformExport()
+// should not be specific to the bus (session vs. system)
+function conformExport(object, iface) {
+
+ if (!('_dbusInterfaces' in object)) {
+ object._dbusInterfaces = {};
+ } else if (iface.name in object._dbusInterfaces) {
+ return;
+ }
+
+ object._dbusInterfaces[iface.name] = iface;
+
+ object.getDBusPropertySignatures =
+ _getPropertySignatures;
+
+ if (!('getDBusInterfaceXML' in object))
+ object.getDBusInterfaceXML = _getInterfaceXML;
+
+ if ('methods' in iface) {
+ var methods = iface.methods;
+
+ for (var i = 0; i < methods.length; ++i) {
+ var method = methods[i];
+
+ if (!('name' in method))
+ throw new Error("Method definition must have a name");
+
+ if (!('outSignature' in method))
+ method.outSignature = "a{sv}";
+
+ var name = method.name;
+ var asyncName = name +"Async";
+
+ var missing = [];
+ if (!(name in object) &&
+ !(asyncName in object)) {
+ missing.push(name);
+ } else {
+ if (asyncName in object)
+ object[asyncName].outSignature = method.outSignature;
+ else
+ object[name].outSignature = method.outSignature;
+ }
+
+ if (missing.length > 0) {
+ throw new Error("Exported object missing members " + missing.toSource());
+ }
+ }
+ }
+
+ if ('properties' in iface) {
+ var properties = iface.properties;
+
+ var missing = [];
+ for (var i = 0; i < properties.length; ++i) {
+ if (!(properties[i].name in object)) {
+ missing += properties[i];
+ }
+ }
+
+ if (missing.length > 0) {
+ throw new Error("Exported object missing properties " + missing.toSource());
+ }
+ }
+
+ // sanity-check signals
+ if ('signals' in iface) {
+ var signals = iface.signals;
+
+ for (var i = 0; i < signals.length; ++i) {
+ var signal = signals[i];
+ if (signal.name.indexOf('-') >= 0)
+ throw new Error("dbus signals cannot have a hyphen in them, use camelCase");
+ }
+ }
+}
+
+// DBusError object
+// Used to return dbus error with given name and mesage from
+// remote methods
+
+function DBusError(dbusErrorName, errorMessage) {
+ this.dbusErrorName = dbusErrorName;
+ this.errorMessage = errorMessage;
+}
+
+DBusError.prototype = {
+ toString: function() {
+ return this.errorMessage;
+ }
+};
+
+// Introspectable proxy
+function IntrospectableProxy(bus, busName, path) {
+ this._init(bus, busName, path);
+}
+
+IntrospectableProxy.prototype = {
+ _init : function(bus, busName, path) {
+ bus.proxifyObject(this, busName, path);
+ }
+
+};
+
+proxifyPrototype(IntrospectableProxy.prototype,
+ Introspectable);
diff --git a/modules/dbus/dbus2js.py b/modules/dbus/dbus2js.py
new file mode 100755
index 0000000..e8044cb
--- /dev/null
+++ b/modules/dbus/dbus2js.py
@@ -0,0 +1,218 @@
+#! /usr/bin/python
+# Copyright 2009 litl, LLC. All Rights Reserved.
+
+## this file outputs sortof-indented JavaScript,
+## it's semi-readable for use when testing, but
+## when checking in real output, run M-x indent-region
+## in js2-mode
+
+import sys
+import xml.dom.minidom
+import textwrap
+import re
+
+out = sys.stdout
+
+commentWrapper = textwrap.TextWrapper()
+commentWrapper.initial_indent = '// '
+commentWrapper.subsequent_indent = '// '
+
+def getText(nodelist):
+ rc = ""
+ for node in nodelist:
+ if node.nodeType == node.TEXT_NODE:
+ rc = rc + node.data
+ return rc
+
+def getDocstring(node):
+ docstrings = node.getElementsByTagName('tp:docstring')
+ docstring = ''
+ if len(docstrings) > 0 and docstrings[0].parentNode == node:
+ docstring = getText(docstrings[0].childNodes).strip()
+ return re.sub('\s+', ' ', docstring)
+
+def methodAsString(method):
+ dbusName = method.getAttribute("name")
+ args = method.getElementsByTagName("arg")
+ methodDocstring = getDocstring(method)
+ inArgs = ''
+ inArgsComments = ''
+ outArgs = ''
+ outArgsComments = ''
+ for arg in args:
+ argName = arg.getAttribute('name')
+ docstring = getDocstring(arg)
+ tpType = arg.getAttribute('tp:type')
+ if tpType and len(tpType) > 0:
+ docstring = "(" + tpType + ") " + docstring
+ comment = commentWrapper.fill(' ' + argName + ': ' + docstring) + '\n'
+ direction = arg.getAttribute('direction')
+ type = arg.getAttribute('type')
+ if direction == 'in' or (method.tagName == 'signal' and not direction):
+ inArgs += type
+ inArgsComments += comment
+ elif direction == 'out':
+ outArgs += type
+ outArgsComments += comment
+ else:
+ raise Exception("unknown direction " + direction)
+
+ errorComments = ''
+ possibleErrors = method.getElementsByTagName("tp:possible-errors")
+ if possibleErrors:
+ for error in possibleErrors[0].getElementsByTagName("tp:error"):
+ errorName = error.getAttribute("name")
+ docstring = getDocstring(error)
+ errorComments += commentWrapper.fill(' ' + errorName + ' ' + docstring) + '\n'
+
+ if "'" in methodDocstring:
+ # js2-mode gets pissy about unmatched quotes in comments,
+ # it's a bug
+ methodDocstring = methodDocstring.replace("'", "")
+ docComment = commentWrapper.fill(dbusName + ': ' + methodDocstring) + '\n'
+
+ if len(inArgsComments) > 0:
+ inArgsComments = "// In Args:\n" + inArgsComments
+ if len(outArgsComments) > 0:
+ outArgsComments = "// Out Args:\n" + outArgsComments
+ if len(errorComments) > 0:
+ errorComments = "// Errors:\n" + errorComments
+
+ inSig = "inSignature: '%s'" % inArgs
+ outSig = "outSignature: '%s'" % outArgs
+
+ asString = "\n%s%s%s%s\n{ name: '%s', %s, %s }" % \
+ (docComment, inArgsComments, outArgsComments, errorComments,
+ dbusName, inSig, outSig)
+ return asString
+
+def methodsOrSignalsAsString(methodsOrSignals):
+ if len(methodsOrSignals) == 0:
+ return "[]"
+
+ asString = '[\n'
+ for method in methodsOrSignals:
+ asString = asString + ' ' + methodAsString(method) + ',\n'
+
+ asString = asString[:-2] + '\n ]'
+
+ return asString
+
+def propertiesAsString(properties):
+ if len(properties) == 0:
+ return "[]"
+
+ asString = '[\n'
+ for prop in properties:
+ name = prop.getAttribute("name")
+ type = prop.getAttribute("type")
+ tpType = prop.getAttribute("tp:type")
+ access = prop.getAttribute("access")
+ docComment = name + ': '
+ if tpType and len(tpType) > 0:
+ docComment += '(' + tpType + ') ';
+ docComment = '\n' + commentWrapper.fill(docComment + getDocstring(prop))
+ asString += "%s\n\n { name: '%s', signature: '%s', access: '%s' },\n" % \
+ (docComment, name, type, access);
+
+ asString = asString[:-2] + '\n ]'
+
+ return asString
+
+def outputEnums(enums, dbusIfaceName):
+ for e in enums:
+ eName = e.getAttribute('name')
+ out.write('\n// ' + eName + ' in ' + dbusIfaceName + '\n')
+ values = []
+ for val in e.getElementsByTagName('tp:enumvalue'):
+ valSuffix = val.getAttribute('suffix')
+ valValue = val.getAttribute('value')
+ valDocstring = getDocstring(val)
+ values.append((valSuffix, valValue, valDocstring))
+ for val in values:
+ out.write(commentWrapper.fill(' ' + val[0] + ': ' + val[2]) + '\n')
+ out.write('\n')
+ for val in values:
+ out.write('const %s_%s = %s;\n' % (eName, val[0], val[1]))
+ out.write('\n')
+
+def outputFlags(flags, dbusIfaceName):
+ for e in flags:
+ eName = e.getAttribute('name')
+ out.write('\n// ' + eName + ' in ' + dbusIfaceName + '\n')
+ values = []
+ for val in e.getElementsByTagName('tp:flag'):
+ valSuffix = val.getAttribute('suffix')
+ valValue = val.getAttribute('value')
+ valDocstring = getDocstring(val)
+ values.append((valSuffix, valValue, valDocstring))
+ for val in values:
+ out.write(commentWrapper.fill(' ' + val[0] + ': ' + val[2]) + '\n')
+ out.write('\n')
+ for val in values:
+ out.write('const %s_%s = %s;\n' % (eName, val[0], val[1]))
+ out.write('\n')
+
+def outputInterface(iface):
+ dbusIfaceName = iface.getAttribute("name")
+ jsIfaceName = dbusIfaceName.replace('org.freedesktop.', '').replace('.','')
+
+ methods = methodsOrSignalsAsString(iface.getElementsByTagName('method'));
+ signals = methodsOrSignalsAsString(iface.getElementsByTagName('signal'));
+
+ properties = propertiesAsString(iface.getElementsByTagName('property'));
+
+ out.write("""
+var %s = {
+ name: '%s',
+ methods: %s,
+ signals: %s,
+ properties: %s
+};
+""" % (jsIfaceName, dbusIfaceName, methods, signals, properties));
+
+ enums = iface.getElementsByTagName('tp:enum')
+ outputEnums(enums, dbusIfaceName);
+
+ flags = iface.getElementsByTagName('tp:flags')
+ outputFlags(flags, dbusIfaceName);
+
+def outputNode(node):
+ for child in node.childNodes:
+ if child.nodeType != child.ELEMENT_NODE:
+ continue
+ if child.tagName == 'interface':
+ outputInterface(child)
+ else:
+ raise Exception("unknown tag in <node>: " + child.tagName)
+
+out.write("// AUTOMATICALLY GENERATED INTERFACE FILE\n")
+out.write("// Do not edit by hand.\n\n")
+
+for filename in sys.argv[1:]:
+ if filename.endswith('nm-manager-client.xml'):
+ ## nm-manager-client.xml is nm-manager.xml
+ ## with some deprecated stuff removed, to
+ ## generate dbus-glib client bindings. The
+ ## detailed docs and stuff are in nm-manager.xml though.
+ continue
+
+ dom = xml.dom.minidom.parse(filename)
+
+ for child in dom.childNodes:
+ if child.nodeType != child.ELEMENT_NODE:
+ continue
+ if child.tagName == 'node':
+ outputNode(child)
+ elif child.tagName == 'tp:generic-types':
+ enums = child.getElementsByTagName('tp:enum')
+ outputEnums(enums, 'generic-types');
+ flags = child.getElementsByTagName('tp:flags')
+ outputFlags(flags, 'generic-types');
+ elif child.tagName in ['tp:spec', 'tp:title',
+ 'tp:version', 'tp:copyright',
+ 'tp:license', 'xi:include',
+ 'tp:errors' ]:
+ continue
+ else:
+ raise Exception("unknown tag at root: " + child.tagName)
diff --git a/modules/dbus/lang.js b/modules/dbus/lang.js
new file mode 100644
index 0000000..7e8ceab
--- /dev/null
+++ b/modules/dbus/lang.js
@@ -0,0 +1,99 @@
+// Copyright (c) 2008 litl, LLC
+//
+// 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
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+
+// Utilities that are "meta-language" things like manipulating object props
+
+function countProperties(obj) {
+ var count = 0;
+ for (var property in obj) {
+ count += 1;
+ }
+ return count;
+}
+
+function _copyProperty(source, dest, property) {
+ dest[property] = source[property];
+}
+
+function copyProperties(source, dest) {
+ for (var property in source) {
+ _copyProperty(source, dest, property);
+ }
+}
+
+function copyPublicProperties(source, dest) {
+ for (var property in source) {
+ if (typeof(property) == 'string' &&
+ property.substring(0, 1) == '_') {
+ continue;
+ } else {
+ _copyProperty(source, dest, property);
+ }
+ }
+}
+
+function copyPropertiesNoOverwrite(source, dest) {
+ for (var property in source) {
+ if (!(property in dest)) {
+ _copyProperty(source, dest, property);
+ }
+ }
+}
+
+function removeNullProperties(obj) {
+ for (var property in obj) {
+ if (obj[property] == null)
+ delete obj[property];
+ else if (typeof(obj[property]) == 'object')
+ removeNullProperties(obj[property]);
+ }
+}
+
+/**
+ * Binds obj to callback. Makes it possible to refer to "obj"
+ * using this within the callback.
+ * @param {object} obj the object to bind
+ * @param {function} callback callback to bind obj in
+ * @param arguments additional arguments to the callback
+ * @returns: a new callback
+ * @type: function
+ */
+function bind(obj, callback) {
+ var me = obj;
+ var bindArguments = Array.prototype.slice.call(arguments, 2);
+
+ if (typeof(obj) != 'object') {
+ throw new Error(
+ "first argument to Lang.bind() must be an object, not " +
+ typeof(obj));
+ }
+
+ if (typeof(callback) != 'function') {
+ throw new Error(
+ "second argument to Lang.bind() must be a function, not " +
+ typeof(callback));
+ }
+
+ return function() {
+ var args = Array.prototype.slice.call(arguments);
+ args = args.concat(bindArguments);
+ return callback.apply(me, args);
+ };
+}
diff --git a/modules/dbus/module.c b/modules/dbus/module.c
new file mode 100644
index 0000000..b43e111
--- /dev/null
+++ b/modules/dbus/module.c
@@ -0,0 +1,1468 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <seed-debug.h>
+
+#include "util/dbus.h"
+#include "dbus-values.h"
+#include "dbus-exports.h"
+
+#define DBUS_CONNECTION_FROM_TYPE(type) ((type) == DBUS_BUS_SESSION ? session_bus : system_bus)
+
+SeedContext ctx;
+SeedContextGroup group;
+
+SeedObject namespace_ref;
+SeedClass dbus_namespace_class;
+SeedClass dbus_bus_class;
+
+static gboolean session_bus_weakref_added = FALSE;
+static DBusConnection *session_bus = NULL;
+static gboolean system_bus_weakref_added = FALSE;
+static DBusConnection *system_bus = NULL;
+
+SeedObject bus_proto;
+
+static DBusBusType
+get_bus_type_from_object (SeedContext ctx,
+ SeedObject object, SeedException * exception)
+{
+ SeedValue jsbus_type =
+ seed_object_get_property (ctx, object, "_dbusBusType");
+
+ return seed_value_to_int (ctx, jsbus_type, exception);
+}
+
+static gboolean
+bus_check (SeedContext ctx, DBusBusType bus_type, SeedException * exception)
+{
+ gboolean bus_weakref_added;
+ DBusConnection **bus_connection;
+
+ bus_weakref_added =
+ bus_type ==
+ DBUS_BUS_SESSION ? session_bus_weakref_added : system_bus_weakref_added;
+
+ bus_connection = bus_type == DBUS_BUS_SESSION ? &session_bus : &system_bus;
+
+ /* This is all done lazily only if a dbus-related method is actually invoked */
+
+ if (!bus_weakref_added)
+ {
+ big_dbus_add_bus_weakref (bus_type, bus_connection);
+ }
+
+ if (*bus_connection == NULL)
+ big_dbus_try_connecting_now (bus_type); /* force a synchronous connection attempt */
+
+ /* Throw exception if connection attempt failed */
+ if (*bus_connection == NULL)
+ {
+ const char *bus_type_name =
+ bus_type == DBUS_BUS_SESSION ? "session" : "system";
+ seed_make_exception (ctx, exception, "BusError",
+ "Not connected to %s message bus", bus_type_name);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static DBusMessage *
+prepare_call (SeedContext ctx,
+ SeedObject obj,
+ SeedObject arg_array,
+ guint argc,
+ const SeedValue * argv,
+ DBusBusType bus_type,
+ SeedException * exception)
+{
+ DBusMessage *message;
+ const char *bus_name;
+ const char *path;
+ const char *interface;
+ const char *method;
+ gboolean auto_start;
+ const char *out_signature;
+ const char *in_signature;
+ DBusMessageIter arg_iter;
+ DBusSignatureIter sig_iter;
+
+ if (!bus_check (ctx, bus_type, exception))
+ return NULL;
+
+ bus_name = seed_value_to_string (ctx, argv[0], exception);
+ if (bus_name == NULL)
+ return NULL;
+
+ path = seed_value_to_string (ctx, argv[1], exception);
+ if (path == NULL)
+ return NULL;
+
+ if (seed_value_is_null (ctx, argv[2]))
+ {
+ interface = NULL;
+ }
+ else
+ {
+ interface = seed_value_to_string (ctx, argv[2], exception);
+ if (interface == NULL)
+ return NULL; /* exception was set */
+ }
+
+ method = seed_value_to_string (ctx, argv[3], exception);
+ if (method == NULL)
+ return NULL;
+
+ out_signature = seed_value_to_string (ctx, argv[4], exception);
+ if (out_signature == NULL)
+ return NULL;
+
+ in_signature = seed_value_to_string (ctx, argv[5], exception);
+ if (in_signature == NULL)
+ return NULL;
+
+ g_assert (bus_name && path && method && in_signature && out_signature);
+
+ auto_start = seed_value_to_boolean (ctx, argv[6], exception);
+
+ /* FIXME should validate the bus_name, path, interface, method really, but
+ * we should just not write buggy JS ;-)
+ */
+ message = dbus_message_new_method_call (bus_name, path, interface, method);
+ if (message == NULL)
+ {
+ seed_make_exception (ctx, exception, "DBusError",
+ "Could not create new method call. (OOM?)");
+ return NULL;
+ }
+
+ dbus_message_set_auto_start (message, auto_start);
+
+ dbus_message_iter_init_append (message, &arg_iter);
+
+ if (in_signature)
+ dbus_signature_iter_init (&sig_iter, in_signature);
+ else
+ dbus_signature_iter_init (&sig_iter, "a{sv}");
+
+ if (!seed_js_values_to_dbus
+ (ctx, 0, arg_array, &arg_iter, &sig_iter, exception))
+ {
+ SEED_NOTE(MODULE, "Failed to marshal call from JS to dbus");
+ dbus_message_unref (message);
+ return NULL;
+ }
+
+ return message;
+}
+
+static gboolean
+complete_call (SeedContext ctx,
+ SeedValue * retval,
+ DBusMessage * reply,
+ DBusError * derror, SeedException * exception)
+{
+ DBusMessageIter arg_iter;
+ GArray *ret_values;
+ int array_length;
+
+ if (dbus_error_is_set (derror))
+ {
+ SEED_NOTE(MODULE,
+ "Error sending call: %s: %s",
+ derror->name, derror->message);
+ seed_make_exception (ctx, exception, "DBusError",
+ "DBus error: %s: %s",
+ derror->name, derror->message);
+ dbus_error_free (derror);
+ return FALSE;
+ }
+
+ if (reply == NULL)
+ {
+ SEED_NOTE(MODULE,
+ "No reply received to call");
+ return FALSE;
+ }
+
+ if (dbus_message_get_type (reply) == DBUS_MESSAGE_TYPE_ERROR)
+ {
+ dbus_set_error_from_message (derror, reply);
+ seed_make_exception (ctx, exception, "DBusError",
+ "DBus error: %s: %s",
+ derror->name, derror->message);
+ SEED_NOTE(MODULE, "DBus error: %s: %s",
+ derror->name, derror->message);
+ dbus_error_free (derror);
+
+ return FALSE;
+ }
+
+ dbus_message_iter_init (reply, &arg_iter);
+
+ if (!seed_js_values_from_dbus (ctx, &arg_iter, &ret_values, exception))
+ {
+ SEED_NOTE(MODULE, "Failed to marshal dbus call reply back to JS");
+ return FALSE;
+ }
+
+ g_assert (ret_values != NULL);
+ // TODO: I AM HERE
+
+ array_length = ret_values->len;
+ if (array_length == 1)
+ {
+ /* If the array only has one element return that element alone */
+ *retval = g_array_index (ret_values, SeedValue, 0);
+ }
+ else
+ {
+ /* Otherwise return an array with all the return values. The
+ * funny assignment is to avoid creating a temporary JSObject
+ * we'd need to root
+ */
+ *retval =
+ seed_make_array (ctx, ret_values->data, array_length, exception);
+ }
+
+ g_array_free (ret_values, TRUE);
+
+ seed_js_add_dbus_props (ctx, reply, *retval, exception);
+
+ return TRUE;
+}
+
+static void
+pending_notify (DBusPendingCall * pending, void *user_data)
+{
+ SeedException exception = NULL;
+ GClosure *closure;
+ SeedValue argv[2];
+ DBusMessage *reply;
+ DBusError derror;
+
+ closure = user_data;
+
+ SEED_NOTE(MODULE,
+ "Notified of reply to async call closure %p",
+ closure);
+
+ if (closure == NULL) {
+ SEED_NOTE(MODULE,
+ "Closure destroyed before we could complete pending call");
+ return;
+ }
+
+ /* reply may be NULL if none received? I think it may never be if
+ * we've already been notified, but be safe here.
+ */
+
+
+ reply = dbus_pending_call_steal_reply (pending);
+
+ dbus_error_init (&derror);
+ /* argv[0] will be the return value if any, argv[1] we fill with exception if any */
+ argv[0] = seed_make_null (ctx);
+ argv[1] = seed_make_null (ctx);
+ if (!complete_call (ctx, &argv[0], reply, &derror, &exception))
+ goto noreply;
+ g_assert (!dbus_error_is_set (&derror)); /* not supposed to be left set by complete_call() */
+
+ if (reply)
+ dbus_message_unref (reply);
+
+ if (exception)
+ argv[1] = exception;
+ seed_closure_invoke(closure, &argv[0], 2, &exception);
+ if (exception && seed_value_is_object (ctx, exception))
+ seed_closure_warn_exception(closure, ctx, exception);
+ seed_context_unref (ctx);
+ // TODO: Do something with exception
+
+ return;
+
+noreply:
+ SEED_NOTE(MODULE,
+ "No reply recieved from complete_call");
+ if (reply)
+ dbus_message_unref (reply);
+ seed_context_unref (ctx);
+}
+
+static void
+pending_free_closure (void *data)
+{
+ GClosure *closure;
+
+ closure = data;
+
+ g_closure_invalidate (data);
+ g_closure_unref (data);
+}
+
+
+static SeedValue
+seed_js_dbus_call_async (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GClosure *closure;
+ DBusMessage *message;
+ DBusPendingCall *pending;
+ DBusConnection *bus_connection;
+ DBusBusType bus_type;
+ int timeout;
+
+ if (argument_count < 10)
+ {
+ seed_make_exception (ctx, exception, "ArgmuentError",
+ "Not enough args, need bus name, object path, interface, method, out signature, in signature, autostart flag, timeout limit, args, and callback");
+ return seed_make_null (ctx);
+ }
+
+ if (!seed_value_is_object (ctx, arguments[9])
+ || !seed_value_is_function (ctx, arguments[9]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "arg 10 must be a callback to invoke when call completes");
+ return FALSE;
+ }
+
+ timeout = seed_value_to_int (ctx, arguments[7], exception);
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ message =
+ prepare_call (ctx, this_object, arguments[8], argument_count, arguments, bus_type,
+ exception);
+
+ if (message == NULL)
+ return seed_make_null (ctx);
+
+ bus_connection = DBUS_CONNECTION_FROM_TYPE (bus_type);
+
+ pending = NULL;
+ if (!dbus_connection_send_with_reply
+ (bus_connection, message, &pending, timeout) || pending == NULL)
+ {
+ SEED_NOTE(MODULE, "Failed to send async dbus message");
+ seed_make_exception (ctx, exception, "DBusError",
+ "Failed to send dbus message");
+ dbus_message_unref (message);
+ return seed_make_null (ctx);
+ }
+
+ g_assert (pending != NULL);
+
+ dbus_message_unref (message);
+
+ /* We cheat a bit here and use a closure to store a JavaScript function
+ * and deal with the GC root and other issues, even though we
+ * won't ever marshal via GValue
+ */
+ closure = seed_closure_new (ctx, arguments[9], NULL, "async DBus reply");
+ if (closure == NULL)
+ {
+ dbus_pending_call_unref (pending);
+ return seed_make_null (ctx);
+ }
+
+ g_closure_ref (closure);
+ g_closure_sink (closure);
+ dbus_pending_call_set_notify (pending, pending_notify, closure,
+ pending_free_closure);
+
+ dbus_pending_call_unref (pending); /* DBusConnection should still hold a ref until it's completed */
+
+ return seed_value_from_boolean (ctx, TRUE, exception);
+}
+
+
+
+static SeedValue
+seed_js_dbus_get_machine_id (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException * exception)
+{
+ SeedValue ret;
+ gchar *id;
+
+ id = dbus_get_local_machine_id ();
+ ret = seed_value_from_string (ctx, id, exception);
+ dbus_free (id);
+
+ return ret;
+}
+
+static void
+fill_with_null_or_string (SeedContext ctx, const char **string_p,
+ SeedValue value, SeedException * exception)
+{
+ if (seed_value_is_null (ctx, value))
+ *string_p = NULL;
+ else
+ *string_p = seed_value_to_string (ctx, value, exception);
+}
+
+typedef struct
+{
+ int refcount;
+ DBusBusType bus_type;
+ int connection_id;
+ GClosure *closure;
+} SignalHandler;
+/* allow removal by passing in the callable
+ * FIXME don't think we ever end up using this,
+ * could get rid of it, it predates having an ID
+ * to remove by
+ */
+static GHashTable *signal_handlers_by_callable = NULL;
+
+static void signal_on_closure_invalidated (void *data, GClosure * closure);
+static void signal_handler_ref (SignalHandler * handler);
+static void signal_handler_unref (SignalHandler * handler);
+
+static SignalHandler *
+signal_handler_new (SeedContext ctx,
+ SeedValue callable, SeedException * exception)
+{
+ SignalHandler *handler;
+
+ if (signal_handlers_by_callable &&
+ g_hash_table_lookup (signal_handlers_by_callable, callable) != NULL)
+ {
+ /* To fix this, get rid of signal_handlers_by_callable
+ * and just require removal by id. Not sure we ever use
+ * removal by callable anyway.
+ */
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "For now, same callback cannot be the handler for two dbus signal connections");
+ return NULL;
+ }
+
+ handler = g_slice_new0 (SignalHandler);
+ handler->refcount = 1;
+
+ /* We cheat a bit here and use a closure to store a JavaScript function
+ * and deal with the GC root and other issues, even though we
+ * won't ever marshal via GValue
+ */
+ handler->closure = seed_closure_new (ctx, callable, NULL, "DBus signal handler");
+ if (handler->closure == NULL)
+ {
+ g_free (handler);
+ return NULL;
+ }
+
+ g_closure_ref (handler->closure);
+ g_closure_sink (handler->closure);
+
+ g_closure_add_invalidate_notifier (handler->closure, handler,
+ signal_on_closure_invalidated);
+
+ if (!signal_handlers_by_callable)
+ {
+ signal_handlers_by_callable =
+ g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL);
+ }
+
+ /* We keep a weak reference on the closure in a table indexed
+ * by the object, so we can retrieve it when removing the signal
+ * watch. The signal_handlers_by_callable owns one ref to the SignalHandler.
+ */
+ signal_handler_ref (handler);
+ g_hash_table_replace (signal_handlers_by_callable, callable, handler);
+
+ return handler;
+}
+
+static void
+signal_handler_ref (SignalHandler * handler)
+{
+ g_assert (handler->refcount > 0);
+ handler->refcount += 1;
+}
+
+static void
+signal_handler_dispose (SignalHandler * handler)
+{
+ g_assert (handler->refcount > 0);
+
+ signal_handler_ref (handler);
+
+ if (handler->closure)
+ {
+ /* invalidating closure could dispose
+ * re-entrantly, so set handler->closure
+ * NULL before we invalidate
+ */
+ GClosure *closure = handler->closure;
+ handler->closure = NULL;
+
+ g_hash_table_remove (signal_handlers_by_callable,
+ seed_closure_get_callable (closure));
+ if (g_hash_table_size (signal_handlers_by_callable) == 0)
+ {
+ g_hash_table_destroy (signal_handlers_by_callable);
+ signal_handlers_by_callable = NULL;
+ }
+ /* the hash table owned 1 ref */
+ signal_handler_unref (handler);
+
+ g_closure_invalidate (closure);
+ g_closure_unref (closure);
+ }
+
+ /* remove signal if it hasn't been */
+ if (handler->connection_id != 0)
+ {
+ int id = handler->connection_id;
+ handler->connection_id = 0;
+
+ /* this should clear another ref off the
+ * handler by calling signal_on_watch_removed
+ */
+ big_dbus_unwatch_signal_by_id (handler->bus_type, id);
+ }
+
+ signal_handler_unref (handler);
+}
+
+static void
+signal_handler_unref (SignalHandler * handler)
+{
+ g_assert (handler->refcount > 0);
+
+ if (handler->refcount == 1)
+ {
+ signal_handler_dispose (handler);
+ }
+
+ handler->refcount -= 1;
+ if (handler->refcount == 0)
+ {
+ g_assert (handler->closure == NULL);
+ g_assert (handler->connection_id == 0);
+ g_slice_free (SignalHandler, handler);
+ }
+}
+
+static void
+signal_on_watch_removed (void *data)
+{
+ SignalHandler *handler = data;
+
+ handler->connection_id = 0; /* don't re-remove it */
+
+ /* The watch owns a ref; removing it
+ * also forces dispose, which invalidates
+ * the closure if that hasn't been done.
+ */
+ signal_handler_dispose (handler);
+ signal_handler_unref (handler);
+}
+
+static void
+signal_on_closure_invalidated (void *data, GClosure * closure)
+{
+ SignalHandler *handler;
+
+ handler = data;
+
+ /* this removes the watch if it has not been */
+ signal_handler_dispose (handler);
+}
+
+static void
+signal_handler_callback (DBusConnection * connection,
+ DBusMessage * message, void *data)
+{
+ SeedContext ctx;
+ SignalHandler *handler;
+ SeedValue ret_val;
+ DBusMessageIter arg_iter;
+ GArray *arguments;
+ SeedException exception;
+
+ SEED_NOTE(MODULE,
+ "Signal handler called");
+
+ handler = data;
+
+ if (handler->closure == NULL)
+ {
+ SEED_NOTE(MODULE, "dbus signal handler invalidated, ignoring");
+ return;
+ }
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+
+ dbus_message_iter_init (message, &arg_iter);
+ if (!seed_js_values_from_dbus (ctx, &arg_iter, &arguments, &exception))
+ {
+ SEED_NOTE(MODULE, "Failed to marshal dbus signal to JS");
+ return;
+ }
+
+ signal_handler_ref (handler); /* for safety, in case handler removes itself */
+
+ g_assert (arguments != NULL);
+
+ SEED_NOTE(MODULE,
+ "Invoking closure on signal received, %d args",
+ arguments->len);
+ ret_val = seed_closure_invoke_with_context (ctx, handler->closure,
+ (SeedValue *) arguments->data,
+ arguments->len, &exception);
+
+ g_array_free (arguments, TRUE);
+
+ signal_handler_unref (handler); /* for safety */
+}
+
+static SeedValue
+seed_js_dbus_watch_signal (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const char *bus_name;
+ const char *object_path;
+ const char *iface;
+ const char *signal;
+ SignalHandler *handler;
+ int id;
+ DBusBusType bus_type;
+
+ if (argument_count < 5)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Not enough args, need bus name, object path, interface, signal and callback");
+ return seed_make_null (ctx);
+ }
+
+ if (!seed_value_is_object (ctx, arguments[4])
+ || !seed_value_is_function (ctx, arguments[4]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "arg 5 must be a callback to invoke when call completes");
+ return seed_make_null (ctx);
+ }
+
+ fill_with_null_or_string (ctx, &bus_name, arguments[0], exception);
+ fill_with_null_or_string (ctx, &object_path, arguments[1], exception);
+ fill_with_null_or_string (ctx, &iface, arguments[2], exception);
+ fill_with_null_or_string (ctx, &signal, arguments[3], exception);
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ handler = signal_handler_new (ctx, arguments[4], exception);
+ if (handler == NULL)
+ return seed_make_null (ctx);
+
+ id = big_dbus_watch_signal (bus_type,
+ bus_name,
+ object_path,
+ iface,
+ signal,
+ signal_handler_callback,
+ handler, signal_on_watch_removed);
+ handler->bus_type = bus_type;
+ handler->connection_id = id;
+
+ /* signal_on_watch_removed() takes ownership of our
+ * ref to the SignalHandler
+ */
+
+ return seed_value_from_int (ctx, id, exception);
+}
+
+/* Args are handler id */
+static SeedValue
+seed_js_dbus_unwatch_signal_by_id (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ int id;
+ DBusBusType bus_type;
+
+ if (argument_count < 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Not enough args, need handler id");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+ id = seed_value_to_int (ctx, arguments[0], exception);
+
+ big_dbus_unwatch_signal_by_id (bus_type, id);
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_js_dbus_unwatch_signal (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const char *bus_name;
+ const char *object_path;
+ const char *iface;
+ const char *signal;
+ SignalHandler *handler;
+ DBusBusType bus_type;
+
+ if (argument_count < 5)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Not enough args, need bus name, object path, interface, signal and callback");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ if (!seed_value_is_object (ctx, arguments[4])
+ || !seed_value_is_function (ctx, arguments[4]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "arg 5 must be a callback to invoke when call completes");
+ return seed_make_null (ctx);
+ }
+
+ fill_with_null_or_string (ctx, &bus_name, arguments[0], exception);
+ fill_with_null_or_string (ctx, &object_path, arguments[1], exception);
+ fill_with_null_or_string (ctx, &iface, arguments[2], exception);
+ fill_with_null_or_string (ctx, &signal, arguments[3], exception);
+
+ /* we don't complain if the signal seems to have been already removed
+ * or to never have been watched, to match g_signal_handler_disconnect
+ */
+ if (!signal_handlers_by_callable)
+ return seed_make_undefined (ctx);
+
+ handler = g_hash_table_lookup (signal_handlers_by_callable, arguments[4]);
+
+ if (!handler)
+ return seed_make_undefined (ctx);
+
+ /* This should dispose the handler which should in turn
+ * remove it from the handler table
+ */
+ big_dbus_unwatch_signal (bus_type,
+ bus_name,
+ object_path,
+ iface, signal, signal_handler_callback, handler);
+
+ g_assert (g_hash_table_lookup (signal_handlers_by_callable,
+ arguments[4]) == NULL);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_js_dbus_emit_signal(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ DBusConnection *bus_connection;
+ DBusMessage *message;
+ DBusMessageIter arg_iter;
+ DBusSignatureIter sig_iter;
+ const char *object_path;
+ const char *iface;
+ const char *signal;
+ const char *in_signature;
+ DBusBusType bus_type;
+
+ if (argument_count < 4)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError", "Not enough args, need object path, interface and signal and the arguments");
+ return seed_make_null (ctx);
+ }
+
+ if (!seed_value_is_object (ctx, arguments[4]))
+ {
+ seed_make_exception(ctx, exception, "ArgumentError", "5th argument should be an array of arguments");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ object_path = seed_value_to_string(ctx, arguments[0], exception);
+ iface = seed_value_to_string(ctx, arguments[1], exception);
+ signal = seed_value_to_string(ctx, arguments[2], exception);
+ in_signature = seed_value_to_string(ctx, arguments[3], exception);
+
+ if (!bus_check(ctx, bus_type, exception))
+ return seed_make_null (ctx);
+
+ SEED_NOTE(MODULE,
+ "Emitting signal %s %s %s",
+ object_path,
+ iface,
+ signal);
+
+ bus_connection = DBUS_CONNECTION_FROM_TYPE(bus_type);
+
+ message = dbus_message_new_signal(object_path,
+ iface,
+ signal);
+
+ dbus_message_iter_init_append(message, &arg_iter);
+
+ dbus_signature_iter_init(&sig_iter, in_signature);
+
+ if (!seed_js_values_to_dbus(ctx, 0, arguments[4], &arg_iter, &sig_iter, exception))
+ {
+ dbus_message_unref(message);
+ return seed_make_null (ctx);
+ }
+
+ dbus_connection_send(bus_connection, message, NULL);
+
+ dbus_message_unref(message);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_js_dbus_call(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ DBusMessage *message;
+ DBusError derror;
+ DBusMessage *reply;
+ DBusConnection *bus_connection;
+ DBusBusType bus_type;
+ SeedValue retval;
+
+ if (argument_count < 8)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "Not enough args, need bus name, object path, interface, method, out signature, in signature, autostart flag, and args");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ message = prepare_call(ctx, this_object, arguments[7], argument_count, arguments, bus_type, exception);
+
+ bus_connection = DBUS_CONNECTION_FROM_TYPE(bus_type);
+
+ /* send_with_reply_and_block() returns NULL if error was set. */
+ dbus_error_init(&derror);
+ reply = dbus_connection_send_with_reply_and_block(bus_connection, message, -1, &derror);
+
+ dbus_message_unref(message);
+
+ complete_call(ctx, &retval, reply, &derror, exception);
+
+ if (reply)
+ dbus_message_unref(reply);
+
+ return retval;
+}
+
+typedef struct {
+ BigDBusNameOwnerFuncs funcs;
+ GClosure *acquired_closure;
+ GClosure *lost_closure;
+ DBusBusType bus_type;
+} BigJSDBusNameOwner;
+
+static void
+on_name_acquired(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ int argc;
+ SeedValue argv[1];
+ SeedContext ctx;
+ BigJSDBusNameOwner *owner;
+ SeedException exception; // TODO: Do something with this...
+
+ owner = data;
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+ if (ctx == NULL)
+ {
+ SEED_NOTE(MODULE,
+ "Closure destroyed before we could notify name acquired");
+ return;
+ }
+
+ argc = 1;
+
+ argv[0] = seed_value_from_string (ctx, name, &exception);
+
+ seed_closure_invoke_with_context(ctx, owner->acquired_closure,
+ argv, argc, &exception);
+
+ seed_context_unref (ctx);
+}
+
+
+static void
+on_name_lost(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ int argc;
+ SeedValue argv[1];
+ SeedContext ctx;
+ BigJSDBusNameOwner *owner;
+ SeedException exception; // TODO: Do something with this...
+
+ owner = data;
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+ if (ctx == NULL)
+ {
+ SEED_NOTE(MODULE,
+ "Closure destroyed before we could notify name acquired");
+ return;
+ }
+
+ argc = 1;
+
+ argv[0] = seed_value_from_string (ctx, name, &exception);
+
+ seed_closure_invoke_with_context(ctx, owner->lost_closure,
+ argv, argc, &exception);
+
+ seed_context_unref (ctx);
+}
+
+static void
+owner_closure_invalidated(gpointer data,
+ GClosure *closure)
+{
+ BigJSDBusNameOwner *owner;
+
+ owner = (BigJSDBusNameOwner*)data;
+
+ if (owner) {
+ big_dbus_release_name(owner->bus_type,
+ &owner->funcs,
+ owner);
+
+ g_closure_unref(owner->acquired_closure);
+ g_closure_unref(owner->lost_closure);
+
+ g_slice_free(BigJSDBusNameOwner, owner);
+ }
+
+}
+
+static SeedValue
+seed_js_dbus_acquire_name(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const char *bus_name;
+ SeedObject acquire_func;
+ SeedObject lost_func;
+ BigJSDBusNameOwner *owner;
+ DBusBusType bus_type;
+ BigDBusNameType name_type;
+ unsigned int id;
+
+ if (argument_count < 4)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Not enough args, need bus name, name type, acquired_func, lost_func");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ bus_name = seed_value_to_string (ctx, arguments[0], exception);
+
+ name_type = (BigDBusNameType)seed_value_to_int (ctx, arguments[1], exception);
+
+ if (!seed_value_is_object (ctx, arguments[2]) ||
+ !seed_value_is_function (ctx, arguments[2]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Third arg is a callback to invoke on acquiring the name");
+ return seed_make_null (ctx);
+ }
+
+ acquire_func = arguments[2];
+
+ if (!seed_value_is_object (ctx, arguments[3]) ||
+ !seed_value_is_function (ctx, arguments[3]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Fourth arg is a callback to invoke on acquiring the name");
+ return seed_make_null (ctx);
+ }
+
+ lost_func = arguments[3];
+
+ owner = g_slice_new0(BigJSDBusNameOwner);
+
+ owner->funcs.name = g_strdup(bus_name);
+ owner->funcs.type = name_type;
+ owner->funcs.acquired = on_name_acquired;
+ owner->funcs.lost = on_name_lost;
+ owner->bus_type = bus_type;
+
+ owner->acquired_closure = seed_closure_new (ctx, acquire_func, NULL, "DBus name acquired handler");
+
+ g_closure_ref(owner->acquired_closure);
+ g_closure_sink(owner->acquired_closure);
+
+ owner->lost_closure = seed_closure_new (ctx, lost_func, NULL, "DBus name lost handler");
+
+ g_closure_ref(owner->lost_closure);
+ g_closure_sink(owner->lost_closure);
+
+ /* Only add the invalidate notifier to one of the closures, should
+ * be enough */
+ g_closure_add_invalidate_notifier(owner->acquired_closure, owner,
+ owner_closure_invalidated);
+
+ id = big_dbus_acquire_name(bus_type,
+ &owner->funcs,
+ owner);
+
+ return seed_value_from_int (ctx, id, exception);
+}
+
+static SeedValue
+seed_js_dbus_release_name_by_id (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ DBusBusType bus_type;
+ unsigned int id;
+
+ if (argument_count < 1)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError", "Not enough args, need name owner monitor id");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object(ctx, this_object, exception);
+
+ id = seed_value_to_int (ctx, arguments[0], exception);
+
+ big_dbus_release_name_by_id(bus_type,
+ id);
+ return seed_make_undefined (ctx);
+}
+
+typedef struct {
+ GClosure *appeared_closure;
+ GClosure *vanished_closure;
+ char *bus_name;
+ DBusBusType bus_type;
+} BigJSDBusNameWatcher;
+
+static void
+on_name_appeared(DBusConnection *connection,
+ const char *name,
+ const char *owner_unique_name,
+ void *data)
+{
+ int argc;
+ SeedValue argv[2];
+ SeedContext ctx;
+ BigJSDBusNameWatcher *watcher;
+ SeedException exception;
+
+ watcher = data;
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+
+ argc = 2;
+
+ argv[0] = seed_value_from_string (ctx, name, &exception);
+ argv[1] = seed_value_from_string (ctx, owner_unique_name, &exception);
+
+ seed_closure_invoke_with_context (ctx, watcher->appeared_closure,
+ argv, argc, &exception);
+ // TODO: Do something with exception.
+
+ seed_context_unref (ctx);
+
+}
+
+static void
+on_name_vanished(DBusConnection *connection,
+ const char *name,
+ const char *owner_unique_name,
+ void *data)
+{
+ int argc;
+ SeedValue argv[2];
+ SeedContext ctx;
+ BigJSDBusNameWatcher *watcher;
+ SeedException exception;
+
+ watcher = data;
+
+ ctx = seed_context_create (group, NULL);
+ seed_prepare_global_context (ctx);
+
+ argc = 2;
+
+ argv[0] = seed_value_from_string (ctx, name, &exception);
+ argv[1] = seed_value_from_string (ctx, owner_unique_name, &exception);
+
+ seed_closure_invoke_with_context (ctx, watcher->vanished_closure,
+ argv, argc, &exception);
+ // TODO: Do something with exception.
+
+ seed_context_unref (ctx);
+
+}
+
+static const BigDBusWatchNameFuncs watch_name_funcs = {
+ on_name_appeared,
+ on_name_vanished
+};
+
+static void
+watch_closure_invalidated(gpointer data,
+ GClosure *closure)
+{
+ BigJSDBusNameWatcher *watcher;
+
+ watcher = (BigJSDBusNameWatcher*)data;
+
+ if (watcher) {
+ big_dbus_unwatch_name(watcher->bus_type,
+ watcher->bus_name,
+ &watch_name_funcs,
+ watcher);
+
+ g_free(watcher->bus_name);
+ g_closure_unref(watcher->appeared_closure);
+ g_closure_unref(watcher->vanished_closure);
+
+ g_slice_free(BigJSDBusNameWatcher, watcher);
+ }
+
+}
+
+static SeedValue
+seed_js_dbus_watch_name(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const char *bus_name;
+ gboolean start_if_not_found;
+ SeedObject appeared_func;
+ SeedObject vanished_func;
+ BigJSDBusNameWatcher *watcher;
+ DBusBusType bus_type;
+
+ if (argument_count < 4)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError", "Not enough args, need bus name, acquired_func, lost_func");
+ return seed_make_null (ctx);
+ }
+
+ bus_type = get_bus_type_from_object(ctx, this_object, exception);
+
+ bus_name = seed_value_to_string (ctx, arguments[0], exception);
+
+ start_if_not_found = seed_value_to_boolean (ctx, arguments[1], exception);
+
+ if (!seed_value_is_object (ctx, arguments[2]) || !seed_value_is_function (ctx, arguments[2]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Third arg is a callback to invoke on seeing the name");
+ return seed_make_null (ctx);
+ }
+
+ appeared_func = arguments[2];
+
+ if (!seed_value_is_object (ctx, arguments[3]) || !seed_value_is_function (ctx, arguments[3]))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "Fourth arg is a callback to invoke on seeing the name");
+ return seed_make_null (ctx);
+ }
+
+ vanished_func = arguments[3];
+
+ watcher = g_slice_new0(BigJSDBusNameWatcher);
+
+ watcher->appeared_closure = seed_closure_new (ctx, appeared_func, NULL, "DBus name appeared handler");
+
+ g_closure_ref(watcher->appeared_closure);
+ g_closure_sink(watcher->appeared_closure);
+
+ watcher->vanished_closure = seed_closure_new (ctx, vanished_func, NULL, "DBus name vanished handler");
+
+ g_closure_ref(watcher->vanished_closure);
+ g_closure_sink(watcher->vanished_closure);
+
+ watcher->bus_type = bus_type;
+ watcher->bus_name = g_strdup(bus_name);
+
+ /* Only add the invalidate notifier to one of the closures, should
+ * be enough */
+ g_closure_add_invalidate_notifier(watcher->appeared_closure, watcher,
+ watch_closure_invalidated);
+
+ big_dbus_watch_name(bus_type,
+ bus_name,
+ start_if_not_found ?
+ BIG_DBUS_NAME_START_IF_NOT_FOUND : 0,
+ &watch_name_funcs,
+ watcher);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+unique_name_getter (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ DBusConnection *bus_connection;
+ DBusBusType bus_type;
+
+ bus_type = get_bus_type_from_object (ctx, object, exception);
+
+ bus_check (ctx, bus_type, exception);
+
+ bus_connection = DBUS_CONNECTION_FROM_TYPE (bus_type);
+
+ if (bus_connection == NULL)
+ {
+ return seed_make_null (ctx);
+ }
+ else
+ {
+ const gchar *unique_name;
+
+ unique_name = dbus_bus_get_unique_name (bus_connection);
+ return seed_value_from_string (ctx, unique_name, exception);
+ }
+}
+
+static SeedValue
+seed_js_dbus_start_service(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const char *name;
+ DBusBusType bus_type;
+ DBusConnection *bus_connection;
+
+ if (argument_count != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Wrong number of arguments, expected service name");
+ return seed_make_null (ctx);
+ }
+
+ name = seed_value_to_string (ctx, arguments[0], exception);
+
+ bus_type = get_bus_type_from_object (ctx, this_object, exception);
+
+ if (!bus_check(ctx, bus_type, exception))
+ return seed_make_null (ctx);
+
+ bus_connection = DBUS_CONNECTION_FROM_TYPE(bus_type);
+
+ big_dbus_start_service(bus_connection, name);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_js_dbus_signature_length (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ const gchar *signature;
+ DBusSignatureIter iter;
+ gint length = 0;
+
+ if (argument_count < 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "dbus.signatureLength expected 1 argument, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ signature = seed_value_to_string (ctx, arguments[0], exception);
+
+ if (!dbus_signature_validate (signature, NULL))
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "Invalid signature");
+ return seed_make_null (ctx);
+ }
+
+ if (*signature == '\0')
+ return seed_value_from_int (ctx, 0, exception);
+
+ dbus_signature_iter_init (&iter, signature);
+ do
+ {
+ length++;
+ }
+ while (dbus_signature_iter_next (&iter));
+
+ return seed_value_from_int (ctx, length, exception);
+}
+
+seed_static_value bus_values[] = {
+ {"unique_name", unique_name_getter, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function bus_funcs[] = {
+ {"call", seed_js_dbus_call, 0},
+ {"call_async", seed_js_dbus_call_async, 0},
+ {"acquire_name", seed_js_dbus_acquire_name, 0},
+ {"release_name_by_id", seed_js_dbus_release_name_by_id, 0},
+ {"watch_name", seed_js_dbus_watch_name, 0},
+ {"watch_signal", seed_js_dbus_watch_signal, 0},
+ {"unwatch_signal_by_id", seed_js_dbus_unwatch_signal_by_id, 0},
+ {"unwatch_signal", seed_js_dbus_unwatch_signal, 0},
+ {"emit_signal", seed_js_dbus_emit_signal, 0},
+ {"start_service", seed_js_dbus_start_service, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_function dbus_funcs[] = {
+ {"signatureLength", seed_js_dbus_signature_length, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_value dbus_values[] = {
+ {"localMachineID", seed_js_dbus_get_machine_id, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+static void
+define_bus_object (SeedContext ctx,
+ DBusBusType which_bus)
+{
+ SeedObject bus_obj;
+ const gchar *bus_name;
+
+ bus_name = BIG_DBUS_NAME_FROM_TYPE(which_bus);
+ bus_obj = seed_make_object (ctx, dbus_bus_class, NULL);
+ seed_object_set_property (ctx, bus_obj, "_dbusBusType",
+ seed_value_from_int (ctx, which_bus, NULL));
+ //TODO: Define exports
+ seed_js_define_dbus_exports (ctx, bus_obj, which_bus);
+
+ seed_object_set_property (ctx, namespace_ref, bus_name, bus_obj);
+}
+
+ /*static void
+seed_define_bus_proto (SeedContext ctx)
+{
+ bus_proto = seed_make_object (ctx, NULL, NULL);
+
+ seed_value_protect (ctx, bus_proto);
+ }*/
+
+SeedObject
+seed_module_init (SeedEngine * eng)
+{
+ seed_class_definition dbus_namespace_class_def = seed_empty_class;
+ seed_class_definition dbus_bus_class_def = seed_empty_class;
+
+ ctx = eng->context;
+ group = eng->group;
+
+ dbus_namespace_class_def.class_name = "dbusnative";
+ dbus_namespace_class_def.static_functions = dbus_funcs;
+ dbus_namespace_class_def.static_values = dbus_values;
+
+ dbus_bus_class_def.class_name = "dbusbus";
+ dbus_bus_class_def.static_functions = bus_funcs;
+ dbus_bus_class_def.static_values = bus_values;
+
+ dbus_namespace_class = seed_create_class (&dbus_namespace_class_def);
+ dbus_bus_class = seed_create_class (&dbus_bus_class_def);
+
+ namespace_ref = seed_make_object (eng->context, dbus_namespace_class, NULL);
+
+ seed_object_set_property (ctx, namespace_ref, "BUS_SESSION",
+ seed_value_from_int (ctx, DBUS_BUS_SESSION,
+ NULL));
+ seed_object_set_property (ctx, namespace_ref, "BUS_SYSTEM",
+ seed_value_from_int (ctx, DBUS_BUS_SYSTEM, NULL));
+ seed_object_set_property (ctx, namespace_ref, "BUS_STARTER",
+ seed_value_from_int (ctx, DBUS_BUS_STARTER,
+ NULL));
+
+ seed_create_function (ctx, "signatureLength",
+ (SeedFunctionCallback) seed_js_dbus_signature_length,
+ namespace_ref);
+
+ define_bus_object (ctx, DBUS_BUS_SESSION);
+ define_bus_object (ctx, DBUS_BUS_SYSTEM);
+
+ return namespace_ref;
+}
diff --git a/modules/dbus/util/Makefile.am b/modules/dbus/util/Makefile.am
new file mode 100644
index 0000000..2b8beed
--- /dev/null
+++ b/modules/dbus/util/Makefile.am
@@ -0,0 +1,5 @@
+EXTRA_DIST = \
+ dbus.h \
+ dbus-private.h \
+ dbus-proxy.h \
+ log.h
diff --git a/modules/dbus/util/Makefile.in b/modules/dbus/util/Makefile.in
new file mode 100644
index 0000000..03b770a
--- /dev/null
+++ b/modules/dbus/util/Makefile.in
@@ -0,0 +1,453 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/dbus/util
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ dbus.h \
+ dbus-private.h \
+ dbus-proxy.h \
+ log.h
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/dbus/util/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/dbus/util/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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:
+
+.MAKE: install-am install-strip
+
+.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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am 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
+
+
+# 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/modules/dbus/util/dbus-private.h b/modules/dbus/util/dbus-private.h
new file mode 100644
index 0000000..9a31321
--- /dev/null
+++ b/modules/dbus/util/dbus-private.h
@@ -0,0 +1,55 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#ifndef __BIG_UTIL_DBUS_PRIVATE_H__
+#define __BIG_UTIL_DBUS_PRIVATE_H__
+
+#include <glib.h>
+#include <util/dbus.h>
+#include <util/dbus-proxy.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+ DBusBusType bus_type;
+ void *where_connection_was;
+ BigDBusProxy *driver_proxy;
+ GHashTable *json_ifaces;
+ GSList *name_ownership_monitors;
+ GHashTable *name_watches;
+
+ GSList *all_signal_watchers;
+
+ /* These signal watcher tables are maps from a
+ * string to a GSList of BigSignalWatcher,
+ * and they are lazily created if a signal watcher
+ * needs to be looked up by the given key.
+ */
+ GHashTable *signal_watchers_by_unique_sender;
+ GHashTable *signal_watchers_by_path;
+ GHashTable *signal_watchers_by_iface;
+ GHashTable *signal_watchers_by_signal;
+ /* These are matching on well-known name only,
+ * or watching all signals
+ */
+ GSList *signal_watchers_in_no_table;
+
+} BigDBusInfo;
+
+BigDBusInfo* _big_dbus_ensure_info (DBusConnection *connection);
+void _big_dbus_dispose_info (DBusConnection *connection);
+void _big_dbus_process_pending_signal_watchers (DBusConnection *connection,
+ BigDBusInfo *info);
+DBusHandlerResult _big_dbus_signal_watch_filter_message (DBusConnection *connection,
+ DBusMessage *message,
+ void *data);
+void _big_dbus_set_matching_name_owner_changed (DBusConnection *connection,
+ const char *bus_name,
+ gboolean matched);
+void _big_dbus_ensure_connect_idle (DBusBusType bus_type);
+DBusConnection* _big_dbus_get_weak_ref (DBusBusType which_bus);
+
+
+G_END_DECLS
+
+#endif /* __BIG_UTIL_DBUS_PRIVATE_H__ */
diff --git a/modules/dbus/util/dbus-proxy.c b/modules/dbus/util/dbus-proxy.c
new file mode 100644
index 0000000..a9a413c
--- /dev/null
+++ b/modules/dbus/util/dbus-proxy.c
@@ -0,0 +1,666 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#include <config.h>
+
+#include "dbus-proxy.h"
+#include "dbus.h"
+#include "log.h"
+#include <dbus/dbus-glib-lowlevel.h>
+#include <stdarg.h>
+
+typedef enum {
+ REPLY_CLOSURE_PLAIN,
+ REPLY_CLOSURE_JSON
+} ReplyClosureType;
+
+typedef struct {
+ BigDBusProxy *proxy;
+ ReplyClosureType type;
+ union {
+ BigDBusProxyReplyFunc plain;
+ BigDBusProxyJsonReplyFunc json;
+ } func;
+ BigDBusProxyErrorReplyFunc error_func;
+ void *data;
+ /* this is a debug thing; we want to guarantee
+ * we call exactly 1 time either the reply or error
+ * callback.
+ */
+ guint reply_invoked : 1;
+ guint error_invoked : 1;
+} ReplyClosure;
+
+static void big_dbus_proxy_dispose (GObject *object);
+static void big_dbus_proxy_finalize (GObject *object);
+static GObject* big_dbus_proxy_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_params);
+static void big_dbus_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void big_dbus_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+struct _BigDBusProxy {
+ GObject parent;
+
+ DBusConnection *connection;
+ char *bus_name;
+ char *object_path;
+ char *iface;
+};
+
+struct _BigDBusProxyClass {
+ GObjectClass parent;
+};
+
+G_DEFINE_TYPE(BigDBusProxy, big_dbus_proxy, G_TYPE_OBJECT);
+
+#if 0
+enum {
+ LAST_SIGNAL
+};
+
+static int signals[LAST_SIGNAL];
+#endif
+
+enum {
+ PROP_0,
+ PROP_CONNECTION,
+ PROP_BUS_NAME,
+ PROP_OBJECT_PATH,
+ PROP_INTERFACE
+};
+
+static void
+big_dbus_proxy_init(BigDBusProxy *proxy)
+{
+
+}
+
+static void
+big_dbus_proxy_class_init(BigDBusProxyClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = big_dbus_proxy_dispose;
+ object_class->finalize = big_dbus_proxy_finalize;
+
+ object_class->constructor = big_dbus_proxy_constructor;
+ object_class->get_property = big_dbus_proxy_get_property;
+ object_class->set_property = big_dbus_proxy_set_property;
+
+ g_object_class_install_property(object_class,
+ PROP_CONNECTION,
+ g_param_spec_boxed("connection",
+ "DBusConnection",
+ "Our connection to the bus",
+ DBUS_TYPE_CONNECTION,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(object_class,
+ PROP_BUS_NAME,
+ g_param_spec_string("bus-name",
+ "Bus Name",
+ "Name of app on the bus",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(object_class,
+ PROP_OBJECT_PATH,
+ g_param_spec_string("object-path",
+ "Object Path",
+ "Object's dbus path",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(object_class,
+ PROP_INTERFACE,
+ g_param_spec_string("interface",
+ "Interface",
+ "Interface to invoke methods on",
+ NULL,
+ G_PARAM_READWRITE));
+}
+
+static void
+big_dbus_proxy_dispose(GObject *object)
+{
+ BigDBusProxy *proxy;
+
+ proxy = BIG_DBUS_PROXY(object);
+
+ if (proxy->connection) {
+ dbus_connection_unref(proxy->connection);
+ proxy->connection = NULL;
+ }
+
+ if (proxy->bus_name) {
+ g_free(proxy->bus_name);
+ proxy->bus_name = NULL;
+ }
+
+ if (proxy->object_path) {
+ g_free(proxy->object_path);
+ proxy->object_path = NULL;
+ }
+
+ if (proxy->iface) {
+ g_free(proxy->iface);
+ proxy->iface = NULL;
+ }
+
+ G_OBJECT_CLASS(big_dbus_proxy_parent_class)->dispose(object);
+}
+
+static void
+big_dbus_proxy_finalize(GObject *object)
+{
+
+ G_OBJECT_CLASS(big_dbus_proxy_parent_class)->finalize(object);
+}
+
+static GObject*
+big_dbus_proxy_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_params)
+{
+ GObject *object;
+ BigDBusProxy *proxy;
+
+ object = (* G_OBJECT_CLASS (big_dbus_proxy_parent_class)->constructor) (type,
+ n_construct_properties,
+ construct_params);
+
+ proxy = BIG_DBUS_PROXY(object);
+
+ return object;
+}
+
+static void
+big_dbus_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ BigDBusProxy *proxy;
+
+ proxy = BIG_DBUS_PROXY (object);
+
+ switch (prop_id) {
+ case PROP_CONNECTION:
+ g_value_set_boxed(value, proxy->connection);
+ break;
+ case PROP_BUS_NAME:
+ g_value_set_string(value, proxy->bus_name);
+ break;
+ case PROP_OBJECT_PATH:
+ g_value_set_string(value, proxy->object_path);
+ break;
+ case PROP_INTERFACE:
+ g_value_set_string(value, proxy->iface);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+big_dbus_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ BigDBusProxy *proxy;
+
+ proxy = BIG_DBUS_PROXY (object);
+
+ switch (prop_id) {
+ case PROP_CONNECTION:
+ if (proxy->connection != NULL) {
+ g_warning("Cannot change BigDBusProxy::connection after it's set");
+ return;
+ }
+ proxy->connection = dbus_connection_ref(g_value_get_boxed(value));
+ break;
+ case PROP_BUS_NAME:
+ if (proxy->bus_name != NULL) {
+ g_warning("Cannot change BigDBusProxy::bus-name after it's set");
+ return;
+ }
+ proxy->bus_name = g_value_dup_string(value);
+ break;
+ case PROP_OBJECT_PATH:
+ if (proxy->object_path != NULL) {
+ g_warning("Cannot change BigDBusProxy::object-path after it's set");
+ return;
+ }
+ proxy->object_path = g_value_dup_string(value);
+ break;
+ case PROP_INTERFACE:
+ if (proxy->iface != NULL) {
+ g_warning("Cannot change BigDBusProxy::interface after it's set");
+ return;
+ }
+ proxy->iface = g_value_dup_string(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/* bus_name can be NULL if not going through a bus, and
+ * iface is allowed to be NULL but likely should not be.
+ */
+BigDBusProxy*
+big_dbus_proxy_new(DBusConnection *connection,
+ const char *bus_name,
+ const char *object_path,
+ const char *iface)
+{
+ BigDBusProxy *proxy;
+
+ g_return_val_if_fail(connection != NULL, NULL);
+ g_return_val_if_fail(object_path != NULL, NULL);
+
+ proxy = g_object_new(BIG_TYPE_DBUS_PROXY,
+ "connection", connection,
+ "bus-name", bus_name,
+ "object-path", object_path,
+ "interface", iface,
+ NULL);
+
+ return proxy;
+}
+
+DBusConnection*
+big_dbus_proxy_get_connection(BigDBusProxy *proxy)
+{
+ return proxy->connection;
+}
+
+const char*
+big_dbus_proxy_get_bus_name(BigDBusProxy *proxy)
+{
+ return proxy->bus_name;
+}
+
+DBusMessage*
+big_dbus_proxy_new_method_call(BigDBusProxy *proxy,
+ const char *method_name)
+{
+ DBusMessage *message;
+
+ message = dbus_message_new_method_call(proxy->bus_name,
+ proxy->object_path,
+ proxy->iface,
+ method_name);
+ if (message == NULL)
+ g_error("no memory");
+
+ /* We don't want methods to auto-start services... if a service
+ * needs starting or restarting, we want to do so explicitly so we
+ * can do it in an orderly and predictable way.
+ */
+ dbus_message_set_auto_start(message, FALSE);
+
+ return message;
+}
+
+DBusMessage*
+big_dbus_proxy_new_json_call(BigDBusProxy *proxy,
+ const char *method_name,
+ DBusMessageIter *arg_iter,
+ DBusMessageIter *dict_iter)
+{
+ DBusMessage *message;
+
+ message = big_dbus_proxy_new_method_call(proxy, method_name);
+
+ dbus_message_iter_init_append(message, arg_iter);
+ dbus_message_iter_open_container(arg_iter, DBUS_TYPE_ARRAY, "{sv}", dict_iter);
+
+ return message;
+}
+
+static ReplyClosure*
+reply_closure_new(BigDBusProxy *proxy,
+ BigDBusProxyReplyFunc plain_func,
+ BigDBusProxyJsonReplyFunc json_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data)
+{
+ ReplyClosure *c;
+
+ c = g_slice_new0(ReplyClosure);
+
+ c->proxy = g_object_ref(proxy);
+
+ g_assert(!(plain_func && json_func));
+
+ if (plain_func != NULL) {
+ c->type = REPLY_CLOSURE_PLAIN;
+ c->func.plain = plain_func;
+ } else {
+ c->type = REPLY_CLOSURE_JSON;
+ c->func.json = json_func;
+ }
+
+ c->error_func = error_func;
+ c->data = data;
+
+ return c;
+}
+
+static void
+reply_closure_free(ReplyClosure *c)
+{
+ /* call exactly one of these */
+ g_assert(!(c->error_invoked &&
+ c->reply_invoked));
+
+ if (!(c->error_invoked ||
+ c->reply_invoked)) {
+ c->error_invoked = TRUE;
+ if (c->error_func) {
+ (* c->error_func) (c->proxy, DBUS_ERROR_FAILED,
+ "Pending call was freed (due to dbus_shutdown() probably) before it was ever notified",
+ c->data);
+ }
+ }
+
+ g_object_unref(c->proxy);
+ g_slice_free(ReplyClosure, c);
+}
+
+static void
+reply_closure_invoke_error(ReplyClosure *c,
+ DBusMessage *reply)
+{
+ g_assert(dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR);
+
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ DBusError derror;
+
+ dbus_error_init(&derror);
+
+ dbus_set_error_from_message(&derror, reply);
+
+ (* c->error_func) (c->proxy, derror.name,
+ derror.message,
+ c->data);
+
+ dbus_error_free(&derror);
+ }
+}
+
+static void
+reply_closure_invoke(ReplyClosure *c,
+ DBusMessage *reply)
+{
+ if (c->type == REPLY_CLOSURE_PLAIN) {
+ if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_METHOD_RETURN) {
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->reply_invoked = TRUE;
+
+ if (c->func.plain != NULL) {
+ (* c->func.plain) (c->proxy,
+ reply,
+ c->data);
+ }
+ } else if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
+ reply_closure_invoke_error(c, reply);
+ } else {
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ (* c->error_func) (c->proxy, DBUS_ERROR_FAILED,
+ "Got weird message type back as a reply",
+ c->data);
+ }
+ }
+ } else if (c->type == REPLY_CLOSURE_JSON) {
+ if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_METHOD_RETURN) {
+ if (dbus_message_has_signature(reply, "a{sv}")) {
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->reply_invoked = TRUE;
+
+ if (c->func.json) {
+ DBusMessageIter arg_iter;
+ DBusMessageIter dict_iter;
+
+ dbus_message_iter_init(reply, &arg_iter);
+ dbus_message_iter_recurse(&arg_iter, &dict_iter);
+
+ (* c->func.json) (c->proxy,
+ reply,
+ &dict_iter,
+ c->data);
+ }
+ } else {
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ (* c->error_func) (c->proxy,
+ DBUS_ERROR_FAILED,
+ "Message we got back did not have the right signature",
+ c->data);
+ }
+ }
+ } else if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
+ reply_closure_invoke_error(c, reply);
+ } else {
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ (* c->error_func) (c->proxy, DBUS_ERROR_FAILED,
+ "Got weird message type back as a reply",
+ c->data);
+ }
+ }
+ } else {
+ g_assert_not_reached();
+ }
+}
+
+
+static gboolean
+failed_to_send_idle(void *data)
+{
+ ReplyClosure *c;
+
+ c = data;
+
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ (* c->error_func) (c->proxy,
+ DBUS_ERROR_NO_MEMORY,
+ "Unable to send method call",
+ c->data);
+ }
+
+ reply_closure_free(c);
+
+ return FALSE;
+}
+
+
+static void
+pending_call_notify(DBusPendingCall *pending,
+ void *user_data)
+{
+ DBusMessage *reply;
+ ReplyClosure *c;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "BigDBusProxy received reply to pending call");
+
+ c = user_data;
+
+ /* reply may be NULL if none received? I think it may never be if
+ * we've already been notified, but be safe here.
+ */
+ reply = dbus_pending_call_steal_reply(pending);
+
+ if (reply) {
+ reply_closure_invoke(c, reply);
+
+ dbus_message_unref(reply);
+ } else {
+ /* I think libdbus won't let this happen, but to be safe... */
+ g_assert(!c->reply_invoked);
+ g_assert(!c->error_invoked);
+
+ c->error_invoked = TRUE;
+
+ if (c->error_func) {
+ (* c->error_func) (c->proxy,
+ DBUS_ERROR_TIMED_OUT,
+ "Did not receive a reply or error",
+ c->data);
+ }
+ }
+
+ /* The closure should be freed along with the pending call */
+}
+
+static void
+pending_call_free_data(void *data)
+{
+ ReplyClosure *c = data;
+ reply_closure_free(c);
+}
+
+static void
+big_dbus_proxy_send_internal(BigDBusProxy *proxy,
+ DBusMessage *message,
+ BigDBusProxyReplyFunc plain_func,
+ BigDBusProxyJsonReplyFunc json_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data)
+{
+ ReplyClosure *c;
+ DBusPendingCall *pending;
+
+ if (!(plain_func || json_func || error_func)) {
+ /* Fire and forget! */
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Firing and forgetting dbus proxy call");
+
+ dbus_connection_send(proxy->connection, message, NULL);
+ return;
+ }
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Sending dbus proxy call %s",
+ dbus_message_get_member(message));
+
+ c = reply_closure_new(proxy, plain_func, json_func, error_func, data);
+ pending = NULL;
+ if (!dbus_connection_send_with_reply(proxy->connection, message, &pending, -1) ||
+ pending == NULL) {
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Failed to send call, will report error in idle handler");
+
+ /* Send an error on return to main loop */
+ g_idle_add(failed_to_send_idle, c);
+ return;
+ }
+
+ dbus_pending_call_set_notify(pending, pending_call_notify, c,
+ pending_call_free_data);
+
+ dbus_pending_call_unref(pending); /* DBusConnection should still hold a ref until it's completed */
+}
+
+void
+big_dbus_proxy_send(BigDBusProxy *proxy,
+ DBusMessage *message,
+ BigDBusProxyReplyFunc reply_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data)
+{
+ big_dbus_proxy_send_internal(proxy, message, reply_func, NULL, error_func, data);
+}
+
+static void
+append_entries_from_valist(DBusMessageIter *dict_iter,
+ const char *first_key,
+ va_list args)
+{
+ const char *key;
+ int dbus_type;
+ void *value_p;
+
+ key = first_key;
+ dbus_type = va_arg(args, int);
+ value_p = va_arg(args, void*);
+
+ big_dbus_append_json_entry(dict_iter, key, dbus_type, value_p);
+
+ key = va_arg(args, const char*);
+ while (key != NULL) {
+ dbus_type = va_arg(args, int);
+ value_p = va_arg(args, void*);
+
+ big_dbus_append_json_entry(dict_iter, key, dbus_type, value_p);
+
+ key = va_arg(args, const char*);
+ }
+}
+
+void
+big_dbus_proxy_call_json_async (BigDBusProxy *proxy,
+ const char *method_name,
+ BigDBusProxyJsonReplyFunc reply_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data,
+ const char *first_key,
+ ...)
+{
+ DBusMessageIter arg_iter, dict_iter;
+ DBusMessage *message;
+ va_list args;
+
+ message = big_dbus_proxy_new_json_call(proxy, method_name, &arg_iter, &dict_iter);
+
+ if (first_key != NULL) {
+ va_start(args, first_key);
+ append_entries_from_valist(&dict_iter, first_key, args);
+ va_end(args);
+ }
+
+ dbus_message_iter_close_container(&arg_iter, &dict_iter);
+
+ big_dbus_proxy_send_internal(proxy, message, NULL, reply_func, error_func, data);
+
+ dbus_message_unref(message);
+}
diff --git a/modules/dbus/util/dbus-proxy.h b/modules/dbus/util/dbus-proxy.h
new file mode 100644
index 0000000..6b793e6
--- /dev/null
+++ b/modules/dbus/util/dbus-proxy.h
@@ -0,0 +1,74 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#ifndef __BIG_UTIL_DBUS_PROXY_H__
+#define __BIG_UTIL_DBUS_PROXY_H__
+
+#include <gio/gio.h>
+#include <dbus/dbus.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _BigDBusProxy BigDBusProxy;
+typedef struct _BigDBusProxyClass BigDBusProxyClass;
+
+typedef void (* BigDBusProxyReplyFunc) (BigDBusProxy *proxy,
+ DBusMessage *message,
+ void *data);
+typedef void (* BigDBusProxyJsonReplyFunc) (BigDBusProxy *proxy,
+ DBusMessage *message,
+ DBusMessageIter *return_value_iter,
+ void *data);
+typedef void (* BigDBusProxyErrorReplyFunc) (BigDBusProxy *proxy,
+ const char *error_name,
+ const char *error_message,
+ void *data);
+
+#define BIG_TYPE_DBUS_PROXY (big_dbus_proxy_get_type ())
+#define BIG_DBUS_PROXY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BIG_TYPE_DBUS_PROXY, BigDBusProxy))
+#define BIG_DBUS_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIG_TYPE_DBUS_PROXY, BigDBusProxyClass))
+#define BIG_IS_DBUS_PROXY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BIG_TYPE_DBUS_PROXY))
+#define BIG_IS_DBUS_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIG_TYPE_DBUS_PROXY))
+#define BIG_DBUS_PROXY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIG_TYPE_DBUS_PROXY, BigDBusProxyClass))
+
+GType big_dbus_proxy_get_type (void) G_GNUC_CONST;
+
+
+BigDBusProxy* big_dbus_proxy_new (DBusConnection *connection,
+ const char *bus_name,
+ const char *object_path,
+ const char *iface);
+DBusConnection* big_dbus_proxy_get_connection (BigDBusProxy *proxy);
+const char* big_dbus_proxy_get_bus_name (BigDBusProxy *proxy);
+DBusMessage* big_dbus_proxy_new_method_call (BigDBusProxy *proxy,
+ const char *method_name);
+DBusMessage* big_dbus_proxy_new_json_call (BigDBusProxy *proxy,
+ const char *method_name,
+ DBusMessageIter *arg_iter,
+ DBusMessageIter *dict_iter);
+void big_dbus_proxy_send (BigDBusProxy *proxy,
+ DBusMessage *message,
+ BigDBusProxyReplyFunc reply_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data);
+
+/* varargs are like:
+ *
+ * key1, dbus_type_1, &value_1,
+ * key2, dbus_type_2, &value_2,
+ * NULL
+ *
+ * Basic types only (no arrays)
+ */
+void big_dbus_proxy_call_json_async (BigDBusProxy *proxy,
+ const char *method_name,
+ BigDBusProxyJsonReplyFunc reply_func,
+ BigDBusProxyErrorReplyFunc error_func,
+ void *data,
+ const char *first_key,
+ ...);
+
+G_END_DECLS
+
+#endif /* __BIG_UTIL_DBUS_PROXY_H__ */
diff --git a/modules/dbus/util/dbus-signals.c b/modules/dbus/util/dbus-signals.c
new file mode 100644
index 0000000..f2e5ba2
--- /dev/null
+++ b/modules/dbus/util/dbus-signals.c
@@ -0,0 +1,1318 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#include <config.h>
+
+#include "dbus-private.h"
+#include "log.h"
+
+#include <string.h>
+
+#define INVALID_SIGNAL_ID (-1)
+
+typedef struct {
+ DBusBusType bus_type;
+ int refcount;
+ char *sender;
+ char *path;
+ char *iface;
+ char *name;
+ BigDBusSignalHandler handler;
+ void *data;
+ GDestroyNotify data_dnotify;
+ int id;
+ unsigned int matching : 1;
+ unsigned int destroyed : 1;
+} BigSignalWatcher;
+
+static GSList *pending_signal_watchers = NULL;
+
+static void signal_watcher_remove (DBusConnection *connection,
+ BigDBusInfo *info,
+ BigSignalWatcher *watcher);
+
+
+static int global_handler_id = 0;
+
+static BigSignalWatcher*
+signal_watcher_new(DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ BigDBusSignalHandler handler,
+ void *data,
+ GDestroyNotify data_dnotify)
+{
+ BigSignalWatcher *watcher;
+
+ watcher = g_slice_new0(BigSignalWatcher);
+
+ watcher->refcount = 1;
+
+ watcher->bus_type = bus_type;
+ watcher->sender = g_strdup(sender);
+ watcher->path = g_strdup(path);
+ watcher->iface = g_strdup(iface);
+ watcher->name = g_strdup(name);
+ watcher->handler = handler;
+ watcher->id = global_handler_id++;
+ watcher->data = data;
+ watcher->data_dnotify = data_dnotify;
+
+ return watcher;
+}
+
+static void
+signal_watcher_dnotify(BigSignalWatcher *watcher)
+{
+ if (watcher->data_dnotify != NULL) {
+ (* watcher->data_dnotify) (watcher->data);
+ watcher->data_dnotify = NULL;
+ }
+ watcher->destroyed = TRUE;
+}
+
+static void
+signal_watcher_ref(BigSignalWatcher *watcher)
+{
+ watcher->refcount += 1;
+}
+
+static void
+signal_watcher_unref(BigSignalWatcher *watcher)
+{
+ watcher->refcount -= 1;
+
+ if (watcher->refcount == 0) {
+ signal_watcher_dnotify(watcher);
+
+ g_free(watcher->sender);
+ g_free(watcher->path);
+ g_free(watcher->iface);
+ g_free(watcher->name);
+
+ g_slice_free(BigSignalWatcher, watcher);
+ }
+}
+
+static char*
+signal_watcher_build_match_rule(BigSignalWatcher *watcher)
+{
+ GString *s;
+
+ s = g_string_new("type='signal'");
+
+ if (watcher->sender) {
+ g_string_append_printf(s, ",sender='%s'", watcher->sender);
+ }
+
+ if (watcher->path) {
+ g_string_append_printf(s, ",path='%s'", watcher->path);
+ }
+
+ if (watcher->iface) {
+ g_string_append_printf(s, ",interface='%s'", watcher->iface);
+ }
+
+ if (watcher->name) {
+ g_string_append_printf(s, ",member='%s'", watcher->name);
+ }
+
+ return g_string_free(s, FALSE);
+}
+
+
+static GSList*
+signal_watcher_table_lookup(GHashTable *table,
+ const char *key)
+{
+ if (table == NULL) {
+ return NULL;
+ }
+
+ return g_hash_table_lookup(table, key);
+}
+
+static void
+signal_watcher_list_free(void *data)
+{
+ GSList *l = data;
+ while (l != NULL) {
+ GSList *next = l->next;
+ signal_watcher_unref(l->data);
+ g_slist_free_1(l);
+ l = next;
+ }
+}
+
+static void
+signal_watcher_table_add(GHashTable **table_p,
+ const char *key,
+ BigSignalWatcher *watcher)
+{
+ GSList *list;
+ char *original_key;
+
+ if (*table_p == NULL) {
+ list = NULL;
+ original_key = g_strdup(key);
+ *table_p = g_hash_table_new_full(g_str_hash,
+ g_str_equal,
+ g_free,
+ signal_watcher_list_free);
+ } else {
+ if (!g_hash_table_lookup_extended(*table_p,
+ key,
+ (gpointer*)&original_key,
+ (gpointer*)&list)) {
+ original_key = g_strdup(key);
+ list = NULL;
+ }
+ }
+
+ list = g_slist_prepend(list, watcher);
+ signal_watcher_ref(watcher);
+
+ g_hash_table_steal(*table_p, key);
+ g_hash_table_insert(*table_p, original_key, list);
+}
+
+static void
+signal_watcher_table_remove(GHashTable *table,
+ const char *key,
+ BigSignalWatcher *watcher)
+{
+ GSList *list;
+ GSList *l;
+ char *original_key;
+
+ if (table == NULL)
+ return; /* Never lazily-created the table, nothing ever added */
+
+ if (!g_hash_table_lookup_extended(table,
+ key,
+ (gpointer*)&original_key,
+ (gpointer*)&list)) {
+ return;
+ }
+
+ l = g_slist_find(list, watcher);
+ if (!l)
+ return; /* we don't want to unref if we weren't in this table */
+
+ list = g_slist_delete_link(list, l);
+
+ g_hash_table_steal(table, key);
+ if (list != NULL) {
+ g_hash_table_insert(table, original_key, list);
+ } else {
+ g_free(original_key);
+ }
+
+ signal_watcher_unref(watcher);
+}
+
+static void
+signal_emitter_name_appeared(DBusConnection *connection,
+ const char *name,
+ const char *new_owner_unique_name,
+ void *data)
+{
+ /* We don't need to do anything here, we installed a name watch so
+ * we could call big_dbus_get_watched_name_owner() to dispatch
+ * signals, and to get destroy notification on unique names.
+ */
+}
+
+static void
+signal_emitter_name_vanished(DBusConnection *connection,
+ const char *name,
+ const char *old_owner_unique_name,
+ void *data)
+{
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Signal emitter '%s' is now gone",
+ name);
+
+ /* If a watcher is matching on a unique name sender, once the unique
+ * name goes away, the watcher can never see anything so nuke it.
+ */
+ if (*name == ':') {
+ GSList *list;
+ BigDBusInfo *info;
+
+ info = _big_dbus_ensure_info(connection);
+
+ list = signal_watcher_table_lookup(info->signal_watchers_by_unique_sender,
+ name);
+
+ if (list == NULL)
+ return;
+
+ /* copy the list since we're about to remove stuff from it
+ * in signal_watcher_remove
+ */
+ list = g_slist_copy(list);
+ while (list != NULL) {
+ signal_watcher_remove(connection, info, list->data);
+ list = g_slist_delete_link(list, list);
+ }
+ }
+}
+
+static BigDBusWatchNameFuncs signal_emitter_name_funcs = {
+ signal_emitter_name_appeared,
+ signal_emitter_name_vanished
+};
+
+static void
+signal_watcher_set_matching(DBusConnection *connection,
+ BigSignalWatcher *watcher,
+ gboolean matching)
+{
+ char *rule;
+
+ if (watcher->matching == (matching != FALSE)) {
+ return;
+ }
+
+ /* Never add match on a destroyed signal watcher */
+ if (watcher->destroyed && matching)
+ return;
+
+ /* We can't affect match rules if not connected */
+ if (!dbus_connection_get_is_connected(connection)) {
+ return;
+ }
+
+ watcher->matching = matching != FALSE;
+
+ rule = signal_watcher_build_match_rule(watcher);
+
+ if (matching)
+ dbus_bus_add_match(connection,
+ rule, NULL); /* asking for error would make this block */
+ else
+ dbus_bus_remove_match(connection, rule, NULL);
+
+ g_free(rule);
+
+ if (watcher->sender) {
+ /* If the signal is from a well-known name, we have to add
+ * a name watch to know who owns that name.
+ *
+ * If the signal is from a unique name, we want to destroy
+ * the watcher if the unique name goes away
+ */
+ if (matching) {
+ big_dbus_watch_name(watcher->bus_type,
+ watcher->sender,
+ 0,
+ &signal_emitter_name_funcs,
+ NULL);
+ } else {
+ big_dbus_unwatch_name(watcher->bus_type,
+ watcher->sender,
+ &signal_emitter_name_funcs,
+ NULL);
+ }
+ }
+}
+
+static void
+signal_watcher_add(DBusConnection *connection,
+ BigDBusInfo *info,
+ BigSignalWatcher *watcher)
+{
+ gboolean in_some_table;
+
+ signal_watcher_set_matching(connection, watcher, TRUE);
+
+ info->all_signal_watchers = g_slist_prepend(info->all_signal_watchers, watcher);
+ signal_watcher_ref(watcher);
+
+ in_some_table = FALSE;
+
+ if (watcher->sender && *(watcher->sender) == ':') {
+ signal_watcher_table_add(&info->signal_watchers_by_unique_sender,
+ watcher->sender,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->path) {
+ signal_watcher_table_add(&info->signal_watchers_by_path,
+ watcher->path,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->iface) {
+ signal_watcher_table_add(&info->signal_watchers_by_iface,
+ watcher->iface,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->name) {
+ signal_watcher_table_add(&info->signal_watchers_by_signal,
+ watcher->name,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (!in_some_table) {
+ info->signal_watchers_in_no_table =
+ g_slist_prepend(info->signal_watchers_in_no_table,
+ watcher);
+ signal_watcher_ref(watcher);
+ }
+}
+
+static void
+signal_watcher_remove(DBusConnection *connection,
+ BigDBusInfo *info,
+ BigSignalWatcher *watcher)
+{
+ gboolean in_some_table;
+
+ signal_watcher_set_matching(connection, watcher, FALSE);
+
+ info->all_signal_watchers = g_slist_remove(info->all_signal_watchers, watcher);
+
+ in_some_table = FALSE;
+
+ if (watcher->sender && *(watcher->sender) == ':') {
+ signal_watcher_table_remove(info->signal_watchers_by_unique_sender,
+ watcher->sender,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->path) {
+ signal_watcher_table_remove(info->signal_watchers_by_path,
+ watcher->path,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->iface) {
+ signal_watcher_table_remove(info->signal_watchers_by_iface,
+ watcher->iface,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (watcher->name) {
+ signal_watcher_table_remove(info->signal_watchers_by_signal,
+ watcher->name,
+ watcher);
+ in_some_table = TRUE;
+ }
+
+ if (!in_some_table) {
+ info->signal_watchers_in_no_table =
+ g_slist_remove(info->signal_watchers_in_no_table,
+ watcher);
+ signal_watcher_unref(watcher);
+ }
+
+ /* Destroy-notify before dropping last ref for a little more safety
+ * (avoids "resurrection" issues), and to ensure we call the destroy
+ * notifier even if we don't finish finalizing just yet.
+ */
+ signal_watcher_dnotify(watcher);
+
+ signal_watcher_unref(watcher);
+}
+
+/* This is called before we notify the app that the connection is open,
+ * to add match rules. It must add the match rules, but MUST NOT
+ * invoke application callbacks since the "connection opened"
+ * callback needs to be first.
+ */
+void
+_big_dbus_process_pending_signal_watchers(DBusConnection *connection,
+ BigDBusInfo *info)
+{
+ GSList *remaining;
+
+ remaining = NULL;
+ while (pending_signal_watchers) {
+ BigSignalWatcher *watcher = pending_signal_watchers->data;
+ pending_signal_watchers = g_slist_delete_link(pending_signal_watchers,
+ pending_signal_watchers);
+
+ if (watcher->bus_type == info->bus_type) {
+ /* Transfer to the non-pending BigDBusInfo */
+ signal_watcher_add(connection, info, watcher);
+ signal_watcher_unref(watcher);
+ } else {
+ remaining = g_slist_prepend(remaining, watcher);
+ }
+ }
+
+ /* keep the order deterministic by reversing, though I don't know
+ * of a reason it matters.
+ */
+ pending_signal_watchers = g_slist_reverse(remaining);
+}
+
+static void
+signal_watchers_disconnected(DBusConnection *connection,
+ BigDBusInfo *info)
+{
+ /* None should be pending on this bus, because at start of
+ * _big_dbus_signal_watch_filter_message() we process all the pending ones.
+ * However there could be stuff in pending_signal_watchers for
+ * another bus. Anyway bottom line we can ignore pending_signal_watchers
+ * in here.
+ */
+ GSList *list;
+ GSList *destroyed;
+
+ /* Build a separate list to destroy to avoid re-entrancy as we are
+ * walking the list
+ */
+ destroyed = NULL;
+ for (list = info->all_signal_watchers;
+ list != NULL;
+ list = list->next) {
+ BigSignalWatcher *watcher = list->data;
+ if (watcher->sender && *(watcher->sender) == ':') {
+ destroyed = g_slist_prepend(destroyed,
+ watcher);
+ signal_watcher_ref(watcher);
+ }
+ }
+
+ while (destroyed != NULL) {
+ BigSignalWatcher *watcher = destroyed->data;
+ destroyed = g_slist_delete_link(destroyed, destroyed);
+
+ signal_watcher_remove(connection, info, watcher);
+ signal_watcher_unref(watcher);
+ }
+}
+
+static void
+concat_candidates(GSList **candidates_p,
+ GHashTable *table,
+ const char *key)
+{
+ GSList *list;
+
+ list = signal_watcher_table_lookup(table, key);
+ if (list == NULL)
+ return;
+
+ *candidates_p = g_slist_concat(*candidates_p,
+ g_slist_copy(list));
+}
+
+static int
+direct_cmp(gconstpointer a,
+ gconstpointer b)
+{
+ /* gcc dislikes pointer math on void* so cast */
+ return ((const char*)a) - ((const char*)b);
+}
+
+static gboolean
+signal_watcher_watches(BigDBusInfo *info,
+ BigSignalWatcher *watcher,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name)
+{
+ if (watcher->path &&
+ strcmp(watcher->path, path) != 0)
+ return FALSE;
+
+ if (watcher->iface &&
+ strcmp(watcher->iface, iface) != 0)
+ return FALSE;
+
+ if (watcher->name &&
+ strcmp(watcher->name, name) != 0)
+ return FALSE;
+
+ /* "sender" from message is always the unique name, but
+ * watcher may or may not be.
+ */
+
+ if (watcher->sender == NULL)
+ return TRUE;
+
+
+ if (* (watcher->sender) == ':') {
+ return strcmp(watcher->sender, sender) == 0;
+ } else {
+ const char *owner;
+
+ owner = big_dbus_get_watched_name_owner(info->bus_type,
+ watcher->sender);
+
+ if (owner != NULL &&
+ strcmp(sender, owner) == 0)
+ return TRUE;
+ else
+ return FALSE;
+ }
+}
+
+DBusHandlerResult
+_big_dbus_signal_watch_filter_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *data)
+{
+ /* Two things we're looking for
+ * 1) signals
+ * 2) if the sender of a signal watcher is a unique name,
+ * we want to destroy notify when it vanishes or
+ * when the bus disconnects.
+ */
+ BigDBusInfo *info;
+ const char *sender;
+ const char *path;
+ const char *iface;
+ const char *name;
+ GSList *candidates;
+ BigSignalWatcher *previous;
+
+ info = _big_dbus_ensure_info(connection);
+
+ /* Be sure they are all in the lookup tables */
+ _big_dbus_process_pending_signal_watchers(connection, info);
+
+ if (dbus_message_get_type(message) != DBUS_MESSAGE_TYPE_SIGNAL)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ sender = dbus_message_get_sender(message);
+ path = dbus_message_get_path(message);
+ iface = dbus_message_get_interface(message);
+ name = dbus_message_get_member(message);
+
+ /* libdbus requires path, iface, name. The bus daemon
+ * will always set a sender but some locally-generated
+ * messages (e.g. disconnected) may not have one.
+ */
+ g_assert(path != NULL);
+ g_assert(iface != NULL);
+ g_assert(name != NULL);
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Signal from %s %s.%s sender %s",
+ path, iface, name, sender ? sender : "(none)");
+
+ candidates = NULL;
+
+ if (sender != NULL) {
+ concat_candidates(&candidates,
+ info->signal_watchers_by_unique_sender,
+ sender);
+ }
+ concat_candidates(&candidates,
+ info->signal_watchers_by_path,
+ path);
+ concat_candidates(&candidates,
+ info->signal_watchers_by_iface,
+ iface);
+ concat_candidates(&candidates,
+ info->signal_watchers_by_signal,
+ name);
+ candidates = g_slist_concat(candidates,
+ g_slist_copy(info->signal_watchers_in_no_table));
+
+ /* Sort so we can find dups */
+ candidates = g_slist_sort(candidates, direct_cmp);
+
+ previous = NULL;
+ while (candidates != NULL) {
+ BigSignalWatcher *watcher;
+
+ watcher = candidates->data;
+ candidates = g_slist_delete_link(candidates, candidates);
+
+ if (previous == watcher)
+ continue; /* watcher was in more than one table */
+
+ previous = watcher;
+
+ if (!signal_watcher_watches(info,
+ watcher,
+ sender, path, iface, name))
+ continue;
+
+ /* destroyed would happen if e.g. removed while we are going
+ * through here.
+ */
+ if (watcher->destroyed)
+ continue;
+
+ /* Invoke the watcher */
+
+ signal_watcher_ref(watcher);
+
+ (* watcher->handler) (connection,
+ message,
+ watcher->data);
+
+ signal_watcher_unref(watcher);
+ }
+
+ /* Note that signal watchers can also listen to the disconnected
+ * signal, so we do our special handling of it last
+ */
+ if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Disconnected in %s", G_STRFUNC);
+
+ signal_watchers_disconnected(connection, info);
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+int
+big_dbus_watch_signal(DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ BigDBusSignalHandler handler,
+ void *data,
+ GDestroyNotify data_dnotify)
+{
+ BigSignalWatcher *watcher;
+ DBusConnection *weak;
+
+ watcher = signal_watcher_new(bus_type, sender, path,
+ iface, name, handler,
+ data, data_dnotify);
+
+ /* If we're already connected, it's essential to get the
+ * match rule added right away. Otherwise the race-free pattern
+ * is not possible:
+ * 1. Add match rule to monitor state of remote object
+ * 2. Get current state of remote object
+ *
+ * Using the pending_signal_watchers codepath, there's no
+ * notification when the match rule is added so you can't
+ * be sure you get current state *after* that.
+ *
+ * Since we add our match rule here immediately if connected,
+ * then apps can rely on first watching the signal, then
+ * getting current state.
+ *
+ * In the connect idle, we process pending signal watchers
+ * before calling any other app callbacks, so if someone
+ * gets current state on connect, that will be after
+ * all their match rules are added.
+ */
+ weak = _big_dbus_get_weak_ref(bus_type);
+ if (weak != NULL) {
+ signal_watcher_add(weak, _big_dbus_ensure_info(weak), watcher);
+ signal_watcher_unref(watcher);
+ } else {
+ pending_signal_watchers = g_slist_prepend(pending_signal_watchers, watcher);
+ _big_dbus_ensure_connect_idle(bus_type);
+ }
+
+ return watcher->id;
+}
+
+/* Does the watcher match a removal request? */
+static gboolean
+signal_watcher_matches(BigSignalWatcher *watcher,
+ DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ int id,
+ BigDBusSignalHandler handler,
+ void *data)
+{
+ /* If we have an ID, check that first. If it matches, we are
+ * done
+ */
+ if (id != INVALID_SIGNAL_ID && watcher->id == id)
+ return TRUE;
+
+ /* Start with data, most likely thing to not match */
+ if (watcher->data != data)
+ return FALSE;
+
+ /* Second most likely non-match */
+ if (watcher->handler != handler)
+ return FALSE;
+
+ /* Then third, do the more expensive checks */
+
+ if (watcher->bus_type != bus_type)
+ return FALSE;
+
+ if (g_strcmp0(watcher->sender, sender) != 0)
+ return FALSE;
+
+ if (g_strcmp0(watcher->path, path) != 0)
+ return FALSE;
+
+ if (g_strcmp0(watcher->iface, iface) != 0)
+ return FALSE;
+
+ if (g_strcmp0(watcher->name, name) != 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void
+unwatch_signal(DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ int id,
+ BigDBusSignalHandler handler,
+ void *data)
+{
+ GSList *list;
+ DBusConnection *weak;
+ BigDBusInfo *info;
+
+ /* Always remove only ONE watcher (the first one we find) */
+
+ weak = _big_dbus_get_weak_ref(bus_type);
+
+ /* First see if it's still pending */
+ for (list = pending_signal_watchers;
+ list != NULL;
+ list = list->next) {
+ if (signal_watcher_matches(list->data,
+ bus_type,
+ sender,
+ path,
+ iface,
+ name,
+ id,
+ handler,
+ data)) {
+ BigSignalWatcher *watcher = list->data;
+ pending_signal_watchers = g_slist_remove_link(pending_signal_watchers,
+ list);
+
+ if (weak != NULL)
+ signal_watcher_set_matching(weak, watcher, FALSE);
+
+ signal_watcher_dnotify(watcher); /* destroy even if we don't finalize */
+ signal_watcher_unref(watcher);
+ return;
+ }
+ }
+
+ /* If not pending, and no bus connection, it can't exist */
+ if (weak == NULL) {
+ /* don't warn on nonexistent, since a vanishing bus name could
+ * have nuked it outside the app's control.
+ */
+ return;
+ }
+
+ info = _big_dbus_ensure_info(weak);
+
+ for (list = info->all_signal_watchers;
+ list != NULL;
+ list = list->next) {
+ if (signal_watcher_matches(list->data,
+ bus_type,
+ sender,
+ path,
+ iface,
+ name,
+ id,
+ handler,
+ data)) {
+ signal_watcher_remove(weak, info, list->data);
+ /* note that "list" node is now invalid */
+ return;
+ }
+ }
+
+ /* don't warn on nonexistent, since a vanishing bus name could
+ * have nuked it outside the app's control. Just do nothing.
+ */
+}
+
+void
+big_dbus_unwatch_signal(DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ BigDBusSignalHandler handler,
+ void *data)
+{
+ unwatch_signal(bus_type,
+ sender,
+ path,
+ iface,
+ name,
+ INVALID_SIGNAL_ID,
+ handler,
+ data);
+}
+
+void
+big_dbus_unwatch_signal_by_id(DBusBusType bus_type,
+ int id)
+{
+ unwatch_signal(bus_type,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ id,
+ (BigDBusSignalHandler)NULL,
+ NULL);
+}
+
+#if BIG_BUILD_TESTS
+
+#include "dbus-proxy.h"
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+
+static pid_t test_service_pid = 0;
+static BigDBusProxy *test_service_proxy = NULL;
+
+static GMainLoop *outer_loop = NULL;
+static GMainLoop *inner_loop = NULL;
+
+static int n_running_children = 0;
+
+typedef struct {
+ const char *sender;
+ const char *path;
+ const char *iface;
+ const char *member;
+} SignalWatchTest;
+
+static SignalWatchTest watch_tests[] = {
+ { NULL, NULL, NULL, NULL },
+ { "com.litl.TestService", NULL, NULL, NULL },
+ { NULL, "/com/litl/test/object42", NULL, NULL },
+ { NULL, NULL, "com.litl.TestIface", NULL },
+ { NULL, NULL, NULL, "TheSignal" }
+};
+
+static void do_test_service_child (void);
+
+/* quit when all children are gone */
+static void
+another_child_down(void)
+{
+ g_assert(n_running_children > 0);
+ n_running_children -= 1;
+
+ if (n_running_children == 0) {
+ g_main_loop_quit(outer_loop);
+ }
+}
+
+/* This test function doesn't really test anything, just sets up
+ * for the following one
+ */
+static void
+fork_test_signal_service(void)
+{
+ pid_t child_pid;
+
+ /* it would break to fork after we already connected */
+ g_assert(_big_dbus_get_weak_ref(DBUS_BUS_SESSION) == NULL);
+ g_assert(_big_dbus_get_weak_ref(DBUS_BUS_SYSTEM) == NULL);
+ g_assert(test_service_pid == 0);
+
+ child_pid = fork();
+
+ if (child_pid == -1) {
+ g_error("Failed to fork dbus service");
+ } else if (child_pid > 0) {
+ /* We are the parent */
+ test_service_pid = child_pid;
+ n_running_children += 1;
+
+ return;
+ }
+
+ /* we are the child, set up a service for main test process to talk to */
+
+ do_test_service_child();
+}
+
+static void
+kill_child(void)
+{
+ if (kill(test_service_pid, SIGTERM) < 0) {
+ g_error("Test service was no longer around... it must have failed somehow (%s)",
+ strerror(errno));
+ }
+
+ /* We will quit main loop when we see the child go away */
+}
+
+static int signal_received_count = 0;
+static int destroy_notify_count = 0;
+
+static void
+the_destroy_notifier(void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "got destroy notification on signal watch");
+ destroy_notify_count += 1;
+}
+
+static void
+the_destroy_notifier_that_quits(void *data)
+{
+ the_destroy_notifier(data);
+ g_main_loop_quit(inner_loop);
+}
+
+static void
+expect_receive_signal_handler(DBusConnection *connection,
+ DBusMessage *message,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "dbus signal watch handler called");
+
+ g_assert(dbus_message_is_signal(message,
+ "com.litl.TestIface",
+ "TheSignal"));
+
+ signal_received_count += 1;
+
+ g_main_loop_quit(inner_loop);
+}
+
+static void
+test_match_combo(const char *sender,
+ const char *path,
+ const char *iface,
+ const char *member)
+{
+ signal_received_count = 0;
+ destroy_notify_count = 0;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "Watching %s %s %s %s",
+ sender,
+ path,
+ iface,
+ member);
+
+ big_dbus_watch_signal(DBUS_BUS_SESSION,
+ sender,
+ path,
+ iface,
+ member,
+ expect_receive_signal_handler,
+ GINT_TO_POINTER(1),
+ the_destroy_notifier);
+
+ big_dbus_proxy_call_json_async(test_service_proxy,
+ "emitTheSignal",
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ g_main_loop_run(inner_loop);
+
+ g_assert(signal_received_count == 1);
+ g_assert(destroy_notify_count == 0);
+
+ big_dbus_unwatch_signal(DBUS_BUS_SESSION,
+ sender,
+ path,
+ iface,
+ member,
+ expect_receive_signal_handler,
+ GINT_TO_POINTER(1));
+
+ g_assert(destroy_notify_count == 1);
+}
+
+static gboolean
+run_signal_tests_idle(void *data)
+{
+ int i;
+ const char *unique_name;
+
+ for (i = 0; i < (int) G_N_ELEMENTS(watch_tests); ++i) {
+ SignalWatchTest *test = &watch_tests[i];
+
+ test_match_combo(test->sender,
+ test->path,
+ test->iface,
+ test->member);
+ }
+
+ /* Now try on the unique bus name */
+
+ unique_name = big_dbus_proxy_get_bus_name(test_service_proxy);
+
+ test_match_combo(unique_name,
+ NULL, NULL, NULL);
+
+ /* Now test we get destroy notify when the unique name disappears
+ * on killing the child.
+ */
+ signal_received_count = 0;
+ destroy_notify_count = 0;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "Watching unique name %s",
+ unique_name);
+
+ big_dbus_watch_signal(DBUS_BUS_SESSION,
+ unique_name,
+ NULL, NULL, NULL,
+ expect_receive_signal_handler,
+ GINT_TO_POINTER(1),
+ the_destroy_notifier_that_quits);
+
+ /* kill owner of unique_name */
+ kill_child();
+
+ /* wait for destroy notify */
+ g_main_loop_run(inner_loop);
+
+ g_assert(signal_received_count == 0);
+ /* roundabout way to write == 1 that gives more info on fail */
+ g_assert(destroy_notify_count > 0);
+ g_assert(destroy_notify_count < 2);
+
+ big_dbus_unwatch_signal(DBUS_BUS_SESSION,
+ unique_name,
+ NULL, NULL, NULL,
+ expect_receive_signal_handler,
+ GINT_TO_POINTER(1));
+
+ g_assert(signal_received_count == 0);
+ g_assert(destroy_notify_count == 1);
+
+ /* remove idle */
+ return FALSE;
+}
+
+static void
+on_test_service_appeared(DBusConnection *connection,
+ const char *name,
+ const char *new_owner_unique_name,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s appeared",
+ name);
+
+ inner_loop = g_main_loop_new(NULL, FALSE);
+
+ test_service_proxy =
+ big_dbus_proxy_new(connection, new_owner_unique_name,
+ "/com/litl/test/object42",
+ "com.litl.TestIface");
+
+ g_idle_add(run_signal_tests_idle, NULL);
+}
+
+static void
+on_test_service_vanished(DBusConnection *connection,
+ const char *name,
+ const char *old_owner_unique_name,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s vanished", name);
+
+ another_child_down();
+}
+
+static BigDBusWatchNameFuncs watch_test_service_funcs = {
+ on_test_service_appeared,
+ on_test_service_vanished
+};
+
+void
+bigtest_test_func_util_dbus_signals_client(void)
+{
+ pid_t result;
+ int status;
+
+ /* See comment in dbus.c above the g_test_trap_fork()
+ * there on why we have to do this.
+ */
+ if (!g_test_trap_fork(0, 0)) {
+ /* We are the parent */
+ g_test_trap_assert_passed();
+ return;
+ }
+
+ /* All this code runs in a child process */
+
+ fork_test_signal_service();
+
+ g_type_init();
+
+ /* We rely on the child-forking test functions being called first */
+ g_assert(test_service_pid != 0);
+
+ big_dbus_watch_name(DBUS_BUS_SESSION,
+ "com.litl.TestService",
+ 0,
+ &watch_test_service_funcs,
+ NULL);
+
+ outer_loop = g_main_loop_new(NULL, FALSE);
+
+ g_main_loop_run(outer_loop);
+
+ if (test_service_proxy != NULL)
+ g_object_unref(test_service_proxy);
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "waitpid() for first child");
+
+ result = waitpid(test_service_pid, &status, 0);
+ if (result < 0) {
+ g_error("Failed to waitpid() for forked child: %s", strerror(errno));
+ }
+
+ if (WIFEXITED(status) && WEXITSTATUS(status) != 0) {
+ g_error("Forked dbus service child exited with error code %d", WEXITSTATUS(status));
+ }
+
+ if (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM) {
+ g_error("Forked dbus service child exited on wrong signal number %d", WTERMSIG(status));
+ }
+
+ big_debug(BIG_DEBUG_IN_TESTS, "dbus signals test completed");
+
+ /* We want to kill dbus so the weak refs are NULL to start the
+ * next dbus-related test, which allows those tests
+ * to fork new child processes.
+ */
+ _big_dbus_dispose_info(_big_dbus_get_weak_ref(DBUS_BUS_SESSION));
+ dbus_shutdown();
+
+ big_debug(BIG_DEBUG_IN_TESTS, "dbus shut down");
+
+ /* FIXME this is only here because we've forked */
+ exit(0);
+}
+
+/*
+ * Child service that emits signals
+ */
+
+static gboolean currently_have_test_service = FALSE;
+static GObject *test_service_object = NULL;
+
+static void
+test_service_emit_the_signal(DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error)
+{
+ DBusMessage *signal;
+
+ signal = dbus_message_new_signal("/com/litl/test/object42",
+ "com.litl.TestIface",
+ "TheSignal");
+ dbus_connection_send(connection, signal, NULL);
+ dbus_message_unref(signal);
+}
+
+static BigDBusJsonMethod test_service_methods[] = {
+ { "emitTheSignal", test_service_emit_the_signal, NULL }
+};
+
+static void
+on_test_service_acquired(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(!currently_have_test_service);
+ currently_have_test_service = TRUE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService acquired by child");
+
+ big_dbus_register_json(connection,
+ "com.litl.TestIface",
+ test_service_methods,
+ G_N_ELEMENTS(test_service_methods));
+
+ test_service_object = g_object_new(G_TYPE_OBJECT, NULL);
+
+ big_dbus_register_g_object(connection,
+ "/com/litl/test/object42",
+ test_service_object,
+ "com.litl.TestIface");
+}
+
+static void
+on_test_service_lost(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(currently_have_test_service);
+ currently_have_test_service = FALSE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService lost by child");
+
+ big_dbus_unregister_g_object(connection,
+ "/com/litl/test/object42");
+
+ big_dbus_unregister_json(connection,
+ "com.litl.TestIface");
+}
+
+static BigDBusNameOwnerFuncs test_service_funcs = {
+ "com.litl.TestService",
+ DBUS_BUS_SESSION,
+ on_test_service_acquired,
+ on_test_service_lost
+};
+
+static void
+do_test_service_child(void)
+{
+ GMainLoop *loop;
+
+ g_type_init();
+
+ loop = g_main_loop_new(NULL, FALSE);
+
+ big_dbus_acquire_name(DBUS_BUS_SESSION,
+ &test_service_funcs,
+ NULL);
+
+ g_main_loop_run(loop);
+
+ /* Don't return to the test program main() */
+ exit(0);
+}
+
+#endif /* BIG_BUILD_TESTS */
diff --git a/modules/dbus/util/dbus.c b/modules/dbus/util/dbus.c
new file mode 100644
index 0000000..89adf27
--- /dev/null
+++ b/modules/dbus/util/dbus.c
@@ -0,0 +1,3023 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#include <config.h>
+
+#include "dbus.h"
+
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "dbus-private.h"
+#include "dbus-proxy.h"
+#include "log.h"
+#include "glib.h"
+
+typedef struct {
+ const BigDBusConnectFuncs *funcs;
+ void *data;
+ unsigned int opened : 1;
+} ConnectFuncs;
+
+typedef enum {
+ NAME_NOT_REQUESTED,
+ NAME_PRIMARY_OWNER,
+ NAME_IN_QUEUE,
+ NAME_NOT_OWNED
+} NameOwnershipState;
+
+typedef struct {
+ char *name;
+ const BigDBusJsonMethod *methods;
+ int n_methods;
+} BigJsonIface;
+
+typedef struct {
+ DBusBusType bus_type;
+ /* If prev_state != state then we may need to notify */
+ NameOwnershipState prev_state;
+ NameOwnershipState state;
+ const BigDBusNameOwnerFuncs *funcs;
+ void *data;
+ unsigned int id;
+} BigNameOwnershipMonitor;
+
+typedef struct {
+ char *name;
+ char *current_owner;
+ GSList *watchers;
+} BigNameWatch;
+
+typedef struct {
+ BigDBusWatchNameFlags flags;
+ const BigDBusWatchNameFuncs *funcs;
+ void *data;
+ DBusBusType bus_type;
+ BigNameWatch *watch;
+ guint notify_idle;
+ int refcount;
+ guint destroyed : 1;
+} BigNameWatcher;
+
+typedef struct {
+ DBusBusType bus_type;
+ char *name;
+ BigNameWatcher *watcher;
+} BigPendingNameWatcher;
+
+static DBusConnection *session_bus_weak_ref = NULL;
+static GSList *session_bus_weak_refs = NULL;
+static DBusConnection *system_bus_weak_ref = NULL;
+static GSList *system_bus_weak_refs = NULL;
+static guint session_connect_idle_id = 0;
+static guint system_connect_idle_id = 0;
+static GSList *all_connect_funcs = NULL;
+
+static GSList *pending_name_ownership_monitors = NULL;
+static GSList *pending_name_watchers = NULL;
+
+#define BIG_DBUS_NAME_OWNER_MONITOR_INVALID_ID 0
+
+static unsigned int global_monitor_id = 0;
+
+static DBusHandlerResult disconnect_filter_message (DBusConnection *connection,
+ DBusMessage *message,
+ void *data);
+static DBusHandlerResult name_ownership_monitor_filter_message (DBusConnection *connection,
+ DBusMessage *message,
+ void *data);
+static void process_name_ownership_monitors (DBusConnection *connection,
+ BigDBusInfo *info);
+static void name_watch_remove_watcher (BigNameWatch *watch,
+ BigNameWatcher *watcher);
+static DBusHandlerResult name_watch_filter_message (DBusConnection *connection,
+ DBusMessage *message,
+ void *data);
+static void process_pending_name_watchers (DBusConnection *connection,
+ BigDBusInfo *info);
+static void json_iface_free (BigJsonIface *iface);
+static void info_free (BigDBusInfo *info);
+static gboolean notify_watcher_name_appeared (gpointer data);
+
+static dbus_int32_t info_slot = -1;
+BigDBusInfo*
+_big_dbus_ensure_info(DBusConnection *connection)
+{
+ BigDBusInfo *info;
+
+ dbus_connection_allocate_data_slot(&info_slot);
+
+ info = dbus_connection_get_data(connection, info_slot);
+
+ if (info == NULL) {
+ info = g_slice_new0(BigDBusInfo);
+
+ info->where_connection_was = connection;
+
+ if (connection == session_bus_weak_ref)
+ info->bus_type = DBUS_BUS_SESSION;
+ else if (connection == system_bus_weak_ref)
+ info->bus_type = DBUS_BUS_SYSTEM;
+ else
+ g_error("Unknown bus type opened in %s", __FILE__);
+
+ info->json_ifaces = g_hash_table_new_full(g_str_hash, g_str_equal,
+ NULL, (GFreeFunc) json_iface_free);
+ info->name_watches = g_hash_table_new(g_str_hash, g_str_equal);
+ dbus_connection_set_data(connection, info_slot, info, (DBusFreeFunction) info_free);
+
+ dbus_connection_add_filter(connection, name_ownership_monitor_filter_message,
+ NULL, NULL);
+ dbus_connection_add_filter(connection, name_watch_filter_message,
+ NULL, NULL);
+ dbus_connection_add_filter(connection, _big_dbus_signal_watch_filter_message,
+ NULL, NULL);
+
+ /* Important: disconnect_filter_message() must be LAST so
+ * it runs last when the disconnect message arrives.
+ */
+ dbus_connection_add_filter(connection, disconnect_filter_message,
+ NULL, NULL);
+
+ /* caution, this could get circular if proxy_new() goes back around
+ * and tries to use dbus.c - but we'll fix it when it happens.
+ * Also, this refs the connection ...
+ */
+ info->driver_proxy =
+ big_dbus_proxy_new(connection,
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS);
+ }
+
+ return info;
+}
+
+void
+_big_dbus_dispose_info(DBusConnection *connection)
+{
+ BigDBusInfo *info;
+
+ if (info_slot < 0)
+ return;
+
+ info = dbus_connection_get_data(connection, info_slot);
+
+ if (info != NULL) {
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Disposing info on connection %p",
+ connection);
+
+ /* the driver proxy refs the connection, we want
+ * to break that cycle.
+ */
+ g_object_unref(info->driver_proxy);
+ info->driver_proxy = NULL;
+
+ dbus_connection_set_data(connection, info_slot, NULL, NULL);
+
+ dbus_connection_free_data_slot(&info_slot);
+ }
+}
+
+DBusConnection*
+_big_dbus_get_weak_ref(DBusBusType which_bus)
+{
+ if (which_bus == DBUS_BUS_SESSION) {
+ return session_bus_weak_ref;
+ } else if (which_bus == DBUS_BUS_SYSTEM) {
+ return system_bus_weak_ref;
+ }
+
+ g_assert_not_reached();
+ return NULL;
+}
+
+static DBusHandlerResult
+disconnect_filter_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *data)
+{
+ /* We should be running after all other filters */
+ if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Disconnected in %s", G_STRFUNC);
+
+ _big_dbus_dispose_info(connection);
+
+ if (session_bus_weak_ref == connection)
+ session_bus_weak_ref = NULL;
+
+ if (system_bus_weak_ref == connection)
+ system_bus_weak_ref = NULL;
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static DBusConnection*
+try_connecting(DBusBusType which_bus)
+{
+
+ DBusGConnection *gconnection;
+ DBusConnection *connection;
+ GError *error;
+
+ connection = _big_dbus_get_weak_ref(which_bus);
+ if (connection != NULL)
+ return connection;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "trying to connect to message bus");
+
+ error = NULL;
+ gconnection = dbus_g_bus_get(which_bus,
+ &error);
+ if (gconnection == NULL) {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "bus connection failed: %s",
+ error->message);
+ g_error_free(error);
+ return NULL;
+ }
+
+ connection = dbus_g_connection_get_connection(gconnection);
+
+ /* Disable this because all our apps will be well-behaved! */
+ dbus_connection_set_exit_on_disconnect(connection, FALSE);
+
+ if (which_bus == DBUS_BUS_SESSION &&
+ session_bus_weak_ref == NULL) {
+ GSList *l;
+ session_bus_weak_ref = connection;
+ for (l = session_bus_weak_refs; l != NULL; l = l->next) {
+ DBusConnection **connection_p = l->data;
+ *connection_p = session_bus_weak_ref;
+ }
+ } else if (which_bus == DBUS_BUS_SYSTEM &&
+ system_bus_weak_ref == NULL) {
+ GSList *l;
+ system_bus_weak_ref = connection;
+ for (l = system_bus_weak_refs; l != NULL; l = l->next) {
+ DBusConnection **connection_p = l->data;
+ *connection_p = system_bus_weak_ref;
+ }
+ }
+
+ dbus_g_connection_unref(gconnection); /* rely on libdbus holding a ref */
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Successfully connected");
+
+ return connection;
+}
+
+static gboolean
+connect_idle(void *data)
+{
+ GSList *l;
+ DBusConnection *connection;
+ BigDBusInfo *info;
+ DBusBusType bus_type;
+
+ bus_type = GPOINTER_TO_INT(data);
+
+ if (bus_type == DBUS_BUS_SESSION)
+ session_connect_idle_id = 0;
+ else if (bus_type == DBUS_BUS_SYSTEM)
+ system_connect_idle_id = 0;
+ else
+ g_assert_not_reached();
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "connection idle with %d connect listeners to traverse", g_slist_length(all_connect_funcs));
+
+ connection = try_connecting(bus_type);
+ if (connection == NULL) {
+ if (bus_type == DBUS_BUS_SESSION) {
+ g_printerr("Lost connection to session bus, exiting\n");
+ exit(1);
+ } else {
+ /* Here it would theoretically make sense to reinstall the
+ * idle as a timeout or something, but we don't for now,
+ * just wait for something to trigger a reconnect. It is
+ * not a situation that should happen in reality (we won't
+ * restart the system bus without rebooting).
+ */
+ }
+ return FALSE;
+ }
+
+ info = _big_dbus_ensure_info(connection);
+
+ /* We first need to call AddMatch on all signal watchers.
+ * This is so if on connect, the app calls methods to get
+ * the state the signal notifies the app of changes in,
+ * the match rule is added before the "get current state"
+ * methods are called. Otherwise there's a race where
+ * a signal can be missed between a "get current state" method
+ * call reply and the AddMatch.
+ */
+ _big_dbus_process_pending_signal_watchers(connection, info);
+
+ /* We want the app to see notification of connection opening,
+ * THEN other notifications, so notify it's open first.
+ */
+
+ for (l = all_connect_funcs; l != NULL; l = l->next) {
+ ConnectFuncs *f;
+ f = l->data;
+
+ if (!f->opened && f->funcs->which_bus == bus_type) {
+ f->opened = TRUE;
+ (* f->funcs->opened) (connection, f->data);
+ }
+ }
+
+ /* These two invoke application callbacks, unlike
+ * _big_dbus_process_pending_signal_watchers(), so should come after
+ * the above calls to the "connection opened" callbacks.
+ */
+
+ process_name_ownership_monitors(connection, info);
+
+ process_pending_name_watchers(connection, info);
+
+ return FALSE;
+}
+
+void
+_big_dbus_ensure_connect_idle(DBusBusType bus_type)
+{
+ if (bus_type == DBUS_BUS_SESSION) {
+ if (session_connect_idle_id == 0) {
+ session_connect_idle_id = g_idle_add(connect_idle, GINT_TO_POINTER(bus_type));
+ }
+ } else if (bus_type == DBUS_BUS_SYSTEM) {
+ if (system_connect_idle_id == 0) {
+ system_connect_idle_id = g_idle_add(connect_idle, GINT_TO_POINTER(bus_type));
+ }
+ } else {
+ g_assert_not_reached();
+ }
+}
+
+static void
+internal_add_connect_funcs(const BigDBusConnectFuncs *funcs,
+ void *data,
+ gboolean sync_notify)
+{
+ ConnectFuncs *f;
+
+ f = g_slice_new0(ConnectFuncs);
+ f->funcs = funcs;
+ f->data = data;
+ f->opened = FALSE;
+
+ all_connect_funcs = g_slist_prepend(all_connect_funcs, f);
+
+ _big_dbus_ensure_connect_idle(f->funcs->which_bus);
+
+ if (sync_notify) {
+ /* sync_notify means IF we are already connected
+ * (we have a weak ref != NULL) then notify
+ * right away before we return.
+ */
+ DBusConnection *connection;
+
+ connection = _big_dbus_get_weak_ref(f->funcs->which_bus);
+
+ if (connection != NULL && !f->opened) {
+ f->opened = TRUE;
+ (* f->funcs->opened) (connection, f->data);
+ }
+ }
+}
+
+/* this should guarantee that the funcs are only called async, which is why
+ * it does not try_connecting right away; the idea is to defer to inside the
+ * main loop.
+ */
+void
+big_dbus_add_connect_funcs(const BigDBusConnectFuncs *funcs,
+ void *data)
+{
+ internal_add_connect_funcs(funcs, data, FALSE);
+}
+
+/* The sync_notify flavor calls the open notification right away if
+ * we are already connected.
+ */
+void
+big_dbus_add_connect_funcs_sync_notify(const BigDBusConnectFuncs *funcs,
+ void *data)
+{
+ internal_add_connect_funcs(funcs, data, TRUE);
+}
+
+void
+big_dbus_remove_connect_funcs(const BigDBusConnectFuncs *funcs,
+ void *data)
+{
+ ConnectFuncs *f;
+ GSList *l;
+
+ f = NULL;
+ for (l = all_connect_funcs; l != NULL; l = l->next) {
+ f = l->data;
+
+ if (f->funcs == funcs &&
+ f->data == data)
+ break;
+ }
+
+ if (l == NULL) {
+ g_warning("Could not find functions matching %p %p", funcs, data);
+ return;
+ }
+ g_assert(l->data == f);
+
+ all_connect_funcs = g_slist_delete_link(all_connect_funcs, l);
+ g_slice_free(ConnectFuncs, f);
+}
+
+void
+big_dbus_add_bus_weakref(DBusBusType which_bus,
+ DBusConnection **connection_p)
+{
+ if (which_bus == DBUS_BUS_SESSION) {
+ *connection_p = session_bus_weak_ref;
+ session_bus_weak_refs = g_slist_prepend(session_bus_weak_refs, connection_p);
+ } else if (which_bus == DBUS_BUS_SYSTEM) {
+ *connection_p = system_bus_weak_ref;
+ system_bus_weak_refs = g_slist_prepend(system_bus_weak_refs, connection_p);
+ } else {
+ g_assert_not_reached();
+ }
+
+ _big_dbus_ensure_connect_idle(which_bus);
+}
+
+void
+big_dbus_remove_bus_weakref(DBusBusType which_bus,
+ DBusConnection **connection_p)
+{
+ if (which_bus == DBUS_BUS_SESSION) {
+ *connection_p = NULL;
+ session_bus_weak_refs = g_slist_remove(session_bus_weak_refs, connection_p);
+ } else if (which_bus == DBUS_BUS_SYSTEM) {
+ *connection_p = NULL;
+ system_bus_weak_refs = g_slist_remove(system_bus_weak_refs, connection_p);
+ } else {
+ g_assert_not_reached();
+ }
+}
+
+void
+big_dbus_try_connecting_now(DBusBusType which_bus)
+{
+ try_connecting(which_bus);
+}
+
+static BigJsonIface*
+json_iface_new(const char *name,
+ const BigDBusJsonMethod *methods,
+ int n_methods)
+{
+ BigJsonIface *iface;
+
+ iface = g_slice_new0(BigJsonIface);
+ iface->name = g_strdup(name);
+ iface->methods = methods;
+ iface->n_methods = n_methods;
+
+ return iface;
+}
+
+static void
+json_iface_free(BigJsonIface *iface)
+{
+ g_free(iface->name);
+ g_slice_free(BigJsonIface, iface);
+}
+
+static BigNameOwnershipMonitor*
+name_ownership_monitor_new(DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data)
+{
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = g_slice_new0(BigNameOwnershipMonitor);
+ monitor->bus_type = bus_type;
+ monitor->prev_state = NAME_NOT_REQUESTED;
+ monitor->state = NAME_NOT_REQUESTED;
+ monitor->funcs = funcs;
+ monitor->data = data;
+ monitor->id = ++global_monitor_id;
+
+ return monitor;
+}
+
+static void
+name_ownership_monitor_free(BigNameOwnershipMonitor *monitor)
+{
+
+ g_slice_free(BigNameOwnershipMonitor, monitor);
+}
+
+static BigNameWatch*
+name_watch_new(const char *name)
+{
+ BigNameWatch *watch;
+
+ watch = g_slice_new0(BigNameWatch);
+ watch->name = g_strdup(name);
+
+ /* For unique names, we assume the owner is itself,
+ * so we default to "exists" and maybe emit "vanished",
+ * while with well-known names we do the opposite.
+ */
+ if (*watch->name == ':') {
+ watch->current_owner = g_strdup(watch->name);
+ }
+
+ return watch;
+}
+
+static void
+name_watch_free(BigNameWatch *watch)
+{
+ g_assert(watch->watchers == NULL);
+
+ g_free(watch->name);
+ g_free(watch->current_owner);
+ g_slice_free(BigNameWatch, watch);
+}
+
+static BigNameWatcher*
+name_watcher_new(BigDBusWatchNameFlags flags,
+ const BigDBusWatchNameFuncs *funcs,
+ void *data,
+ DBusBusType bus_type)
+{
+ BigNameWatcher *watcher;
+
+ watcher = g_slice_new0(BigNameWatcher);
+ watcher->flags = flags;
+ watcher->funcs = funcs;
+ watcher->data = data;
+ watcher->bus_type = bus_type;
+ watcher->watch = NULL;
+ watcher->refcount = 1;
+
+ return watcher;
+}
+
+static void
+name_watcher_ref(BigNameWatcher *watcher)
+{
+ watcher->refcount += 1;
+}
+
+static void
+name_watcher_unref(BigNameWatcher *watcher)
+{
+ watcher->refcount -= 1;
+
+ if (watcher->refcount == 0)
+ g_slice_free(BigNameWatcher, watcher);
+}
+
+static void
+info_free(BigDBusInfo *info)
+{
+ void *key;
+ void *value;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Destroy notify invoked on bus connection info for %p",
+ info->where_connection_was);
+
+ if (info->where_connection_was == session_bus_weak_ref)
+ session_bus_weak_ref = NULL;
+
+ if (info->where_connection_was == system_bus_weak_ref)
+ system_bus_weak_ref = NULL;
+
+ /* This could create some strange re-entrancy so do it first.
+ * If we processed a disconnect message, this should have been done
+ * already at that time, but if we were finalized without that,
+ * it may not have been.
+ */
+ if (info->driver_proxy != NULL) {
+ g_object_unref(info->driver_proxy);
+ info->driver_proxy = NULL;
+ }
+
+ while (info->name_ownership_monitors != NULL) {
+ name_ownership_monitor_free(info->name_ownership_monitors->data);
+ info->name_ownership_monitors = g_slist_remove(info->name_ownership_monitors,
+ info->name_ownership_monitors->data);
+ }
+
+ while ((value = g_hash_table_lookup(info->name_watches, &key)))
+ {
+ BigNameWatch *watch = value;
+
+ while (watch->watchers) {
+ name_watch_remove_watcher(watch, watch->watchers->data);
+ }
+
+ name_watch_free(watch);
+ g_hash_table_steal (info->name_watches, &key);
+ }
+
+ if (info->signal_watchers_by_unique_sender) {
+ g_hash_table_destroy(info->signal_watchers_by_unique_sender);
+ }
+
+ if (info->signal_watchers_by_path) {
+ g_hash_table_destroy(info->signal_watchers_by_path);
+ }
+
+ if (info->signal_watchers_by_iface) {
+ g_hash_table_destroy(info->signal_watchers_by_iface);
+ }
+
+ if (info->signal_watchers_by_signal) {
+ g_hash_table_destroy(info->signal_watchers_by_signal);
+ }
+
+ g_hash_table_destroy(info->name_watches);
+ g_hash_table_destroy(info->json_ifaces);
+ g_slice_free(BigDBusInfo, info);
+}
+
+static DBusHandlerResult
+name_ownership_monitor_filter_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *data)
+{
+ BigDBusInfo *info;
+ gboolean states_changed;
+
+ info = _big_dbus_ensure_info(connection);
+
+ states_changed = FALSE;
+
+ if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameLost") &&
+ dbus_message_has_sender(message, DBUS_SERVICE_DBUS)) {
+ const char *name = NULL;
+ if (dbus_message_get_args(message, NULL,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_INVALID)) {
+ GSList *l;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Lost name %s", name);
+
+ for (l = info->name_ownership_monitors; l != NULL; l = l->next) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = l->data;
+
+ if (monitor->state == NAME_PRIMARY_OWNER &&
+ strcmp(name, monitor->funcs->name) == 0) {
+ monitor->prev_state = monitor->state;
+ monitor->state = NAME_NOT_OWNED;
+ states_changed = TRUE;
+ /* keep going, don't break, there may be more matches */
+ }
+ }
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "NameLost has wrong arguments???");
+ }
+ } else if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameAcquired") &&
+ dbus_message_has_sender(message, DBUS_SERVICE_DBUS)) {
+ const char *name = NULL;
+ if (dbus_message_get_args(message, NULL,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_INVALID)) {
+ GSList *l;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Acquired name %s", name);
+
+ for (l = info->name_ownership_monitors; l != NULL; l = l->next) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = l->data;
+
+ if (monitor->state != NAME_PRIMARY_OWNER &&
+ strcmp(name, monitor->funcs->name) == 0) {
+ monitor->prev_state = monitor->state;
+ monitor->state = NAME_PRIMARY_OWNER;
+ states_changed = TRUE;
+ /* keep going, don't break, there may be more matches */
+ }
+ }
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "NameAcquired has wrong arguments???");
+ }
+ } else if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+ GSList *l;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Disconnected in %s", G_STRFUNC);
+
+ for (l = info->name_ownership_monitors; l != NULL; l = l->next) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = l->data;
+
+ if (monitor->state != NAME_NOT_REQUESTED) {
+ /* Set things up to re-request the name */
+ monitor->prev_state = monitor->state;
+ monitor->state = NAME_NOT_REQUESTED;
+ states_changed = TRUE;
+ }
+ }
+
+ /* FIXME move the monitors back to the pending list so they'll be found on reconnect */
+ }
+
+ if (states_changed)
+ process_name_ownership_monitors(connection, info);
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static void
+process_name_ownership_monitors(DBusConnection *connection,
+ BigDBusInfo *info)
+{
+ GSList *l;
+ gboolean connected;
+ GSList *still_pending;
+
+ /* First pull anything out of pending queue */
+
+ still_pending = NULL;
+ while (pending_name_ownership_monitors != NULL) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = pending_name_ownership_monitors->data;
+ pending_name_ownership_monitors =
+ g_slist_remove(pending_name_ownership_monitors,
+ pending_name_ownership_monitors->data);
+
+ if (monitor->bus_type == info->bus_type) {
+ info->name_ownership_monitors =
+ g_slist_prepend(info->name_ownership_monitors,
+ monitor);
+ } else {
+ still_pending = g_slist_prepend(still_pending, monitor);
+ }
+ }
+ g_assert(pending_name_ownership_monitors == NULL);
+ pending_name_ownership_monitors = still_pending;
+
+ /* Now send notifications to the app */
+
+ connected = dbus_connection_get_is_connected(connection);
+
+ if (connected) {
+ for (l = info->name_ownership_monitors; l != NULL; l = l->next) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = l->data;
+
+ if (monitor->state == NAME_NOT_REQUESTED) {
+ int result;
+ unsigned int flags;
+ DBusError derror;
+
+ flags = DBUS_NAME_FLAG_ALLOW_REPLACEMENT;
+ if (monitor->funcs->type == BIG_DBUS_NAME_SINGLE_INSTANCE)
+ flags |= DBUS_NAME_FLAG_DO_NOT_QUEUE;
+
+ dbus_error_init(&derror);
+ result = dbus_bus_request_name(connection,
+ monitor->funcs->name,
+ flags,
+ &derror);
+
+ /* log 'error' word only when one occurred */
+ if (derror.message != NULL) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Requested name %s result %d error %s",
+ monitor->funcs->name, result, derror.message);
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Requested name %s result %d",
+ monitor->funcs->name, result);
+ }
+
+ dbus_error_free(&derror);
+
+ /* An important feature of this code is that we always
+ * transition from NOT_REQUESTED to something else when
+ * a name monitor is first added, so we always notify
+ * the app either "acquired" or "lost" and don't
+ * leave the app in limbo.
+ *
+ * This means the app can "get going" when it gets the name
+ * and exit when it loses it, and that will just work
+ * since one or the other will always happen on startup.
+ */
+
+ monitor->prev_state = monitor->state;
+
+ if (result == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER ||
+ result == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER) {
+ monitor->state = NAME_PRIMARY_OWNER;
+ } else if (result == DBUS_REQUEST_NAME_REPLY_IN_QUEUE) {
+ monitor->state = NAME_IN_QUEUE;
+ } else if (result == DBUS_REQUEST_NAME_REPLY_EXISTS) {
+ monitor->state = NAME_NOT_OWNED;
+ } else {
+ /* reply code we don't understand? */
+ monitor->state = NAME_NOT_OWNED;
+ }
+ }
+ }
+ }
+
+ /* Do notifications with a list copy for extra safety
+ * (for true safety we also need to refcount each monitor
+ * and have a "destroyed" flag)
+ */
+ l = g_slist_copy(info->name_ownership_monitors);
+ while (l != NULL) {
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = l->data;
+ l = g_slist_remove(l, l->data);
+
+ if (monitor->prev_state != monitor->state) {
+ monitor->prev_state = monitor->state;
+
+ if (monitor->state == NAME_PRIMARY_OWNER) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Notifying acquired %s",
+ monitor->funcs->name);
+ (* monitor->funcs->acquired) (connection, monitor->funcs->name, monitor->data);
+ } else if (monitor->state != NAME_PRIMARY_OWNER) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Notifying lost %s",
+ monitor->funcs->name);
+ (* monitor->funcs->lost) (connection, monitor->funcs->name, monitor->data);
+ }
+ }
+ }
+}
+
+unsigned int
+big_dbus_acquire_name (DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data)
+{
+ BigNameOwnershipMonitor *monitor;
+
+ monitor = name_ownership_monitor_new(bus_type, funcs, data);
+ pending_name_ownership_monitors = g_slist_prepend(pending_name_ownership_monitors, monitor);
+
+ _big_dbus_ensure_connect_idle(bus_type);
+
+ return monitor->id;
+}
+
+static void
+release_name_internal (DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data,
+ unsigned int id)
+{
+ BigDBusInfo *info;
+ GSList *l;
+ BigNameOwnershipMonitor *monitor;
+ DBusConnection *connection;
+
+ connection = _big_dbus_get_weak_ref(bus_type);
+ if (!connection)
+ return;
+
+ info = _big_dbus_ensure_info(connection);
+
+ /* Check first pending list */
+ for (l = pending_name_ownership_monitors; l; l = l->next) {
+ monitor = l->data;
+ /* If the id is valid an matches, we are done */
+ if (monitor->state == NAME_PRIMARY_OWNER &&
+ ((id != BIG_DBUS_NAME_OWNER_MONITOR_INVALID_ID && monitor->id == id) ||
+ (monitor->funcs == funcs &&
+ monitor->data == data))) {
+ dbus_bus_release_name(connection, monitor->funcs->name, NULL);
+ pending_name_ownership_monitors =
+ g_slist_remove(pending_name_ownership_monitors,
+ monitor);
+ name_ownership_monitor_free(monitor);
+ /* If the monitor was in the pending list it
+ * can't be in the processed list
+ */
+ return;
+ }
+ }
+
+ for (l = info->name_ownership_monitors; l; l = l->next) {
+ monitor = l->data;
+ /* If the id is valid an matches, we are done */
+ if (monitor->state == NAME_PRIMARY_OWNER &&
+ ((id != BIG_DBUS_NAME_OWNER_MONITOR_INVALID_ID && monitor->id == id) ||
+ (monitor->funcs == funcs &&
+ monitor->data == data))) {
+ dbus_bus_release_name(connection, monitor->funcs->name, NULL);
+ info->name_ownership_monitors = g_slist_remove(info->name_ownership_monitors,
+ monitor);
+ name_ownership_monitor_free(monitor);
+ break;
+ }
+ }
+}
+
+void
+big_dbus_release_name_by_id (DBusBusType bus_type,
+ unsigned int id)
+{
+ release_name_internal(bus_type, NULL, NULL, id);
+}
+
+void
+big_dbus_release_name (DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data)
+{
+ release_name_internal(bus_type, funcs, data,
+ BIG_DBUS_NAME_OWNER_MONITOR_INVALID_ID);
+}
+
+static void
+notify_name_owner_changed(DBusConnection *connection,
+ const char *name,
+ const char *new_owner)
+{
+ BigDBusInfo *info;
+ BigNameWatch *watch;
+ GSList *l, *watchers;
+ gchar *old_owner;
+
+ info = _big_dbus_ensure_info(connection);
+
+ if (*new_owner == '\0')
+ new_owner = NULL;
+
+ watch = g_hash_table_lookup(info->name_watches, name);
+
+ if (watch == NULL)
+ return;
+
+ if ((watch->current_owner == new_owner) ||
+ (watch->current_owner && new_owner &&
+ strcmp(watch->current_owner, new_owner) == 0)) {
+ /* No change */
+ return;
+ }
+
+ /* we copy the list before iterating, because the
+ * callbacks may modify it */
+ watchers = g_slist_copy(watch->watchers);
+ g_slist_foreach(watchers, (GFunc)name_watcher_ref, NULL);
+
+ /* copy the old owner in case the watch is removed in
+ * the callbacks */
+ old_owner = g_strdup(watch->current_owner);
+
+ /* vanish the old owner */
+ if (old_owner != NULL) {
+ for (l = watchers;
+ l != NULL;
+ l = l->next) {
+ BigNameWatcher *watcher = l->data;
+
+ if (watcher->notify_idle != 0) {
+ /* Name owner changed before we notified
+ * the watcher of the initial name. We will notify
+ * him now of the old name, then that this name
+ * vanished.
+ *
+ * This is better than not sending calling any
+ * callback, it might for instance trigger destroying
+ * signal watchers on the unique name.
+ */
+ g_source_remove(watcher->notify_idle);
+ notify_watcher_name_appeared(watcher);
+ }
+
+ if (!watcher->destroyed) {
+ (* watcher->funcs->vanished) (connection,
+ name,
+ old_owner,
+ watcher->data);
+ }
+ }
+ }
+
+ /* lookup for the watch again, since it might have vanished
+ * if all watchers were removed in the watcher->vanished
+ * callbacks */
+ watch = g_hash_table_lookup(info->name_watches, name);
+
+ if (watch) {
+ g_free(watch->current_owner);
+ watch->current_owner = g_strdup(new_owner);
+ }
+
+ /* appear the new owner */
+ if (new_owner != NULL) {
+ for (l = watchers;
+ l != NULL;
+ l = l->next) {
+ BigNameWatcher *watcher = l->data;
+
+ if (!watcher->destroyed) {
+ (* watcher->funcs->appeared) (connection,
+ name,
+ new_owner,
+ watcher->data);
+ }
+ }
+ }
+
+ /* now destroy our copy */
+ g_slist_foreach(watchers, (GFunc)name_watcher_unref, NULL);
+ g_slist_free(watchers);
+
+ g_free(old_owner);
+}
+
+static DBusHandlerResult
+name_watch_filter_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *data)
+{
+ BigDBusInfo *info;
+
+ info = _big_dbus_ensure_info(connection);
+
+ if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameOwnerChanged") &&
+ dbus_message_has_sender(message, DBUS_SERVICE_DBUS)) {
+ const char *name = NULL;
+ const char *old_owner = NULL;
+ const char *new_owner = NULL;
+ if (dbus_message_get_args(message, NULL,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_STRING, &old_owner,
+ DBUS_TYPE_STRING, &new_owner,
+ DBUS_TYPE_INVALID)) {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "NameOwnerChanged %s: %s -> %s",
+ name, old_owner, new_owner);
+
+ notify_name_owner_changed(connection, name, new_owner);
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS, "NameOwnerChanged has wrong arguments???");
+ }
+ } else if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+
+ big_debug(BIG_DEBUG_UTIL_DBUS, "Disconnected in %s", G_STRFUNC);
+
+ /* FIXME set all current owners to NULL, and move watches back to the pending
+ * list so they are found on reconnect.
+ */
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+
+void
+_big_dbus_set_matching_name_owner_changed(DBusConnection *connection,
+ const char *bus_name,
+ gboolean matched)
+{
+ char *s;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "%s NameOwnerChanged on name '%s'",
+ matched ? "Matching" : "No longer matching",
+ bus_name);
+
+ s = g_strdup_printf("type='signal',sender='"
+ DBUS_SERVICE_DBUS
+ "',interface='"
+ DBUS_INTERFACE_DBUS
+ "',member='"
+ "NameOwnerChanged"
+ "',arg0='%s'",
+ bus_name);
+
+ if (matched)
+ dbus_bus_add_match(connection,
+ s, NULL); /* asking for error would make this block */
+ else
+ dbus_bus_remove_match(connection, s, NULL);
+
+ g_free(s);
+}
+
+static void
+on_start_service_reply(BigDBusProxy *proxy,
+ DBusMessage *message,
+ void *data)
+{
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Got successful reply to service start");
+}
+
+static void
+on_start_service_error(BigDBusProxy *proxy,
+ const char *error_name,
+ const char *error_message,
+ void *data)
+{
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Got error starting service: %s: %s",
+ error_name, error_message);
+}
+
+void
+big_dbus_start_service(DBusConnection *connection,
+ const char *name)
+{
+ DBusMessage *message;
+ dbus_uint32_t flags;
+ BigDBusInfo *info;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Starting service '%s'",
+ name);
+
+ info = _big_dbus_ensure_info(connection);
+
+ message = big_dbus_proxy_new_method_call(info->driver_proxy,
+ "StartServiceByName");
+
+ flags = 0;
+ if (dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_UINT32, &flags,
+ DBUS_TYPE_INVALID)) {
+ big_dbus_proxy_send(info->driver_proxy,
+ message,
+ on_start_service_reply,
+ on_start_service_error,
+ NULL);
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "No memory appending args to StartServiceByName");
+ }
+
+ dbus_message_unref(message);
+}
+
+typedef struct {
+ DBusConnection *connection;
+ char *name;
+ BigDBusWatchNameFlags flags;
+} GetOwnerRequest;
+
+static GetOwnerRequest*
+get_owner_request_new(DBusConnection *connection,
+ const char *name,
+ BigDBusWatchNameFlags flags)
+{
+ GetOwnerRequest *gor;
+
+ gor = g_slice_new0(GetOwnerRequest);
+ gor->connection = connection;
+ gor->name = g_strdup(name);
+ gor->flags = flags;
+ dbus_connection_ref(connection);
+
+ return gor;
+}
+
+static void
+get_owner_request_free(GetOwnerRequest *gor)
+{
+ dbus_connection_unref(gor->connection);
+ g_free(gor->name);
+ g_slice_free(GetOwnerRequest, gor);
+}
+
+static void
+on_get_owner_reply(DBusPendingCall *pending,
+ void *user_data)
+{
+ DBusMessage *reply;
+ GetOwnerRequest *gor;
+
+ gor = user_data;
+
+ reply = dbus_pending_call_steal_reply(pending);
+ if (reply == NULL) {
+ g_warning("NULL reply in on_get_owner_reply?");
+ return;
+ }
+
+ if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_METHOD_RETURN) {
+ const char *current_owner = NULL;
+
+ if (!dbus_message_get_args(reply, NULL,
+ DBUS_TYPE_STRING, &current_owner,
+ DBUS_TYPE_INVALID)) {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "GetNameOwner has wrong args '%s'",
+ dbus_message_get_signature(reply));
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Got owner '%s' for name '%s'",
+ current_owner, gor->name);
+ if (current_owner != NULL) {
+ notify_name_owner_changed(gor->connection,
+ gor->name,
+ current_owner);
+ }
+ }
+ } else if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
+ if (g_str_equal(dbus_message_get_error_name(reply),
+ DBUS_ERROR_NAME_HAS_NO_OWNER)) {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "'%s' was not running",
+ gor->name);
+ if (gor->flags & BIG_DBUS_NAME_START_IF_NOT_FOUND) {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ " (starting it up)");
+ big_dbus_start_service(gor->connection, gor->name);
+ } else {
+ /* no owner for now, notify app */
+ notify_name_owner_changed(gor->connection,
+ gor->name,
+ "");
+ }
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Error getting owner of name '%s': %s",
+ gor->name,
+ dbus_message_get_error_name(reply));
+
+ /* Notify no owner for now, ensuring the app
+ * gets advised "appeared" or "vanished",
+ * one or the other.
+ */
+ notify_name_owner_changed(gor->connection,
+ gor->name,
+ "");
+ }
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Nonsensical reply type to GetNameOwner");
+ }
+
+ dbus_message_unref(reply);
+}
+
+static void
+request_name_owner(DBusConnection *connection,
+ BigDBusInfo *info,
+ BigNameWatch *watch)
+{
+ DBusMessage *message;
+ DBusPendingCall *call;
+
+ message = dbus_message_new_method_call(DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS,
+ "GetNameOwner");
+ if (message == NULL)
+ g_error("no memory");
+
+ if (!dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &watch->name,
+ DBUS_TYPE_INVALID))
+ g_error("no memory");
+
+ call = NULL;
+ dbus_connection_send_with_reply(connection, message, &call, -1);
+ if (call != NULL) {
+ GetOwnerRequest *gor;
+ BigDBusWatchNameFlags flags;
+ GSList *l;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Sent GetNameOwner for '%s'",
+ watch->name);
+
+ flags = 0;
+ for (l = watch->watchers;
+ l != NULL;
+ l = l->next) {
+ BigNameWatcher *watcher = l->data;
+
+ if (watcher->flags & BIG_DBUS_NAME_START_IF_NOT_FOUND)
+ flags |= BIG_DBUS_NAME_START_IF_NOT_FOUND;
+ }
+
+ gor = get_owner_request_new(connection, watch->name, flags);
+
+ if (!dbus_pending_call_set_notify(call, on_get_owner_reply,
+ gor,
+ (DBusFreeFunction) get_owner_request_free))
+ g_error("no memory");
+
+ /* the connection will hold a ref to the pending call */
+ dbus_pending_call_unref(call);
+ } else {
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "GetNameOwner for '%s' not sent, connection disconnected",
+ watch->name);
+ }
+}
+
+static gboolean
+notify_watcher_name_appeared(gpointer data)
+{
+ BigNameWatcher *watcher;
+ DBusConnection *connection;
+
+ watcher = data;
+ watcher->notify_idle = 0;
+
+ connection = _big_dbus_get_weak_ref(watcher->bus_type);
+
+ if (!connection)
+ return FALSE;
+
+ (* watcher->funcs->appeared) (connection,
+ watcher->watch->name,
+ watcher->watch->current_owner,
+ watcher->data);
+ return FALSE;
+}
+
+static void
+create_watch_for_watcher(DBusConnection *connection,
+ BigDBusInfo *info,
+ const char *name,
+ BigNameWatcher *watcher)
+{
+ BigNameWatch *watch;
+
+ watch = g_hash_table_lookup(info->name_watches, name);
+ if (watch == NULL) {
+ watch = name_watch_new(name);
+
+ g_hash_table_replace(info->name_watches, watch->name, watch);
+
+ watch->watchers = g_slist_prepend(watch->watchers, watcher);
+
+ _big_dbus_set_matching_name_owner_changed(connection, watch->name, TRUE);
+
+ request_name_owner(connection, info, watch);
+ } else {
+ watch->watchers = g_slist_prepend(watch->watchers, watcher);
+ }
+ name_watcher_ref(watcher);
+
+ watcher->watch = watch;
+
+}
+
+static void
+process_pending_name_watchers(DBusConnection *connection,
+ BigDBusInfo *info)
+{
+ GSList *still_pending;
+
+ still_pending = NULL;
+ while (pending_name_watchers != NULL) {
+ BigPendingNameWatcher *pending;
+ BigNameWatch *watch;
+
+ pending = pending_name_watchers->data;
+ pending_name_watchers = g_slist_remove(pending_name_watchers,
+ pending_name_watchers->data);
+
+ if (pending->bus_type != info->bus_type) {
+ still_pending = g_slist_prepend(still_pending, pending);
+ continue;
+ }
+
+ create_watch_for_watcher(connection,
+ info,
+ pending->name,
+ pending->watcher);
+
+ watch = pending->watcher->watch;
+
+ /* If we already know the owner, let the new watcher know */
+ if (watch->current_owner != NULL) {
+ (* pending->watcher->funcs->appeared) (connection,
+ watch->name,
+ watch->current_owner,
+ pending->watcher->data);
+ }
+
+ g_free(pending->name);
+ name_watcher_unref(pending->watcher);
+ g_slice_free(BigPendingNameWatcher, pending);
+ }
+
+ g_assert(pending_name_watchers == NULL);
+ pending_name_watchers = still_pending;
+}
+
+static void
+name_watch_remove_watcher(BigNameWatch *watch,
+ BigNameWatcher *watcher)
+{
+ watch->watchers = g_slist_remove(watch->watchers,
+ watcher);
+
+ if (watcher->notify_idle) {
+ g_source_remove(watcher->notify_idle);
+ watcher->notify_idle = 0;
+ }
+
+ watcher->destroyed = TRUE;
+ name_watcher_unref(watcher);
+}
+
+void
+big_dbus_watch_name(DBusBusType bus_type,
+ const char *name,
+ BigDBusWatchNameFlags flags,
+ const BigDBusWatchNameFuncs *funcs,
+ void *data)
+{
+ BigNameWatcher *watcher;
+ DBusConnection *connection;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Adding watch on name '%s'",
+ name);
+
+ watcher = name_watcher_new(flags, funcs, data, bus_type);
+
+ connection = _big_dbus_get_weak_ref(bus_type);
+
+ if (connection) {
+ BigDBusInfo *info;
+
+ info = _big_dbus_ensure_info(connection);
+
+ create_watch_for_watcher(connection,
+ info,
+ name,
+ watcher);
+ /* The initial reference is now transferred to the watch */
+ name_watcher_unref(watcher);
+
+ /* If we already know the owner, notify the user in an idle */
+ if (watcher->watch->current_owner) {
+ watcher->notify_idle =
+ g_idle_add_full(G_PRIORITY_DEFAULT_IDLE,
+ notify_watcher_name_appeared,
+ watcher,
+ (GDestroyNotify)name_watcher_unref);
+ name_watcher_ref(watcher);
+ }
+
+ } else {
+ BigPendingNameWatcher *pending;
+
+ pending = g_slice_new0(BigPendingNameWatcher);
+
+ pending->bus_type = bus_type;
+ pending->name = g_strdup(name);
+ pending->watcher = watcher;
+
+ pending_name_watchers = g_slist_prepend(pending_name_watchers, pending);
+
+ _big_dbus_ensure_connect_idle(pending->bus_type);
+ }
+}
+
+void
+big_dbus_unwatch_name(DBusBusType bus_type,
+ const char *name,
+ const BigDBusWatchNameFuncs *funcs,
+ void *data)
+{
+ DBusConnection *connection;
+ BigDBusInfo *info;
+ BigNameWatch *watch;
+ GSList *l;
+ BigNameWatcher *watcher;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Removing watch on name '%s'",
+ name);
+
+ connection = _big_dbus_get_weak_ref(bus_type);
+ if (connection == NULL) {
+ /* right now our state is entirely hosed if we disconnect
+ * (we don't move the watchers out of the connection data),
+ * so can't do much here without larger changes to the file
+ */
+ g_warning("Have not implemented disconnect handling");
+ return;
+ }
+
+ info = _big_dbus_ensure_info(connection);
+
+ /* could still be pending */
+ process_pending_name_watchers(connection, info);
+
+ watch = g_hash_table_lookup(info->name_watches, name);
+
+ if (watch == NULL) {
+ g_warning("attempt to unwatch name %s but nobody is watching that",
+ name);
+ return;
+ }
+
+ watcher = NULL;
+ for (l = watch->watchers; l != NULL; l = l->next) {
+ watcher = l->data;
+
+ if (watcher->funcs == funcs &&
+ watcher->data == data)
+ break;
+ }
+
+ if (l == NULL) {
+ g_warning("Could not find a watch on %s matching %p %p",
+ name, funcs, data);
+ return;
+ }
+ g_assert(l->data == watcher);
+
+ name_watch_remove_watcher(watch, watcher);
+
+ /* Clear out the watch if it's gone */
+ if (watch->watchers == NULL) {
+ g_hash_table_remove(info->name_watches, watch->name);
+
+ _big_dbus_set_matching_name_owner_changed(connection, watch->name, FALSE);
+
+ name_watch_free(watch);
+ }
+}
+
+const char*
+big_dbus_get_watched_name_owner(DBusBusType bus_type,
+ const char *name)
+{
+ DBusConnection *connection;
+ BigNameWatch *watch;
+ BigDBusInfo *info;
+
+ connection = _big_dbus_get_weak_ref(bus_type);
+ if (connection == NULL) {
+ return NULL;
+ }
+
+ info = _big_dbus_ensure_info(connection);
+
+ /* could still be pending */
+ process_pending_name_watchers(connection, info);
+
+ watch = g_hash_table_lookup(info->name_watches, name);
+ if (watch == NULL) {
+ g_warning("Tried to get owner of '%s' but there is no watch on it",
+ name);
+ return NULL;
+ }
+
+ return watch->current_owner;
+}
+
+void
+big_dbus_register_json(DBusConnection *connection,
+ const char *iface_name,
+ const BigDBusJsonMethod *methods,
+ int n_methods)
+{
+ BigDBusInfo *info;
+ BigJsonIface *iface;
+
+ info = _big_dbus_ensure_info(connection);
+
+ iface = json_iface_new(iface_name, methods, n_methods);
+
+ g_hash_table_replace(info->json_ifaces, iface->name, iface);
+}
+
+void
+big_dbus_unregister_json(DBusConnection *connection,
+ const char *iface_name)
+{
+ BigDBusInfo *info;
+
+ info = _big_dbus_ensure_info(connection);
+
+ g_hash_table_remove(info->json_ifaces, iface_name);
+}
+
+typedef struct {
+ DBusConnection *connection;
+ GObject *gobj;
+ char *iface_name;
+} BigDBusGObject;
+
+static void
+gobj_path_unregistered(DBusConnection *connection,
+ void *user_data)
+{
+ BigDBusGObject *g;
+
+ g = user_data;
+
+ if (g->gobj) {
+ g_object_remove_weak_pointer(g->gobj, (void**) &g->gobj);
+ g->gobj = NULL;
+ }
+
+ g_free(g->iface_name);
+ g_slice_free(BigDBusGObject, g);
+}
+
+static DBusHandlerResult
+gobj_path_message(DBusConnection *connection,
+ DBusMessage *message,
+ void *user_data)
+{
+ BigDBusGObject *g;
+ BigDBusInfo *info;
+ BigJsonIface *iface;
+ const char *message_iface;
+ const char *message_method;
+ DBusError derror;
+ int i;
+ const BigDBusJsonMethod *method;
+ DBusMessageIter arg_iter, dict_iter;
+
+ info = _big_dbus_ensure_info(connection);
+ g = user_data;
+
+ big_debug(BIG_DEBUG_UTIL_DBUS,
+ "Received message to iface %s gobj %p",
+ g->iface_name, g->gobj);
+
+ if (g->gobj == NULL) {
+ /* GObject was destroyed */
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (dbus_message_get_type(message) != DBUS_MESSAGE_TYPE_METHOD_CALL)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ dbus_error_init(&derror);
+
+ message_iface = dbus_message_get_interface(message);
+
+ /* FIXME implement Introspectable() just to enable dbus debugger */
+
+ if (message_iface != NULL &&
+ strcmp(message_iface, g->iface_name) != 0) {
+
+ dbus_set_error(&derror, DBUS_ERROR_UNKNOWN_METHOD,
+ "Interface '%s' not implemented by this object, did you mean '%s'?",
+ message_iface, g->iface_name);
+
+ goto out;
+ }
+
+ iface = g_hash_table_lookup(info->json_ifaces,
+ g->iface_name);
+ if (iface == NULL) {
+ g_warning("Object registered with iface %s but that iface is not registered",
+ g->iface_name);
+ dbus_set_error(&derror, DBUS_ERROR_UNKNOWN_METHOD,
+ "Bug - '%s' is not registered",
+ g->iface_name);
+ goto out;
+ }
+
+ method = NULL;
+ message_method = dbus_message_get_member(message);
+ for (i = 0; i < iface->n_methods; ++i) {
+ if (strcmp(message_method, iface->methods[i].name) == 0) {
+ method = &iface->methods[i];
+ break;
+ }
+ }
+
+ if (method == NULL) {
+ dbus_set_error(&derror, DBUS_ERROR_UNKNOWN_METHOD,
+ "Interface '%s' has no method '%s'",
+ g->iface_name, message_method);
+ goto out;
+ }
+
+ if (!dbus_message_has_signature(message, "a{sv}")) {
+ dbus_set_error(&derror, DBUS_ERROR_INVALID_ARGS,
+ "Method %s.%s should have 1 argument which is a dictionary",
+ g->iface_name, message_method);
+ goto out;
+ }
+
+ dbus_message_iter_init(message, &arg_iter);
+ dbus_message_iter_recurse(&arg_iter, &dict_iter);
+
+ if (method->sync_func != NULL) {
+ DBusMessage *reply;
+ DBusMessageIter out_arg_iter, out_dict_iter;
+
+ reply = dbus_message_new_method_return(message);
+ if (reply == NULL) {
+ dbus_set_error(&derror, DBUS_ERROR_NO_MEMORY,
+ "No memory");
+ goto out;
+ }
+
+ dbus_message_iter_init_append(reply, &out_arg_iter);
+ dbus_message_iter_open_container(&out_arg_iter,
+ DBUS_TYPE_ARRAY, "{sv}",
+ &out_dict_iter);
+
+ g_object_ref(g->gobj);
+ (* method->sync_func) (connection, message,
+ &dict_iter, &out_dict_iter,
+ g->gobj,
+ &derror);
+ g_object_unref(g->gobj);
+
+ dbus_message_iter_close_container(&out_arg_iter, &out_dict_iter);
+
+ if (!dbus_error_is_set(&derror)) {
+ dbus_connection_send(connection, reply, NULL);
+ }
+ dbus_message_unref(reply);
+
+ } else if (method->async_func != NULL) {
+ g_object_ref(g->gobj);
+ (* method->async_func) (connection, message,
+ &dict_iter,
+ g->gobj);
+ g_object_unref(g->gobj);
+ } else {
+ g_warning("Method %s does not have any implementation", method->name);
+ }
+
+ out:
+ if (dbus_error_is_set(&derror)) {
+ DBusMessage *reply;
+
+ reply = dbus_message_new_error(message,
+ derror.name,
+ derror.message);
+ dbus_error_free(&derror);
+
+ if (reply != NULL) {
+ dbus_connection_send(connection, reply, NULL);
+
+ dbus_message_unref(reply);
+ } else {
+ /* use g_printerr not g_warning since this is NOT a "can
+ * never happen" just a "probably will never happen"
+ */
+ g_printerr("Could not send OOM error\n");
+ }
+ }
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusObjectPathVTable gobj_vtable = {
+ gobj_path_unregistered,
+ gobj_path_message,
+ NULL,
+};
+
+/* Note that because of how this works, each object can be registered
+ * at multiple paths but only once per path. Which is sort of bizarre,
+ * but we'll fix it when we need it.
+ */
+void
+big_dbus_register_g_object(DBusConnection *connection,
+ const char *path,
+ GObject *gobj,
+ const char *iface_name)
+{
+ BigDBusGObject *g;
+
+ g = g_slice_new0(BigDBusGObject);
+ g->iface_name = g_strdup(iface_name);
+ g->gobj = gobj;
+
+ if (!dbus_connection_register_object_path(connection, path,
+ &gobj_vtable, g)) {
+ g_warning("Failed to register object path %s", path);
+ }
+
+ g_object_add_weak_pointer(g->gobj, (void**) &g->gobj);
+}
+
+void
+big_dbus_unregister_g_object (DBusConnection *connection,
+ const char *path)
+{
+ dbus_connection_unregister_object_path(connection, path);
+}
+
+static void
+open_json_entry(DBusMessageIter *dict_iter,
+ const char *key,
+ const char *signature,
+ DBusMessageIter *entry_iter,
+ DBusMessageIter *variant_iter)
+{
+ dbus_message_iter_open_container(dict_iter, DBUS_TYPE_DICT_ENTRY, NULL, entry_iter);
+
+ dbus_message_iter_append_basic(entry_iter, DBUS_TYPE_STRING, &key);
+
+ dbus_message_iter_open_container(entry_iter, DBUS_TYPE_VARIANT, signature, variant_iter);
+}
+
+static void
+close_json_entry(DBusMessageIter *dict_iter,
+ DBusMessageIter *entry_iter,
+ DBusMessageIter *variant_iter)
+{
+ dbus_message_iter_close_container(entry_iter, variant_iter);
+
+ dbus_message_iter_close_container(dict_iter, entry_iter);
+}
+
+static void
+open_json_entry_array(DBusMessageIter *dict_iter,
+ const char *key,
+ int array_element_type,
+ DBusMessageIter *entry_iter,
+ DBusMessageIter *variant_iter,
+ DBusMessageIter *array_iter)
+{
+ char buf[3];
+ buf[0] = 'a';
+ buf[1] = array_element_type;
+ buf[2] = '\0';
+
+ open_json_entry(dict_iter, key, buf, entry_iter, variant_iter);
+
+ dbus_message_iter_open_container(variant_iter, DBUS_TYPE_ARRAY, &buf[1], array_iter);
+}
+
+static void
+close_json_entry_array(DBusMessageIter *dict_iter,
+ DBusMessageIter *entry_iter,
+ DBusMessageIter *variant_iter,
+ DBusMessageIter *array_iter)
+{
+ dbus_message_iter_close_container(variant_iter, array_iter);
+
+ close_json_entry(dict_iter, entry_iter, variant_iter);
+}
+
+void
+big_dbus_append_json_entry (DBusMessageIter *dict_iter,
+ const char *key,
+ int dbus_type,
+ void *basic_value_p)
+{
+ DBusMessageIter entry_iter, variant_iter;
+ char buf[2];
+
+ buf[0] = dbus_type;
+ buf[1] = '\0';
+
+ open_json_entry(dict_iter, key, buf, &entry_iter, &variant_iter);
+
+ dbus_message_iter_append_basic(&variant_iter, dbus_type, basic_value_p);
+
+ close_json_entry(dict_iter, &entry_iter, &variant_iter);
+}
+
+void
+big_dbus_append_json_entry_STRING (DBusMessageIter *dict_iter,
+ const char *key,
+ const char *value)
+{
+ big_dbus_append_json_entry(dict_iter, key, DBUS_TYPE_STRING, &value);
+}
+
+void
+big_dbus_append_json_entry_INT32 (DBusMessageIter *dict_iter,
+ const char *key,
+ dbus_int32_t value)
+{
+ big_dbus_append_json_entry(dict_iter, key, DBUS_TYPE_INT32, &value);
+}
+
+void
+big_dbus_append_json_entry_DOUBLE (DBusMessageIter *dict_iter,
+ const char *key,
+ double value)
+{
+ big_dbus_append_json_entry(dict_iter, key, DBUS_TYPE_DOUBLE, &value);
+}
+
+void
+big_dbus_append_json_entry_BOOLEAN (DBusMessageIter *dict_iter,
+ const char *key,
+ dbus_bool_t value)
+{
+ big_dbus_append_json_entry(dict_iter, key, DBUS_TYPE_BOOLEAN, &value);
+}
+
+/* when coming from a dynamic language, we don't know what type of array '[]' is supposed to be */
+void
+big_dbus_append_json_entry_EMPTY_ARRAY (DBusMessageIter *dict_iter,
+ const char *key)
+{
+ DBusMessageIter entry_iter, variant_iter, array_iter;
+
+ /* so just say VARIANT even though there won't be any elements in the array */
+ open_json_entry_array(dict_iter, key, DBUS_TYPE_VARIANT, &entry_iter, &variant_iter, &array_iter);
+
+ close_json_entry_array(dict_iter, &entry_iter, &variant_iter, &array_iter);
+}
+
+void
+big_dbus_append_json_entry_STRING_ARRAY (DBusMessageIter *dict_iter,
+ const char *key,
+ const char **value)
+{
+ DBusMessageIter entry_iter, variant_iter, array_iter;
+ int i;
+
+ open_json_entry_array(dict_iter, key, DBUS_TYPE_STRING, &entry_iter, &variant_iter, &array_iter);
+
+ for (i = 0; value[i] != NULL; ++i) {
+ dbus_message_iter_append_basic(&array_iter, DBUS_TYPE_STRING, &value[i]);
+ }
+
+ close_json_entry_array(dict_iter, &entry_iter, &variant_iter, &array_iter);
+}
+
+gboolean
+big_dbus_message_iter_get_gsize(DBusMessageIter *iter,
+ gsize *value_p)
+{
+ switch (dbus_message_iter_get_arg_type(iter)) {
+ case DBUS_TYPE_INT32:
+ {
+ dbus_int32_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v < 0)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ dbus_uint32_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_INT64:
+ {
+ dbus_int64_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v < 0)
+ return FALSE;
+ if (((guint64)v) > G_MAXSIZE)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_UINT64:
+ {
+ dbus_uint64_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v > G_MAXSIZE)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+big_dbus_message_iter_get_gssize(DBusMessageIter *iter,
+ gssize *value_p)
+{
+ switch (dbus_message_iter_get_arg_type(iter)) {
+ case DBUS_TYPE_INT32:
+ {
+ dbus_int32_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_UINT32:
+ {
+ dbus_uint32_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v > (guint32) G_MAXSSIZE)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_INT64:
+ {
+ dbus_int64_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v > (gint64) G_MAXSSIZE)
+ return FALSE;
+ if (v < (gint64) G_MINSSIZE)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ case DBUS_TYPE_UINT64:
+ {
+ dbus_uint64_t v;
+ dbus_message_iter_get_basic(iter, &v);
+ if (v > (guint64) G_MAXSSIZE)
+ return FALSE;
+ *value_p = v;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#if BIG_BUILD_TESTS
+
+#include "dbus-proxy.h"
+#include "dbus-input-stream.h"
+#include "dbus-output-stream.h"
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+
+static pid_t test_service_pid = 0;
+static BigDBusProxy *test_service_proxy = NULL;
+
+static pid_t test_io_pid = 0;
+static BigDBusProxy *test_io_proxy = NULL;
+
+static GMainLoop *client_loop = NULL;
+
+static int n_running_children = 0;
+
+static BigDBusInputStream *input_from_io_service;
+static BigDBusOutputStream *output_to_io_service;
+
+static const char stream_data_to_io_service[] = "This is sent from the main test process to the IO service.";
+static const char stream_data_from_io_service[] = "This is sent from the IO service to the main test process. The quick brown fox, etc.";
+
+static void do_test_service_child (void);
+static void do_test_io_child (void);
+
+/* quit when all children are gone */
+static void
+another_child_down(void)
+{
+ g_assert(n_running_children > 0);
+ n_running_children -= 1;
+
+ if (n_running_children == 0) {
+ g_main_loop_quit(client_loop);
+ }
+}
+
+static const char*
+extract_string_arg(DBusMessageIter *in_iter,
+ const char *prop_name,
+ DBusError *error)
+{
+ const char *s;
+
+ s = NULL;
+ while (dbus_message_iter_get_arg_type(in_iter) == DBUS_TYPE_DICT_ENTRY) {
+ DBusMessageIter entry_iter, variant_iter;
+ const char *key;
+
+ dbus_message_iter_recurse(in_iter, &entry_iter);
+
+ dbus_message_iter_get_basic(&entry_iter, &key);
+
+ if (strcmp(key, prop_name) == 0) {
+ dbus_message_iter_next(&entry_iter);
+
+ dbus_message_iter_recurse(&entry_iter, &variant_iter);
+ if (dbus_message_iter_get_arg_type(&variant_iter) != DBUS_TYPE_STRING) {
+ dbus_set_error(error, DBUS_ERROR_INVALID_ARGS,
+ "Value of '%s' prop should be a string",
+ prop_name);
+ return NULL;
+ }
+
+ dbus_message_iter_get_basic(&variant_iter, &s);
+
+ return s;
+ }
+ }
+
+ dbus_set_error(error, DBUS_ERROR_INVALID_ARGS,
+ "No '%s' prop provided", prop_name);
+ return NULL;
+}
+
+static void
+fork_child_test_service(void)
+{
+ pid_t child_pid;
+
+ /* it would break to fork after we already connected */
+ g_assert(session_bus_weak_ref == NULL);
+ g_assert(system_bus_weak_ref == NULL);
+ g_assert(test_service_pid == 0);
+
+ child_pid = fork();
+
+ if (child_pid == -1) {
+ g_error("Failed to fork dbus service");
+ } else if (child_pid > 0) {
+ /* We are the parent */
+ test_service_pid = child_pid;
+ n_running_children += 1;
+
+ return;
+ }
+
+ /* we are the child, set up a service for main test process to talk to */
+
+ do_test_service_child();
+}
+
+/* This test function doesn't really test anything, just sets up
+ * for the following one
+ */
+static void
+fork_child_test_io(void)
+{
+ pid_t child_pid;
+
+ /* it would break to fork after we already connected */
+ g_assert(session_bus_weak_ref == NULL);
+ g_assert(system_bus_weak_ref == NULL);
+ g_assert(test_io_pid == 0);
+
+ child_pid = fork();
+
+ if (child_pid == -1) {
+ g_error("Failed to fork dbus service");
+ } else if (child_pid > 0) {
+ /* We are the parent */
+ test_io_pid = child_pid;
+ n_running_children += 1;
+
+ return;
+ }
+
+ /* we are the child, set up a service for main test process to talk to */
+
+ do_test_io_child();
+}
+
+static void
+on_expected_fnf_error_reply_kill_child(BigDBusProxy *proxy,
+ const char *error_name,
+ const char *error_message,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "got expected error reply to alwaysErrorSync, killing child");
+
+ /* We were expecting an error, good. */
+ if (strcmp(error_name, DBUS_ERROR_FILE_NOT_FOUND) != 0) {
+ g_error("Got error we did not expect %s: %s",
+ error_name, error_message);
+ }
+
+ if (kill(test_service_pid, SIGTERM) < 0) {
+ g_error("Test service was no longer around... it must have failed somehow (%s)",
+ strerror(errno));
+ }
+
+ /* We will quit main loop when we see the child go away */
+}
+
+static void
+on_unexpected_error_reply(BigDBusProxy *proxy,
+ const char *error_name,
+ const char *error_message,
+ void *data)
+{
+ const char *context_text = data;
+
+ g_error("Got error %s: '%s' context was: %s",
+ error_name, error_message, context_text);
+}
+
+static void
+on_get_always_error_reply(BigDBusProxy *proxy,
+ DBusMessage *message,
+ DBusMessageIter *return_value_iter,
+ void *data)
+{
+ g_error("alwaysError json method supposed to return an error always, not a valid reply");
+}
+
+static void
+on_get_some_stuff_reply(BigDBusProxy *proxy,
+ DBusMessage *message,
+ DBusMessageIter *return_value_iter,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "reply received to getSomeStuffSync");
+
+ /* FIXME look at the return value to see if it's what
+ * the test service sends
+ */
+
+ big_dbus_proxy_call_json_async(test_service_proxy,
+ "alwaysErrorSync",
+ on_get_always_error_reply,
+ on_expected_fnf_error_reply_kill_child,
+ NULL,
+ NULL);
+}
+
+static void
+on_test_service_appeared(DBusConnection *connection,
+ const char *name,
+ const char *new_owner_unique_name,
+ void *data)
+{
+ dbus_int32_t v_INT32;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s appeared",
+ name);
+
+ test_service_proxy =
+ big_dbus_proxy_new(connection, new_owner_unique_name,
+ "/com/litl/test/object42",
+ "com.litl.TestIface");
+ v_INT32 = 42;
+ big_dbus_proxy_call_json_async(test_service_proxy,
+ "getSomeStuffSync",
+ on_get_some_stuff_reply,
+ on_unexpected_error_reply,
+ "getSomeStuffSync call from on_test_service_appeared",
+ "yourNameIs", DBUS_TYPE_STRING, &name,
+ "yourUniqueNameIs", DBUS_TYPE_STRING, &new_owner_unique_name,
+ "anIntegerIs", DBUS_TYPE_INT32, &v_INT32,
+ NULL);
+}
+
+static void
+on_test_service_vanished(DBusConnection *connection,
+ const char *name,
+ const char *old_owner_unique_name,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s vanished", name);
+
+ another_child_down();
+}
+
+static BigDBusWatchNameFuncs watch_test_service_funcs = {
+ on_test_service_appeared,
+ on_test_service_vanished
+};
+
+static void
+on_confirm_streams_reply(BigDBusProxy *proxy,
+ DBusMessage *message,
+ DBusMessageIter *return_value_iter,
+ void *data)
+{
+ const char *received;
+
+ received = extract_string_arg(return_value_iter,
+ "received",
+ NULL);
+ g_assert(received != NULL);
+
+ if (strcmp(received, stream_data_to_io_service) != 0) {
+ g_error("We sent the child process '%s' but it says it got '%s'",
+ stream_data_to_io_service,
+ received);
+ }
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestIO says it got: '%s'", received);
+
+ /* We've exchanged all our streams - time to kill the TestIO
+ * child process
+ */
+ big_debug(BIG_DEBUG_IN_TESTS, "Sending TERM to TestIO child");
+ if (kill(test_io_pid, SIGTERM) < 0) {
+ g_error("Test IO service was no longer around... it must have failed somehow (%s)",
+ strerror(errno));
+ }
+}
+
+static void
+on_setup_streams_reply(BigDBusProxy *proxy,
+ DBusMessage *message,
+ DBusMessageIter *return_value_iter,
+ void *data)
+{
+ const char *stream_path;
+ gsize total;
+ gssize result;
+ gsize read_size;
+ GError *error;
+ GString *str;
+ char buf[10];
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "Got reply to setupStreams");
+
+ stream_path = extract_string_arg(return_value_iter,
+ "stream",
+ NULL);
+ g_assert(stream_path != NULL);
+
+ output_to_io_service =
+ big_dbus_output_stream_new(big_dbus_proxy_get_connection(proxy),
+ dbus_message_get_sender(message),
+ stream_path);
+
+ g_assert(input_from_io_service && output_to_io_service);
+
+ /* Write to the output stream */
+
+ total = strlen(stream_data_to_io_service);
+
+ error = NULL;
+ result = g_output_stream_write(G_OUTPUT_STREAM(output_to_io_service),
+ stream_data_to_io_service,
+ 10,
+ NULL,
+ &error);
+ if (result < 0) {
+ g_error("Error writing to output stream: %s", error->message);
+ g_error_free(error);
+ }
+
+ if (result != 10) {
+ g_error("Wrote %d instead of 10 bytes", (int) result);
+ }
+
+ if (!g_output_stream_write_all(G_OUTPUT_STREAM(output_to_io_service),
+ stream_data_to_io_service + 10,
+ total - 10,
+ NULL, NULL, &error)) {
+ g_error("Error writing all to output stream: %s", error->message);
+ g_error_free(error);
+ }
+
+ /* flush should do nothing here, and is not needed, but
+ * just calling it to test it
+ */
+ if (!g_output_stream_flush(G_OUTPUT_STREAM(output_to_io_service), NULL, &error)) {
+ g_error("Error flushing output stream: %s", error->message);
+ g_error_free(error);
+ }
+
+ if (!g_output_stream_close(G_OUTPUT_STREAM(output_to_io_service), NULL, &error)) {
+ g_error("Error closing output stream: %s", error->message);
+ g_error_free(error);
+ }
+ g_object_unref(output_to_io_service);
+ output_to_io_service = NULL;
+
+ /* Now read from the input stream - in an inefficient way to be sure
+ * we test multiple, partial reads
+ */
+
+ read_size = 1;
+ str = g_string_new(NULL);
+
+ while (TRUE) {
+ /* test get_received() */
+ g_assert(big_dbus_input_stream_get_received(input_from_io_service) <= strlen(stream_data_from_io_service));
+
+ /* This is a blocking read... in production code, you would
+ * want to use the ready-to-read signal instead to avoid
+ * blocking when there is nothing to read.
+ */
+ result = g_input_stream_read(G_INPUT_STREAM(input_from_io_service),
+ buf,
+ read_size,
+ NULL, &error);
+ if (result < 0) {
+ g_error("Error reading %d bytes from input stream: %s",
+ (int) read_size, error->message);
+ g_error_free(error);
+ }
+
+ if (result == 0) {
+ /* EOF */
+ break;
+ }
+
+ g_string_append_len(str, buf, result);
+
+ if (read_size < sizeof(buf))
+ read_size += 1;
+ }
+
+ if (!g_input_stream_close(G_INPUT_STREAM(input_from_io_service), NULL, &error)) {
+ g_error("Error closing input stream: %s", error->message);
+ g_error_free(error);
+ }
+ g_object_unref(input_from_io_service);
+ input_from_io_service = NULL;
+
+ /* Now make the confirmStreams call
+ */
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "Confirming to com.litl.TestIO we got: '%s'", str->str);
+
+ big_dbus_proxy_call_json_async(test_io_proxy,
+ "confirmStreamsData",
+ on_confirm_streams_reply,
+ on_unexpected_error_reply,
+ "confirmStreamsData call from on_setup_streams_reply",
+ "received", DBUS_TYPE_STRING, &str->str,
+ NULL);
+
+ g_string_free(str, TRUE);
+}
+
+static void
+on_test_io_appeared(DBusConnection *connection,
+ const char *name,
+ const char *new_owner_unique_name,
+ void *data)
+{
+ const char *stream_path;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s appeared",
+ name);
+
+ test_io_proxy =
+ big_dbus_proxy_new(connection, new_owner_unique_name,
+ "/com/litl/test/object47",
+ "com.litl.TestIO");
+
+ input_from_io_service =
+ g_object_new(BIG_TYPE_DBUS_INPUT_STREAM, NULL);
+ big_dbus_input_stream_attach(input_from_io_service, connection);
+
+ stream_path = big_dbus_input_stream_get_path(input_from_io_service);
+
+ big_dbus_proxy_call_json_async(test_io_proxy,
+ "setupStreams",
+ on_setup_streams_reply,
+ on_unexpected_error_reply,
+ "setupStreams call from on_test_io_appeared",
+ "stream", DBUS_TYPE_STRING, &stream_path,
+ NULL);
+}
+
+static void
+on_test_io_vanished(DBusConnection *connection,
+ const char *name,
+ const char *old_owner_unique_name,
+ void *data)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "%s vanished", name);
+
+ another_child_down();
+}
+
+static BigDBusWatchNameFuncs watch_test_io_funcs = {
+ on_test_io_appeared,
+ on_test_io_vanished
+};
+
+void
+bigtest_test_func_util_dbus_client(void)
+{
+ pid_t result;
+ int status;
+
+ /* We have to fork() to avoid creating the DBusConnection*
+ * and thus preventing other dbus-using tests from forking
+ * children. This dbus bug, when the fix makes it into Ubuntu,
+ * should solve the problem:
+ * https://bugs.freedesktop.org/show_bug.cgi?id=15570
+ *
+ * The symptom of that bug is failure to connect to the bus in
+ * dbus-signals.c tests. The symptom of opening a connection
+ * before forking children is the connection FD shared among
+ * multiple processes, i.e. huge badness.
+ */
+ if (!g_test_trap_fork(0, 0)) {
+ /* We are the parent */
+ g_test_trap_assert_passed();
+ return;
+ }
+
+ /* All this stuff runs in the forked child only */
+
+ fork_child_test_service();
+ fork_child_test_io();
+
+ g_type_init();
+
+ g_assert(test_service_pid != 0);
+ g_assert(test_io_pid != 0);
+
+ big_dbus_watch_name(DBUS_BUS_SESSION,
+ "com.litl.TestService",
+ 0,
+ &watch_test_service_funcs,
+ NULL);
+
+ big_dbus_watch_name(DBUS_BUS_SESSION,
+ "com.litl.TestIO",
+ 0,
+ &watch_test_io_funcs,
+ NULL);
+
+ client_loop = g_main_loop_new(NULL, FALSE);
+
+ g_main_loop_run(client_loop);
+
+ if (test_service_proxy != NULL)
+ g_object_unref(test_service_proxy);
+
+ if (test_io_proxy != NULL)
+ g_object_unref(test_io_proxy);
+
+ /* child was killed already, or should have been */
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "waitpid() for first child");
+
+ result = waitpid(test_service_pid, &status, 0);
+ if (result < 0) {
+ g_error("Failed to waitpid() for forked child: %s", strerror(errno));
+ }
+
+ if (WIFEXITED(status) && WEXITSTATUS(status) != 0) {
+ g_error("Forked dbus service child exited with error code %d", WEXITSTATUS(status));
+ }
+
+ if (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM) {
+ g_error("Forked dbus service child exited on wrong signal number %d", WTERMSIG(status));
+ }
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "waitpid() for second child");
+
+ result = waitpid(test_io_pid, &status, 0);
+ if (result < 0) {
+ g_error("Failed to waitpid() for forked child: %s", strerror(errno));
+ }
+
+ if (WIFEXITED(status) && WEXITSTATUS(status) != 0) {
+ g_error("Forked dbus service child exited with error code %d", WEXITSTATUS(status));
+ }
+
+ if (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM) {
+ g_error("Forked dbus service child exited on wrong signal number %d", WTERMSIG(status));
+ }
+
+ big_debug(BIG_DEBUG_IN_TESTS, "dbus client test completed");
+
+ /* We want to kill dbus so the weak refs are NULL to start the
+ * next dbus-related test, which allows those tests
+ * to fork new child processes.
+ */
+ _big_dbus_dispose_info(_big_dbus_get_weak_ref(DBUS_BUS_SESSION));
+ dbus_shutdown();
+
+ big_debug(BIG_DEBUG_IN_TESTS, "dbus shut down");
+
+ /* FIXME this is here only while we need g_test_trap_fork(),
+ * see comment above.
+ */
+ exit(0);
+}
+
+/*
+ * First child service we forked, tests general dbus API
+ */
+
+static gboolean currently_have_test_service = FALSE;
+static GObject *test_service_object = NULL;
+
+static void
+test_service_get_some_stuff_sync(DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService got getSomeStuffSync");
+
+ g_assert(G_IS_OBJECT(data));
+
+ big_dbus_append_json_entry_BOOLEAN(out_iter,
+ "haveTestService",
+ currently_have_test_service);
+}
+
+static void
+test_service_always_error_sync(DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error)
+{
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService got alwaysErrorSync");
+
+ g_assert(G_IS_OBJECT(data));
+
+ dbus_set_error(error, DBUS_ERROR_FILE_NOT_FOUND,
+ "Did not find some kind of file! Help!");
+}
+
+static BigDBusJsonMethod test_service_methods[] = {
+ { "getSomeStuffSync", test_service_get_some_stuff_sync, NULL },
+ { "alwaysErrorSync", test_service_always_error_sync, NULL }
+};
+
+static void
+on_test_service_acquired(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(!currently_have_test_service);
+ currently_have_test_service = TRUE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService acquired by child");
+
+ big_dbus_register_json(connection,
+ "com.litl.TestIface",
+ test_service_methods,
+ G_N_ELEMENTS(test_service_methods));
+
+ test_service_object = g_object_new(G_TYPE_OBJECT, NULL);
+
+ big_dbus_register_g_object(connection,
+ "/com/litl/test/object42",
+ test_service_object,
+ "com.litl.TestIface");
+}
+
+static void
+on_test_service_lost(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(currently_have_test_service);
+ currently_have_test_service = FALSE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestService lost by child");
+
+ big_dbus_unregister_g_object(connection,
+ "/com/litl/test/object42");
+
+ big_dbus_unregister_json(connection,
+ "com.litl.TestIface");
+}
+
+static BigDBusNameOwnerFuncs test_service_funcs = {
+ "com.litl.TestService",
+ BIG_DBUS_NAME_SINGLE_INSTANCE,
+ on_test_service_acquired,
+ on_test_service_lost
+};
+
+static void
+do_test_service_child(void)
+{
+ GMainLoop *loop;
+
+ g_type_init();
+
+ loop = g_main_loop_new(NULL, FALSE);
+
+ big_dbus_acquire_name(DBUS_BUS_SESSION,
+ &test_service_funcs,
+ NULL);
+
+ g_main_loop_run(loop);
+
+ /* Don't return to the test program main() */
+ exit(0);
+}
+
+/*
+ * Second child service we forked, tests IO streams
+ */
+
+static gboolean currently_have_test_io = FALSE;
+static GObject *test_io_object = NULL;
+
+static BigDBusInputStream *io_input_stream = NULL;
+static BigDBusOutputStream *io_output_stream = NULL;
+
+static GString *input_buffer = NULL;
+
+static void
+test_io_confirm_streams_data(DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error)
+{
+ const char *received;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestIO got confirmStreamsData");
+
+ g_assert(G_IS_OBJECT(data));
+
+ received = extract_string_arg(in_iter, "received", error);
+ if (received == NULL) {
+ g_assert(error == NULL || dbus_error_is_set(error));
+ return;
+ }
+
+ if (strcmp(received, stream_data_from_io_service) != 0) {
+ g_error("We sent the main process '%s' but it says it got '%s'",
+ stream_data_from_io_service,
+ received);
+ return;
+ }
+
+ /* We were reading from the main process in the main loop.
+ * As a hack, we'll block in the main loop here to test.
+ * In a real app, never block in the main loop; you would
+ * just plain block, e.g. in g_input_stream_read(), if
+ * you wanted to block. But don't block.
+ */
+ while (io_input_stream != NULL) {
+ g_main_context_iteration(NULL, TRUE);
+ }
+
+ big_dbus_append_json_entry_STRING(out_iter,
+ "received",
+ input_buffer->str);
+
+ g_string_free(input_buffer, TRUE);
+ input_buffer = NULL;
+}
+
+static void
+on_input_ready(BigDBusInputStream *dbus_stream,
+ void *data)
+{
+ GInputStream *stream;
+ char buf[3];
+ gssize result;
+ GError *error;
+
+ stream = G_INPUT_STREAM(dbus_stream);
+
+ g_assert(dbus_stream == io_input_stream);
+
+ /* test get_received() */
+ g_assert(big_dbus_input_stream_get_received(dbus_stream) <= strlen(stream_data_to_io_service));
+
+ /* Should not block, since we got the ready-to-read signal */
+ error = NULL;
+ result = g_input_stream_read(G_INPUT_STREAM(io_input_stream),
+ buf,
+ sizeof(buf),
+ NULL,
+ &error);
+ if (result < 0) {
+ g_error("Error reading bytes from input stream: %s",
+ error->message);
+ g_error_free(error);
+ }
+
+ if (result == 0) {
+ /* EOF */
+ if (!g_input_stream_close(G_INPUT_STREAM(io_input_stream), NULL, &error)) {
+ g_error("Error closing input stream in child: %s", error->message);
+ g_error_free(error);
+ }
+ g_object_unref(io_input_stream);
+ io_input_stream = NULL;
+
+ return;
+ }
+
+ g_string_append_len(input_buffer, buf, result);
+
+ /* We should automatically get another callback if there's more data or EOF
+ * was not yet reached.
+ */
+}
+
+static void
+test_io_setup_streams(DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error)
+{
+ const char *stream_path;
+ gsize total;
+ gsize remaining;
+ gssize result;
+ GError *gerror;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestIO got setupStreams");
+
+ g_assert(G_IS_OBJECT(data));
+
+ stream_path = extract_string_arg(in_iter, "stream", error);
+
+ if (stream_path == NULL) {
+ g_assert(error == NULL || dbus_error_is_set(error));
+ return;
+ }
+
+ /* Create output stream to write to caller's path */
+ io_output_stream =
+ big_dbus_output_stream_new(connection,
+ dbus_message_get_sender(message),
+ stream_path);
+
+ /* Create input stream and return its path to caller */
+ io_input_stream =
+ g_object_new(BIG_TYPE_DBUS_INPUT_STREAM,
+ NULL);
+ big_dbus_input_stream_attach(io_input_stream,
+ connection);
+ stream_path = big_dbus_input_stream_get_path(io_input_stream);
+
+ big_dbus_append_json_entry_STRING(out_iter,
+ "stream",
+ stream_path);
+
+ /* Set up callbacks to read input stream in an async way */
+ input_buffer = g_string_new(NULL);
+
+ g_signal_connect(io_input_stream,
+ "ready-to-read",
+ G_CALLBACK(on_input_ready),
+ NULL);
+
+ /* Write to output stream */
+ gerror = NULL;
+ total = strlen(stream_data_from_io_service);
+ remaining = total;
+ while (remaining > 0) {
+ /* One byte at a time, fun torture test, totally silly in real
+ * code of course
+ */
+ result = g_output_stream_write(G_OUTPUT_STREAM(io_output_stream),
+ stream_data_from_io_service + (total - remaining),
+ 1,
+ NULL,
+ &gerror);
+ if (result < 0) {
+ g_assert(gerror != NULL);
+ g_error("Error writing to output stream: %s", gerror->message);
+ g_error_free(gerror);
+ }
+
+ if (result != 1) {
+ g_error("Wrote %d instead of 1 bytes", (int) result);
+ }
+
+ remaining -= 1;
+ }
+
+ /* flush should do nothing here, and is not needed, but
+ * just calling it to test it
+ */
+ if (!g_output_stream_flush(G_OUTPUT_STREAM(io_output_stream), NULL, &gerror)) {
+ g_assert(gerror != NULL);
+ g_error("Error flushing output stream: %s", gerror->message);
+ g_error_free(gerror);
+ }
+
+ if (!g_output_stream_close(G_OUTPUT_STREAM(io_output_stream), NULL, &gerror)) {
+ g_assert(gerror != NULL);
+ g_error("Error closing output stream: %s", gerror->message);
+ g_error_free(gerror);
+ }
+ g_object_unref(io_output_stream);
+ io_output_stream = NULL;
+
+
+ /* Now return, and wait for our input stream data to come in from
+ * the main process
+ */
+}
+
+static BigDBusJsonMethod test_io_methods[] = {
+ { "setupStreams", test_io_setup_streams, NULL },
+ { "confirmStreamsData", test_io_confirm_streams_data, NULL }
+};
+
+static void
+on_test_io_acquired(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(!currently_have_test_io);
+ currently_have_test_io = TRUE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestIO acquired by child");
+
+ big_dbus_register_json(connection,
+ "com.litl.TestIO",
+ test_io_methods,
+ G_N_ELEMENTS(test_io_methods));
+
+ test_io_object = g_object_new(G_TYPE_OBJECT, NULL);
+
+ big_dbus_register_g_object(connection,
+ "/com/litl/test/object47",
+ test_io_object,
+ "com.litl.TestIO");
+}
+
+static void
+on_test_io_lost(DBusConnection *connection,
+ const char *name,
+ void *data)
+{
+ g_assert(currently_have_test_io);
+ currently_have_test_io = FALSE;
+
+ big_debug(BIG_DEBUG_IN_TESTS,
+ "com.litl.TestIO lost by child");
+
+ big_dbus_unregister_g_object(connection,
+ "/com/litl/test/object47");
+
+ big_dbus_unregister_json(connection,
+ "com.litl.TestIO");
+}
+
+static BigDBusNameOwnerFuncs test_io_funcs = {
+ "com.litl.TestIO",
+ BIG_DBUS_NAME_SINGLE_INSTANCE,
+ on_test_io_acquired,
+ on_test_io_lost
+};
+
+static void
+do_test_io_child(void)
+{
+ GMainLoop *loop;
+
+ g_type_init();
+
+ loop = g_main_loop_new(NULL, FALSE);
+
+ big_dbus_acquire_name(DBUS_BUS_SESSION,
+ &test_io_funcs,
+ NULL);
+
+ g_main_loop_run(loop);
+
+ /* Don't return to the test program main() */
+ exit(0);
+}
+
+#endif /* BIG_BUILD_TESTS */
diff --git a/modules/dbus/util/dbus.h b/modules/dbus/util/dbus.h
new file mode 100644
index 0000000..5b31c39
--- /dev/null
+++ b/modules/dbus/util/dbus.h
@@ -0,0 +1,216 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* Copyright 2008 litl, LLC. All Rights Reserved. */
+
+#ifndef __BIG_UTIL_DBUS_H__
+#define __BIG_UTIL_DBUS_H__
+
+#include <glib-object.h>
+#include <dbus/dbus.h>
+
+G_BEGIN_DECLS
+
+/* Convenience macro */
+
+#define BIG_DBUS_NAME_FROM_TYPE(type) ((type) == DBUS_BUS_SESSION ? "session" : "system")
+
+/* Error names */
+#define BIG_DBUS_ERROR_STREAM_RECEIVER_CLOSED "com.litl.Error.Stream.ReceiverClosed"
+
+/*
+ * Monitor whether we are connected / not-connected to the bus
+ */
+
+typedef void (* BigDBusConnectionOpenedFunc) (DBusConnection *connection,
+ void *data);
+typedef void (* BigDBusConnectionClosedFunc) (DBusConnection *connection,
+ void *data);
+
+typedef struct {
+ DBusBusType which_bus;
+ BigDBusConnectionOpenedFunc opened;
+ BigDBusConnectionClosedFunc closed;
+} BigDBusConnectFuncs;
+
+void big_dbus_add_connect_funcs (const BigDBusConnectFuncs *funcs,
+ void *data);
+void big_dbus_remove_connect_funcs (const BigDBusConnectFuncs *funcs,
+ void *data);
+void big_dbus_add_connect_funcs_sync_notify (const BigDBusConnectFuncs *funcs,
+ void *data);
+
+
+void big_dbus_add_bus_weakref (DBusBusType bus_type,
+ DBusConnection **connection_p);
+void big_dbus_remove_bus_weakref (DBusBusType bus_type,
+ DBusConnection **connection_p);
+
+void big_dbus_try_connecting_now (DBusBusType which_bus);
+
+/*
+ * Own a bus name
+ *
+ */
+
+typedef enum {
+ BIG_DBUS_NAME_SINGLE_INSTANCE,
+ BIG_DBUS_NAME_MANY_INSTANCES
+} BigDBusNameType;
+
+typedef void (* BigDBusNameAcquiredFunc) (DBusConnection *connection,
+ const char *name,
+ void *data);
+typedef void (* BigDBusNameLostFunc) (DBusConnection *connection,
+ const char *name,
+ void *data);
+
+typedef struct {
+ const char *name;
+ BigDBusNameType type;
+ BigDBusNameAcquiredFunc acquired;
+ BigDBusNameLostFunc lost;
+} BigDBusNameOwnerFuncs;
+
+guint big_dbus_acquire_name (DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data);
+void big_dbus_release_name (DBusBusType bus_type,
+ const BigDBusNameOwnerFuncs *funcs,
+ void *data);
+void big_dbus_release_name_by_id (DBusBusType bus_type,
+ guint id);
+
+/*
+ * Keep track of someone else's bus name
+ *
+ */
+
+typedef enum {
+ BIG_DBUS_NAME_START_IF_NOT_FOUND = 0x1
+} BigDBusWatchNameFlags;
+
+typedef void (* BigDBusNameAppearedFunc) (DBusConnection *connection,
+ const char *name,
+ const char *new_owner_unique_name,
+ void *data);
+typedef void (* BigDBusNameVanishedFunc) (DBusConnection *connection,
+ const char *name,
+ const char *old_owner_unique_name,
+ void *data);
+
+typedef struct {
+ BigDBusNameAppearedFunc appeared;
+ BigDBusNameVanishedFunc vanished;
+} BigDBusWatchNameFuncs;
+
+void big_dbus_watch_name (DBusBusType bus_type,
+ const char *name,
+ BigDBusWatchNameFlags flags,
+ const BigDBusWatchNameFuncs *funcs,
+ void *data);
+void big_dbus_unwatch_name (DBusBusType bus_type,
+ const char *name,
+ const BigDBusWatchNameFuncs *funcs,
+ void *data);
+const char* big_dbus_get_watched_name_owner (DBusBusType bus_type,
+ const char *name);
+
+
+typedef void (* BigDBusSignalHandler) (DBusConnection *connection,
+ DBusMessage *message,
+ void *data);
+int big_dbus_watch_signal (DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ BigDBusSignalHandler handler,
+ void *data,
+ GDestroyNotify data_dnotify);
+void big_dbus_unwatch_signal (DBusBusType bus_type,
+ const char *sender,
+ const char *path,
+ const char *iface,
+ const char *name,
+ BigDBusSignalHandler handler,
+ void *data);
+void big_dbus_unwatch_signal_by_id (DBusBusType bus_type,
+ int id);
+
+/* A "json method" is a D-Bus method with signature
+ * DICT jsonMethodName(DICT)
+ * with the idea that it both takes and returns
+ * a JavaScript-style dictionary. This makes
+ * our JavaScript-to-dbus bindings really simple,
+ * and avoids a lot of futzing with dbus IDL.
+ *
+ * Of course it's completely annoying for someone
+ * using D-Bus in a "normal" way but the idea is just
+ * to use this to communicate within our own app
+ * that happens to consist of multiple processes
+ * and have bits written in JS.
+ */
+typedef void (* BigDBusJsonSyncMethodFunc) (DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ DBusMessageIter *out_iter,
+ void *data,
+ DBusError *error);
+
+typedef void (* BigDBusJsonAsyncMethodFunc) (DBusConnection *connection,
+ DBusMessage *message,
+ DBusMessageIter *in_iter,
+ void *data);
+
+typedef struct {
+ const char *name;
+ /* one of these two but not both should be non-NULL */
+ BigDBusJsonSyncMethodFunc sync_func;
+ BigDBusJsonAsyncMethodFunc async_func;
+} BigDBusJsonMethod;
+
+void big_dbus_register_json (DBusConnection *connection,
+ const char *iface_name,
+ const BigDBusJsonMethod *methods,
+ int n_methods);
+void big_dbus_unregister_json (DBusConnection *connection,
+ const char *iface_name);
+void big_dbus_register_g_object (DBusConnection *connection,
+ const char *path,
+ GObject *gobj,
+ const char *iface_name);
+void big_dbus_unregister_g_object (DBusConnection *connection,
+ const char *path);
+
+void big_dbus_append_json_entry (DBusMessageIter *dict_iter,
+ const char *key,
+ int dbus_type,
+ void *basic_value_p);
+void big_dbus_append_json_entry_STRING (DBusMessageIter *dict_iter,
+ const char *key,
+ const char *value);
+void big_dbus_append_json_entry_INT32 (DBusMessageIter *dict_iter,
+ const char *key,
+ dbus_int32_t value);
+void big_dbus_append_json_entry_DOUBLE (DBusMessageIter *dict_iter,
+ const char *key,
+ double value);
+void big_dbus_append_json_entry_BOOLEAN (DBusMessageIter *dict_iter,
+ const char *key,
+ dbus_bool_t value);
+void big_dbus_append_json_entry_EMPTY_ARRAY (DBusMessageIter *dict_iter,
+ const char *key);
+void big_dbus_append_json_entry_STRING_ARRAY (DBusMessageIter *dict_iter,
+ const char *key,
+ const char **value);
+
+gboolean big_dbus_message_iter_get_gsize (DBusMessageIter *iter,
+ gsize *value_p);
+gboolean big_dbus_message_iter_get_gssize (DBusMessageIter *iter,
+ gssize *value_p);
+
+void big_dbus_start_service(DBusConnection *connection,
+ const char *name);
+
+G_END_DECLS
+
+#endif /* __BIG_UTIL_DBUS_H__ */
diff --git a/modules/dbus/util/log.h b/modules/dbus/util/log.h
new file mode 100644
index 0000000..39299dd
--- /dev/null
+++ b/modules/dbus/util/log.h
@@ -0,0 +1,2 @@
+#define BIG_DEBUG_UTIL_DBUS 1
+#define big_debug(type,...)
diff --git a/modules/example/Makefile.am b/modules/example/Makefile.am
new file mode 100644
index 0000000..eebda2f
--- /dev/null
+++ b/modules/example/Makefile.am
@@ -0,0 +1,28 @@
+if BUILD_EXAMPLE_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_example.la
+
+libseed_example_la_SOURCES = \
+ seed-example.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_example_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_example_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
+
diff --git a/modules/example/Makefile.in b/modules/example/Makefile.in
new file mode 100644
index 0000000..edbb874
--- /dev/null
+++ b/modules/example/Makefile.in
@@ -0,0 +1,653 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/example
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_EXAMPLE_MODULE_TRUE@libseed_example_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_example_la_SOURCES_DIST = seed-example.c
+@BUILD_EXAMPLE_MODULE_TRUE@am_libseed_example_la_OBJECTS = \
+@BUILD_EXAMPLE_MODULE_TRUE@ seed-example.lo
+libseed_example_la_OBJECTS = $(am_libseed_example_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_example_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_example_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_EXAMPLE_MODULE_TRUE@am_libseed_example_la_rpath = -rpath \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_example_la_SOURCES)
+DIST_SOURCES = $(am__libseed_example_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_EXAMPLE_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_EXAMPLE_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_EXAMPLE_MODULE_TRUE@ libseed_example.la
+
+@BUILD_EXAMPLE_MODULE_TRUE@libseed_example_la_SOURCES = \
+@BUILD_EXAMPLE_MODULE_TRUE@ seed-example.c
+
+@BUILD_EXAMPLE_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_EXAMPLE_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_EXAMPLE_MODULE_TRUE@libseed_example_la_LDFLAGS = \
+@BUILD_EXAMPLE_MODULE_TRUE@ -module -avoid-version \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_EXAMPLE_MODULE_TRUE@libseed_example_la_LIBADD = \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_EXAMPLE_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/example/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/example/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_example.la: $(libseed_example_la_OBJECTS) $(libseed_example_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_example_la_LINK) $(am_libseed_example_la_rpath) $(libseed_example_la_OBJECTS) $(libseed_example_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-example.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/example/seed-example.c b/modules/example/seed-example.c
new file mode 100644
index 0000000..111bc04
--- /dev/null
+++ b/modules/example/seed-example.c
@@ -0,0 +1,28 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <glib.h>
+#include <seed-module.h>
+
+SeedObject
+seed_module_init(SeedEngine * eng)
+{
+ g_print("Hello Seed Module World\n");
+ return seed_make_object (eng->context, NULL, NULL);
+}
diff --git a/modules/ffi/Makefile.am b/modules/ffi/Makefile.am
new file mode 100644
index 0000000..4064d45
--- /dev/null
+++ b/modules/ffi/Makefile.am
@@ -0,0 +1,37 @@
+if BUILD_FFI_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+EXTRA_DIST = \
+ test-sin.js \
+ test-strcmp.js \
+ test-strdup.js \
+ test-xlib.js
+
+seedlib_LTLIBRARIES = \
+ libseed_ffi.la
+
+libseed_ffi_la_SOURCES = \
+ seed-ffi.c
+
+libseed_ffi_la_CFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS) \
+ $(FFI_CFLAGS)
+
+libseed_ffi_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(FFI_LDFLAGS)
+
+libseed_ffi_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
+
diff --git a/modules/ffi/Makefile.in b/modules/ffi/Makefile.in
new file mode 100644
index 0000000..1dedc04
--- /dev/null
+++ b/modules/ffi/Makefile.in
@@ -0,0 +1,669 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/ffi
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_FFI_MODULE_TRUE@libseed_ffi_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_FFI_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_ffi_la_SOURCES_DIST = seed-ffi.c
+@BUILD_FFI_MODULE_TRUE@am_libseed_ffi_la_OBJECTS = \
+@BUILD_FFI_MODULE_TRUE@ libseed_ffi_la-seed-ffi.lo
+libseed_ffi_la_OBJECTS = $(am_libseed_ffi_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_ffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_ffi_la_CFLAGS) $(CFLAGS) $(libseed_ffi_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_FFI_MODULE_TRUE@am_libseed_ffi_la_rpath = -rpath $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_ffi_la_SOURCES)
+DIST_SOURCES = $(am__libseed_ffi_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_FFI_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_FFI_MODULE_TRUE@EXTRA_DIST = \
+@BUILD_FFI_MODULE_TRUE@ test-sin.js \
+@BUILD_FFI_MODULE_TRUE@ test-strcmp.js \
+@BUILD_FFI_MODULE_TRUE@ test-strdup.js \
+@BUILD_FFI_MODULE_TRUE@ test-xlib.js
+
+@BUILD_FFI_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_FFI_MODULE_TRUE@ libseed_ffi.la
+
+@BUILD_FFI_MODULE_TRUE@libseed_ffi_la_SOURCES = \
+@BUILD_FFI_MODULE_TRUE@ seed-ffi.c
+
+@BUILD_FFI_MODULE_TRUE@libseed_ffi_la_CFLAGS = \
+@BUILD_FFI_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_FFI_MODULE_TRUE@ -Wall \
+@BUILD_FFI_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_FFI_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_FFI_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS) \
+@BUILD_FFI_MODULE_TRUE@ $(FFI_CFLAGS)
+
+@BUILD_FFI_MODULE_TRUE@libseed_ffi_la_LDFLAGS = \
+@BUILD_FFI_MODULE_TRUE@ -module -avoid-version \
+@BUILD_FFI_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_FFI_MODULE_TRUE@ $(FFI_LDFLAGS)
+
+@BUILD_FFI_MODULE_TRUE@libseed_ffi_la_LIBADD = \
+@BUILD_FFI_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_FFI_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/ffi/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/ffi/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_ffi.la: $(libseed_ffi_la_OBJECTS) $(libseed_ffi_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_ffi_la_LINK) $(am_libseed_ffi_la_rpath) $(libseed_ffi_la_OBJECTS) $(libseed_ffi_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_ffi_la-seed-ffi.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_ffi_la-seed-ffi.lo: seed-ffi.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_ffi_la_CFLAGS) $(CFLAGS) -MT libseed_ffi_la-seed-ffi.lo -MD -MP -MF $(DEPDIR)/libseed_ffi_la-seed-ffi.Tpo -c -o libseed_ffi_la-seed-ffi.lo `test -f 'seed-ffi.c' || echo '$(srcdir)/'`seed-ffi.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_ffi_la-seed-ffi.Tpo $(DEPDIR)/libseed_ffi_la-seed-ffi.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-ffi.c' object='libseed_ffi_la-seed-ffi.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_ffi_la_CFLAGS) $(CFLAGS) -c -o libseed_ffi_la-seed-ffi.lo `test -f 'seed-ffi.c' || echo '$(srcdir)/'`seed-ffi.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/ffi/seed-ffi.c b/modules/ffi/seed-ffi.c
new file mode 100644
index 0000000..cbf93f7
--- /dev/null
+++ b/modules/ffi/seed-ffi.c
@@ -0,0 +1,513 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <glib.h>
+#include <seed-module.h>
+
+#include <ffi.h>
+
+SeedEngine *eng;
+SeedObject namespace_ref;
+
+SeedClass ffi_library_class;
+SeedClass ffi_function_class;
+
+typedef struct _seed_ffi_function_priv {
+ gchar *name;
+ gpointer symbol;
+
+ GType *args;
+ gint n_args;
+
+ GType ret_val;
+
+ SeedObject signature_obj;
+ SeedObject module_obj;
+} seed_ffi_function_priv;
+
+typedef struct _seed_ffi_library_priv {
+ GModule *mod;
+ GHashTable *symbols;
+} seed_ffi_library_priv;
+
+static ffi_type *
+gtype_to_ffi_type (SeedContext ctx,
+ SeedValue value,
+ GType otype,
+ GArgument *garg,
+ gpointer *arg,
+ SeedException *exception)
+{
+ ffi_type *return_type;
+ GType type = g_type_fundamental (otype);
+ g_assert (type != G_TYPE_INVALID);
+
+ switch (type)
+ {
+ case G_TYPE_BOOLEAN:
+ case G_TYPE_CHAR:
+ case G_TYPE_INT:
+ return_type = &ffi_type_sint;
+ garg->v_int = seed_value_to_int (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_UCHAR:
+ case G_TYPE_UINT:
+ return_type = &ffi_type_uint;
+ garg->v_uint = seed_value_to_uint (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_STRING:
+ return_type = &ffi_type_pointer;
+ garg->v_pointer = seed_value_to_string (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_OBJECT:
+ // case G_TYPE_BOXED:
+ case G_TYPE_POINTER:
+ return_type = &ffi_type_pointer;
+ garg->v_pointer = seed_pointer_get_pointer (ctx, value);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_FLOAT:
+ return_type = &ffi_type_float;
+ garg->v_float = seed_value_to_float (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_DOUBLE:
+ return_type = &ffi_type_double;
+ garg->v_double = seed_value_to_double (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_LONG:
+ return_type = &ffi_type_slong;
+ garg->v_uint = seed_value_to_uint (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_ULONG:
+ return_type = &ffi_type_ulong;
+ garg->v_ulong = seed_value_to_ulong (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_INT64:
+ return_type = &ffi_type_sint64;
+ garg->v_int64 = seed_value_to_int64 (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ case G_TYPE_UINT64:
+ return_type = &ffi_type_uint64;
+ garg->v_uint64 = seed_value_to_uint64 (ctx, value, exception);
+ *arg = (gpointer)garg;
+ break;
+ default:
+ g_warning ("Unsupported fundamental in type: %s", g_type_name (type));
+ return_type = &ffi_type_pointer;
+ garg->v_pointer = NULL;
+ *arg = (garg->v_pointer);
+ break;
+ }
+ return return_type;
+}
+
+static ffi_type *
+return_type_to_ffi_type (GType otype)
+{
+ GType type = g_type_fundamental (otype);
+ g_assert (type != G_TYPE_INVALID);
+
+ switch (type)
+ {
+ case G_TYPE_BOOLEAN:
+ case G_TYPE_CHAR:
+ case G_TYPE_INT:
+ return &ffi_type_sint;
+ break;
+ case G_TYPE_UCHAR:
+ case G_TYPE_UINT:
+ return &ffi_type_uint;
+ break;
+ case G_TYPE_STRING:
+ return &ffi_type_pointer;
+ break;
+ case G_TYPE_OBJECT:
+ // case G_TYPE_BOXED:
+ case G_TYPE_POINTER:
+ return &ffi_type_pointer;
+ break;
+ case G_TYPE_FLOAT:
+ return &ffi_type_float;
+ break;
+ case G_TYPE_DOUBLE:
+ return &ffi_type_double;
+ break;
+ case G_TYPE_LONG:
+ return &ffi_type_slong;
+ break;
+ case G_TYPE_ULONG:
+ return &ffi_type_ulong;
+ break;
+ case G_TYPE_INT64:
+ return &ffi_type_sint64;
+ break;
+ case G_TYPE_UINT64:
+ return &ffi_type_uint64;
+ break;
+ default:
+ g_warning ("Unsupported fundamental out type: %s", g_type_name (type));
+ return &ffi_type_pointer;
+ break;
+ }
+}
+
+static SeedValue
+seed_ffi_get_signature (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ seed_ffi_function_priv *priv = seed_object_get_private (this_object);
+
+ if (priv->signature_obj)
+ return priv->signature_obj;
+ else
+ return seed_make_null (ctx);
+}
+
+static gboolean
+seed_ffi_build_signature (SeedContext ctx,
+ seed_ffi_function_priv *priv,
+ SeedObject sig,
+ SeedException *exception)
+{
+ SeedObject arguments;
+ SeedValue ret_type_ref, length_ref;
+ guint length, i;
+
+ arguments = seed_object_get_property (ctx, sig, "arguments");
+ ret_type_ref = seed_object_get_property (ctx, sig, "returns");
+
+ if (!seed_value_is_object (ctx, arguments))
+ {
+ seed_make_exception (ctx, exception, "FFIError",
+ "Signature arguments member must be an array describing argument types");
+ return FALSE;
+ }
+ length_ref = seed_object_get_property (ctx, arguments, "length");
+
+ length = seed_value_to_uint (ctx, length_ref, exception);
+ priv->n_args = length;
+ priv->args = g_slice_alloc (length * sizeof (GType));
+
+ for (i = 0; i < length; i++)
+ {
+ SeedValue type = seed_object_get_property_at_index (ctx, arguments,
+ i, exception);
+ priv->args[i] = seed_value_to_int (ctx, type, exception);
+ }
+ priv->ret_val = seed_value_to_int (ctx, ret_type_ref, exception);
+
+ priv->signature_obj = sig;
+ seed_value_protect (ctx, sig);
+
+ return TRUE;
+}
+
+static gboolean
+seed_ffi_set_signature (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ seed_ffi_function_priv *priv = seed_object_get_private (this_object);
+
+ if (priv->signature_obj)
+ {
+ seed_make_exception (ctx, exception, "FFIError",
+ "Can not reset signature of function once set");
+ return FALSE;
+ }
+ else if (!seed_value_is_object (ctx, value))
+ {
+ seed_make_exception (ctx, exception, "FFIError",
+ "Signature must be an object");
+ return FALSE;
+ }
+ else
+ {
+ if (!seed_ffi_build_signature (ctx, priv, (SeedObject) value, exception))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void
+seed_ffi_function_finalize (SeedObject obj)
+{
+ seed_ffi_function_priv *priv = seed_object_get_private (obj);
+
+ if (priv->signature_obj)
+ {
+ seed_value_unprotect (eng->context, priv->signature_obj);
+
+ g_slice_free1 (priv->n_args * sizeof(GType), priv->args);
+ }
+
+ g_free (priv->name);
+ g_slice_free1 (sizeof(seed_ffi_function_priv), priv);
+
+ seed_value_unprotect (eng->context, priv->module_obj);
+}
+
+static SeedObject
+seed_ffi_make_function (SeedContext ctx, SeedObject module_obj, gpointer symbol, const gchar *name, GHashTable *symbols)
+{
+ SeedValue ret;
+ seed_ffi_function_priv *priv =
+ g_slice_alloc0 (sizeof (seed_ffi_function_priv));
+
+ priv->symbol = symbol;
+ priv->module_obj = module_obj;
+ priv->name = g_strdup (name);
+
+ ret = seed_make_object (ctx, ffi_function_class, priv);
+ seed_value_protect (ctx, ret);
+
+ g_hash_table_insert (symbols, g_strdup (name), ret);
+ return ret;
+}
+
+static SeedValue
+value_from_ffi_type (SeedContext ctx,
+ GType otype,
+ GArgument *value,
+ SeedException *exception)
+{
+ switch (g_type_fundamental (otype))
+ {
+ case G_TYPE_INT:
+ return seed_value_from_int (ctx, value->v_int, exception);
+ break;
+ case G_TYPE_FLOAT:
+ return seed_value_from_float (ctx, value->v_float, exception);
+ break;
+ case G_TYPE_DOUBLE:
+ return seed_value_from_double (ctx, value->v_double, exception);
+ break;
+ case G_TYPE_BOOLEAN:
+ return seed_value_from_boolean (ctx, value->v_boolean, exception);
+ break;
+ case G_TYPE_STRING:
+ return seed_value_from_string (ctx, value->v_pointer, exception);
+ break;
+ case G_TYPE_CHAR:
+ return seed_value_from_char (ctx, value->v_int, exception);
+ break;
+ case G_TYPE_UCHAR:
+ return seed_value_from_uchar (ctx, value->v_uint, exception);
+ break;
+ case G_TYPE_UINT:
+ return seed_value_from_uint (ctx, value->v_uint, exception);
+ break;
+ case G_TYPE_POINTER:
+ return seed_make_pointer (ctx, value->v_pointer);
+ break;
+ case G_TYPE_LONG:
+ return seed_value_from_long (ctx, value->v_long, exception);
+ break;
+ case G_TYPE_ULONG:
+ return seed_value_from_ulong (ctx, value->v_ulong, exception);
+ break;
+ case G_TYPE_INT64:
+ return seed_value_from_int64 (ctx, value->v_int64, exception);
+ break;
+ case G_TYPE_UINT64:
+ return seed_value_from_uint64 (ctx, value->v_uint64, exception);
+ break;
+ case G_TYPE_NONE:
+ return seed_make_null (ctx);
+ default:
+ g_warning ("Unsupported fundamental type in value_from_ffi_type: %s",
+ g_type_name(g_type_fundamental (otype)));
+ return seed_make_null (ctx);
+ }
+}
+
+static SeedValue
+seed_ffi_function_call (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ GArgument rvalue;
+ GArgument *gargs;
+ ffi_type *rtype;
+ ffi_type **atypes;
+ gpointer *args;
+ int i;
+ ffi_cif cif;
+
+ seed_ffi_function_priv *priv = seed_object_get_private (function);
+
+ if (argument_count != priv->n_args)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError", "%s expected %d arguments got %Zd",
+ priv->name, priv->n_args, argument_count);
+ return seed_make_null (ctx);
+ }
+ atypes = g_alloca (sizeof (ffi_type *) * (argument_count));
+ args = g_alloca (sizeof (gpointer) * (argument_count));
+ gargs = g_alloca (sizeof (GArgument) * (argument_count));
+
+ for (i = 0; i < argument_count; i++)
+ {
+ atypes[i] = gtype_to_ffi_type (ctx, arguments[i], priv->args[i], &(gargs[i]), &args[i],exception);
+ }
+ rtype = return_type_to_ffi_type (priv->ret_val);
+
+ if (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, argument_count, rtype, atypes) != FFI_OK)
+ g_assert_not_reached();
+
+ ffi_call (&cif, priv->symbol, &rvalue, args);
+
+ return value_from_ffi_type (ctx, priv->ret_val, &rvalue, exception);
+}
+
+static SeedValue
+seed_ffi_library_get_property (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ SeedValue ret;
+ GModule *mod;
+ gchar *prop;
+ gsize len = seed_string_get_maximum_size (property_name);
+ gpointer symbol;
+ seed_ffi_library_priv *priv;
+
+ prop = g_alloca (len);
+ seed_string_to_utf8_buffer (property_name, prop, len);
+
+ priv = seed_object_get_private (this_object);
+ mod = priv->mod;
+
+ if ((ret = g_hash_table_lookup (priv->symbols, prop)))
+ return ret;
+
+ if (!g_module_symbol (mod, prop, &symbol))
+ {
+ return NULL;
+ }
+ return seed_ffi_make_function (ctx, this_object, symbol, prop, priv->symbols);
+}
+
+
+static SeedObject
+seed_ffi_construct_library (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ GModule *mod;
+ SeedObject ret;
+ gchar *filename;
+ seed_ffi_library_priv *priv;
+
+ if (argument_count != 1 && argument_count != 0)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError",
+ "ffi.Library constructor expects 1 argument (filename, or none to use NULL GModule), got %Zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+ if (argument_count == 1)
+ filename = seed_value_to_string (ctx, arguments[0], exception);
+ else
+ filename = NULL;
+
+ mod = g_module_open (filename, G_MODULE_BIND_LOCAL | G_MODULE_BIND_LAZY);
+ if (!mod)
+ {
+ seed_make_exception (ctx, exception, "GModuleError",
+ "Opening module (%s) failed with: %s",
+ filename, g_module_error ());
+ g_free (filename);
+ return seed_make_null (ctx);
+ }
+
+ priv = g_slice_alloc (sizeof (seed_ffi_library_priv));
+ priv->mod = mod;
+
+ // TODO: Value destroy function.
+ priv->symbols = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, NULL);
+
+ ret = seed_make_object (ctx, ffi_library_class, priv);
+
+ g_free (filename);
+
+ return ret;
+}
+
+static void
+seed_ffi_library_finalize (SeedObject obj)
+{
+ seed_ffi_library_priv *priv;
+ priv = seed_object_get_private (obj);
+
+ g_module_close (priv->mod);
+}
+
+seed_static_value ffi_function_values [] = {
+ {"signature", seed_ffi_get_signature, seed_ffi_set_signature, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {NULL, NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine *local_eng)
+{
+ SeedObject library_constructor;
+ seed_class_definition ffi_library_def = seed_empty_class;
+ seed_class_definition ffi_function_def = seed_empty_class;
+
+ ffi_library_def.class_name = "FFILibrary";
+ ffi_library_def.finalize = seed_ffi_library_finalize;
+ ffi_library_def.get_property = seed_ffi_library_get_property;
+
+ ffi_function_def.class_name = "FFIFunction";
+ ffi_function_def.finalize = seed_ffi_function_finalize;
+ ffi_function_def.static_values = ffi_function_values;
+ ffi_function_def.call_as_function = seed_ffi_function_call;
+
+ ffi_library_class = seed_create_class (&ffi_library_def);
+ ffi_function_class = seed_create_class (&ffi_function_def);
+
+ eng = local_eng;
+ namespace_ref = seed_make_object (eng->context, NULL, NULL);
+
+ library_constructor = seed_make_constructor (eng->context, ffi_library_class, seed_ffi_construct_library);
+ seed_object_set_property (eng->context, namespace_ref, "Library", library_constructor);
+
+ return namespace_ref;
+}
diff --git a/modules/ffi/test-sin.js b/modules/ffi/test-sin.js
new file mode 100755
index 0000000..2b89a70
--- /dev/null
+++ b/modules/ffi/test-sin.js
@@ -0,0 +1,12 @@
+#!/usr/bin/env seed
+GObject = imports.gi.GObject;
+ffi = imports.ffi;
+
+var app = new ffi.Library();
+var sin = app.sin;
+
+sin.signature = {arguments: [GObject.TYPE_DOUBLE],
+ returns: GObject.TYPE_DOUBLE};
+
+print(sin(3.14));
+
diff --git a/modules/ffi/test-strcmp.js b/modules/ffi/test-strcmp.js
new file mode 100755
index 0000000..4419134
--- /dev/null
+++ b/modules/ffi/test-strcmp.js
@@ -0,0 +1,13 @@
+#!/usr/bin/env seed
+GObject = imports.gi.GObject;
+ffi = imports.ffi;
+
+var app = new ffi.Library();
+var strcmp = app.strcmp;
+
+strcmp.signature = {arguments: [GObject.TYPE_STRING, GObject.TYPE_STRING],
+ returns: GObject.TYPE_INT};
+
+print(strcmp("Hi", "Hi"));
+print(strcmp("Boo", "Foo"));
+print(strcmp("Foo", "Boo"));
diff --git a/modules/ffi/test-strdup.js b/modules/ffi/test-strdup.js
new file mode 100755
index 0000000..1c9ced1
--- /dev/null
+++ b/modules/ffi/test-strdup.js
@@ -0,0 +1,12 @@
+#!/usr/bin/env seed
+GObject = imports.gi.GObject;
+ffi = imports.ffi;
+
+var app = new ffi.Library();
+var strdup = app.strdup;
+
+strdup.signature = {arguments: [GObject.TYPE_STRING],
+ returns: GObject.TYPE_STRING};
+
+print(strdup("Hi"));
+
diff --git a/modules/ffi/test-xlib.js b/modules/ffi/test-xlib.js
new file mode 100755
index 0000000..20f17b9
--- /dev/null
+++ b/modules/ffi/test-xlib.js
@@ -0,0 +1,24 @@
+#!/usr/bin/env seed
+GObject = imports.gi.GObject;
+ffi = imports.ffi;
+
+signatures = {
+ "XOpenDisplay": {arguments: [GObject.TYPE_STRING],
+ returns: GObject.TYPE_POINTER},
+ "XDefaultScreen": {arguments: [GObject.TYPE_POINTER],
+ returns: GObject.TYPE_INT}
+};
+
+var XLib = new ffi.Library("/usr/lib/libX11.so");
+
+var XOpenDisplay = XLib.XOpenDisplay;
+var XDefaultScreen = XLib.XDefaultScreen;
+
+for (var i in signatures){
+ XLib[i].signature = signatures[i];
+}
+
+display = XOpenDisplay(":0.0");
+print(display);
+
+print(XDefaultScreen(display));
diff --git a/modules/gettext/Makefile.am b/modules/gettext/Makefile.am
new file mode 100644
index 0000000..2a686cd
--- /dev/null
+++ b/modules/gettext/Makefile.am
@@ -0,0 +1,28 @@
+if BUILD_GETTEXT_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_gettext.la
+
+libseed_gettext_la_SOURCES = \
+ seed-gettext.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_gettext_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_gettext_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
+
diff --git a/modules/gettext/Makefile.in b/modules/gettext/Makefile.in
new file mode 100644
index 0000000..ae7ad7f
--- /dev/null
+++ b/modules/gettext/Makefile.in
@@ -0,0 +1,653 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/gettext
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_GETTEXT_MODULE_TRUE@libseed_gettext_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_GETTEXT_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_gettext_la_SOURCES_DIST = seed-gettext.c
+@BUILD_GETTEXT_MODULE_TRUE@am_libseed_gettext_la_OBJECTS = \
+@BUILD_GETTEXT_MODULE_TRUE@ seed-gettext.lo
+libseed_gettext_la_OBJECTS = $(am_libseed_gettext_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_gettext_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_gettext_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_GETTEXT_MODULE_TRUE@am_libseed_gettext_la_rpath = -rpath \
+@BUILD_GETTEXT_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_gettext_la_SOURCES)
+DIST_SOURCES = $(am__libseed_gettext_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_GETTEXT_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_GETTEXT_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_GETTEXT_MODULE_TRUE@ libseed_gettext.la
+
+@BUILD_GETTEXT_MODULE_TRUE@libseed_gettext_la_SOURCES = \
+@BUILD_GETTEXT_MODULE_TRUE@ seed-gettext.c
+
+@BUILD_GETTEXT_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_GETTEXT_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_GETTEXT_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_GETTEXT_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_GETTEXT_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_GETTEXT_MODULE_TRUE@libseed_gettext_la_LDFLAGS = \
+@BUILD_GETTEXT_MODULE_TRUE@ -module -avoid-version \
+@BUILD_GETTEXT_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_GETTEXT_MODULE_TRUE@libseed_gettext_la_LIBADD = \
+@BUILD_GETTEXT_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_GETTEXT_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/gettext/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/gettext/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_gettext.la: $(libseed_gettext_la_OBJECTS) $(libseed_gettext_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_gettext_la_LINK) $(am_libseed_gettext_la_rpath) $(libseed_gettext_la_OBJECTS) $(libseed_gettext_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-gettext.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/gettext/seed-gettext.c b/modules/gettext/seed-gettext.c
new file mode 100644
index 0000000..a1b285f
--- /dev/null
+++ b/modules/gettext/seed-gettext.c
@@ -0,0 +1,326 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed-module.h>
+
+#include <glib/gi18n.h>
+#include <locale.h>
+
+SeedObject ns_ref;
+SeedEngine * eng;
+
+static SeedValue
+seed_gettext_gettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar * msgid;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.gettext", 1);
+
+ msgid = seed_value_to_string (ctx, arguments[0], exception);
+
+ ret = seed_value_from_string (ctx, gettext(msgid), exception);
+
+ g_free(msgid);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_textdomain (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar * domain_name;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.textdomain", 1);
+
+ domain_name = seed_value_to_string (ctx, arguments[0], exception);
+
+ ret = seed_value_from_string (ctx, textdomain(domain_name), exception);
+ g_free(domain_name);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_bindtextdomain (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * dirname;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.bindtextdomain", 2);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ dirname = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx,
+ bindtextdomain(domainname, dirname),
+ exception);
+ g_free(domainname);
+ g_free(dirname);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_bind_textdomain_codeset (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * codeset;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.bind_textdomain_codeset", 2);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ codeset = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx,
+ bind_textdomain_codeset(domainname, codeset),
+ exception);
+ g_free(domainname);
+ g_free(codeset);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dgettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * msgid;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.dgettext", 2);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx, dgettext(domainname, msgid), exception);
+ g_free(domainname);
+ g_free(msgid);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dcgettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * msgid;
+ gint category;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.dcgettext", 3);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ category = seed_value_to_int (ctx, args[2], exception);
+
+ ret = seed_value_from_string (ctx,
+ dcgettext(domainname, msgid, category),
+ exception);
+ g_free(domainname);
+ g_free(msgid);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_ngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * msgid, * msgid_plural;
+ guint n;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.ngettext", 3);
+
+ msgid = seed_value_to_string (ctx, args[0], exception);
+ msgid_plural = seed_value_to_string (ctx, args[1], exception);
+ n = seed_value_to_uint (ctx, args[2], exception);
+
+ ret = seed_value_from_string (ctx, ngettext(msgid, msgid_plural, n), exception);
+ g_free(msgid);
+ g_free(msgid_plural);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * msgid, * msgid_plural;
+ guint n;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.dngettext", 4);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ msgid_plural = seed_value_to_string (ctx, args[2], exception);
+ n = seed_value_to_uint (ctx, args[3], exception);
+
+ ret = seed_value_from_string (ctx, dngettext(domainname, msgid, msgid_plural, n), exception);
+ g_free(domainname);
+ g_free(msgid);
+ g_free(msgid_plural);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dcngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * domainname, * msgid, * msgid_plural;
+ guint n;
+ gint category;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.dcngettext", 5);
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ msgid_plural = seed_value_to_string (ctx, args[2], exception);
+ n = seed_value_to_uint (ctx, args[3], exception);
+ category = seed_value_to_int (ctx, args[4], exception);
+
+ ret = seed_value_from_string (ctx,
+ dcngettext(domainname, msgid, msgid_plural, n, category),
+ exception);
+ g_free(domainname);
+ g_free(msgid);
+ g_free(msgid_plural);
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_setlocale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar * locale;
+ gint category;
+ SeedValue ret;
+
+ CHECK_ARG_COUNT("gettext.setlocale", 2);
+
+ category = seed_value_to_int (ctx, args[0], exception);
+ locale = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx,
+ setlocale(category, locale),
+ exception);
+ g_free(locale);
+
+ return ret;
+}
+
+seed_static_function gettext_funcs[] = {
+ {"gettext", seed_gettext_gettext, 0},
+ {"textdomain", seed_gettext_textdomain, 0},
+ {"bindtextdomain", seed_gettext_bindtextdomain, 0},
+ {"bind_textdomain_codeset", seed_gettext_bind_textdomain_codeset, 0},
+ {"dgettext", seed_gettext_dgettext, 0},
+ {"dcgettext", seed_gettext_dcgettext, 0},
+ {"ngettext", seed_gettext_ngettext, 0},
+ {"dngettext", seed_gettext_dngettext, 0},
+ {"dcngettext", seed_gettext_dcngettext, 0},
+ {"setlocale", seed_gettext_setlocale, 0},
+ {"gettext", seed_gettext_gettext, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine *local_eng)
+{
+ SeedGlobalContext ctx = local_eng->context;
+
+ seed_class_definition gettext_ns_class_def = seed_empty_class;
+ gettext_ns_class_def.static_functions = gettext_funcs;
+
+ SeedClass gettext_ns_class = seed_create_class(&gettext_ns_class_def);
+
+ ns_ref = seed_make_object (ctx, gettext_ns_class, NULL);
+ seed_value_protect (ctx, ns_ref);
+
+ /* define enums for setlocale. Where to put them? */
+
+ DEFINE_ENUM_MEMBER(ns_ref, LC_CTYPE);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_NUMERIC);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_TIME);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_COLLATE);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_MONETARY);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_MESSAGES);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_ALL);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_PAPER);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_NAME);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_ADDRESS);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_TELEPHONE);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_MEASUREMENT);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_IDENTIFICATION);
+ DEFINE_ENUM_MEMBER(ns_ref, LC_CTYPE);
+
+ return ns_ref;
+}
+
diff --git a/modules/gtkbuilder/Makefile.am b/modules/gtkbuilder/Makefile.am
new file mode 100644
index 0000000..8937eeb
--- /dev/null
+++ b/modules/gtkbuilder/Makefile.am
@@ -0,0 +1,32 @@
+if BUILD_GTKBUILDER_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_gtkbuilder.la
+
+libseed_gtkbuilder_la_SOURCES = \
+ seed-gtkbuilder.c
+
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_gtkbuilder_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GTK_LDFLAGS) \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_gtkbuilder_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(GTK_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
+
diff --git a/modules/gtkbuilder/Makefile.in b/modules/gtkbuilder/Makefile.in
new file mode 100644
index 0000000..958c89f
--- /dev/null
+++ b/modules/gtkbuilder/Makefile.in
@@ -0,0 +1,657 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/gtkbuilder
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_GTKBUILDER_MODULE_TRUE@libseed_gtkbuilder_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_gtkbuilder_la_SOURCES_DIST = seed-gtkbuilder.c
+@BUILD_GTKBUILDER_MODULE_TRUE@am_libseed_gtkbuilder_la_OBJECTS = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ seed-gtkbuilder.lo
+libseed_gtkbuilder_la_OBJECTS = $(am_libseed_gtkbuilder_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_gtkbuilder_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_gtkbuilder_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_GTKBUILDER_MODULE_TRUE@am_libseed_gtkbuilder_la_rpath = -rpath \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_gtkbuilder_la_SOURCES)
+DIST_SOURCES = $(am__libseed_gtkbuilder_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_GTKBUILDER_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_GTKBUILDER_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ libseed_gtkbuilder.la
+
+@BUILD_GTKBUILDER_MODULE_TRUE@libseed_gtkbuilder_la_SOURCES = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ seed-gtkbuilder.c
+
+@BUILD_GTKBUILDER_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(GTK_CFLAGS) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_GTKBUILDER_MODULE_TRUE@libseed_gtkbuilder_la_LDFLAGS = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ -module -avoid-version \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(GTK_LDFLAGS) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_GTKBUILDER_MODULE_TRUE@libseed_gtkbuilder_la_LIBADD = \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(GTK_LIBS) \
+@BUILD_GTKBUILDER_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/gtkbuilder/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/gtkbuilder/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_gtkbuilder.la: $(libseed_gtkbuilder_la_OBJECTS) $(libseed_gtkbuilder_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_gtkbuilder_la_LINK) $(am_libseed_gtkbuilder_la_rpath) $(libseed_gtkbuilder_la_OBJECTS) $(libseed_gtkbuilder_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-gtkbuilder.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/gtkbuilder/seed-gtkbuilder.c b/modules/gtkbuilder/seed-gtkbuilder.c
new file mode 100644
index 0000000..f08270d
--- /dev/null
+++ b/modules/gtkbuilder/seed-gtkbuilder.c
@@ -0,0 +1,105 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed-module.h>
+
+#include <gtk/gtk.h>
+
+typedef struct _builder_ud {
+ SeedContext ctx;
+ SeedObject obj;
+ SeedObject user_data;
+} builder_ud;
+
+static void
+seed_builder_connect_func (GtkBuilder *builder,
+ GObject *object,
+ const gchar *signal_name,
+ const gchar *handler_name,
+ GObject *connect_object,
+ GConnectFlags flags,
+ gpointer user_data)
+{
+ SeedContext ctx;
+ SeedObject obj, func;
+ builder_ud *priv = (builder_ud *)user_data;
+ GClosure *closure;
+
+ ctx = priv->ctx;
+ obj = priv->obj;
+
+ func = seed_object_get_property (ctx, obj, handler_name);
+ if (!seed_value_is_object (ctx, func) || !seed_value_is_function (ctx, func))
+ return;
+
+ closure = seed_closure_new (ctx, func, priv->user_data,
+ "signal handler (GtkBuilder)");
+ if (connect_object != NULL)
+ g_object_watch_closure (connect_object, closure);
+
+ g_signal_connect_closure (object, signal_name, closure, FALSE);
+}
+
+SeedValue
+seed_gtk_builder_connect_signals(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ builder_ud ud;
+ GtkBuilder *b;
+
+ CHECK_ARG_COUNT("GtkBuilder.connect_signals", 1);
+
+ if (!seed_value_is_object (ctx, arguments[0]))
+ {
+ seed_make_exception (ctx, exception, "TypeError",
+ "connect_signals expects one object as the first argument");
+ return seed_make_undefined (ctx);
+ }
+
+ b = GTK_BUILDER (seed_value_to_object (ctx, this_object, exception));
+ ud.ctx = ctx;
+ ud.obj = arguments[0];
+ if (argument_count == 2)
+ ud.user_data = arguments[1];
+ else
+ ud.user_data = NULL;
+ gtk_builder_connect_signals_full(b, seed_builder_connect_func, &ud);
+
+ return seed_make_undefined (ctx);
+}
+
+SeedObject
+seed_module_init(SeedEngine *eng)
+{
+ SeedObject gtkbuilder_proto;
+
+ gtkbuilder_proto = seed_simple_evaluate (eng->context,
+ "imports.gi.Gtk.Builder.prototype",
+ NULL);
+ seed_create_function (eng->context,
+ "connect_signals",
+ seed_gtk_builder_connect_signals,
+ gtkbuilder_proto);
+
+ return seed_make_object (eng->context, NULL, NULL);
+}
diff --git a/modules/libxml/Makefile.am b/modules/libxml/Makefile.am
new file mode 100644
index 0000000..5e5e794
--- /dev/null
+++ b/modules/libxml/Makefile.am
@@ -0,0 +1,36 @@
+if BUILD_LIBXML_MODULE
+
+EXTRA_DIST = xml.js
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_libxml.la
+
+libseed_libxml_la_SOURCES = \
+ seed-libxml.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(LIBXML_CFLAGS) \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_libxml_la_LDFLAGS = \
+ -module -avoid-version \
+ $(LIBXML_LDFLAGS) \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_libxml_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(LIBXML_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+extensionsdir=$(datadir)/seed@SEED_GTK_VERSION@/extensions
+extensions_DATA=xml.js
+
+endif
+
+
+
diff --git a/modules/libxml/Makefile.in b/modules/libxml/Makefile.in
new file mode 100644
index 0000000..2841e99
--- /dev/null
+++ b/modules/libxml/Makefile.in
@@ -0,0 +1,685 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/libxml
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)" \
+ "$(DESTDIR)$(extensionsdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_LIBXML_MODULE_TRUE@libseed_libxml_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_LIBXML_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_LIBXML_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_libxml_la_SOURCES_DIST = seed-libxml.c
+@BUILD_LIBXML_MODULE_TRUE@am_libseed_libxml_la_OBJECTS = \
+@BUILD_LIBXML_MODULE_TRUE@ seed-libxml.lo
+libseed_libxml_la_OBJECTS = $(am_libseed_libxml_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_libxml_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_libxml_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+@BUILD_LIBXML_MODULE_TRUE@am_libseed_libxml_la_rpath = -rpath \
+@BUILD_LIBXML_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_libxml_la_SOURCES)
+DIST_SOURCES = $(am__libseed_libxml_la_SOURCES_DIST)
+DATA = $(extensions_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_LIBXML_MODULE_TRUE@EXTRA_DIST = xml.js
+@BUILD_LIBXML_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_LIBXML_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_LIBXML_MODULE_TRUE@ libseed_libxml.la
+
+@BUILD_LIBXML_MODULE_TRUE@libseed_libxml_la_SOURCES = \
+@BUILD_LIBXML_MODULE_TRUE@ seed-libxml.c
+
+@BUILD_LIBXML_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_LIBXML_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_LIBXML_MODULE_TRUE@ $(LIBXML_CFLAGS) \
+@BUILD_LIBXML_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_LIBXML_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_LIBXML_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_LIBXML_MODULE_TRUE@libseed_libxml_la_LDFLAGS = \
+@BUILD_LIBXML_MODULE_TRUE@ -module -avoid-version \
+@BUILD_LIBXML_MODULE_TRUE@ $(LIBXML_LDFLAGS) \
+@BUILD_LIBXML_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_LIBXML_MODULE_TRUE@libseed_libxml_la_LIBADD = \
+@BUILD_LIBXML_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_LIBXML_MODULE_TRUE@ $(LIBXML_LIBS) \
+@BUILD_LIBXML_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+@BUILD_LIBXML_MODULE_TRUE@extensionsdir = $(datadir)/seed@SEED_GTK_VERSION@/extensions
+@BUILD_LIBXML_MODULE_TRUE@extensions_DATA = xml.js
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/libxml/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/libxml/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_libxml.la: $(libseed_libxml_la_OBJECTS) $(libseed_libxml_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_libxml_la_LINK) $(am_libseed_libxml_la_rpath) $(libseed_libxml_la_OBJECTS) $(libseed_libxml_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-libxml.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-extensionsDATA: $(extensions_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(extensionsdir)" || $(MKDIR_P) "$(DESTDIR)$(extensionsdir)"
+ @list='$(extensions_DATA)'; test -n "$(extensionsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(extensionsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(extensionsdir)" || exit $$?; \
+ done
+
+uninstall-extensionsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(extensions_DATA)'; test -n "$(extensionsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(extensionsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(extensionsdir)" && rm -f $$files
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)" "$(DESTDIR)$(extensionsdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-extensionsDATA install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-extensionsDATA uninstall-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am \
+ install-extensionsDATA install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-extensionsDATA \
+ uninstall-seedlibLTLIBRARIES
+
+
+# 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/modules/libxml/seed-libxml.c b/modules/libxml/seed-libxml.c
new file mode 100644
index 0000000..845eb21
--- /dev/null
+++ b/modules/libxml/seed-libxml.c
@@ -0,0 +1,581 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+#include <libxml/xpathInternals.h> // for xmlXPathRegisterNs
+
+SeedObject namespace_ref;
+SeedEngine *eng;
+
+SeedClass xml_doc_class;
+SeedClass xml_node_class;
+SeedClass xml_attr_class;
+
+SeedClass xml_xpath_class;
+SeedClass xml_xpathobj_class;
+
+#define XML_DOC_PRIV(obj) ((xmlDocPtr)seed_object_get_private(obj))
+#define XML_NODE_PRIV(obj) ((xmlNodePtr)seed_object_get_private(obj))
+#define XML_XPATH_PRIV(obj) ((xmlXPathContextPtr)seed_object_get_private (obj))
+#define XML_XPATHOBJ_PRIV(obj) ((xmlXPathObjectPtr)seed_object_get_private (obj))
+
+static SeedObject
+seed_make_xml_doc (SeedContext ctx,
+ xmlDocPtr doc)
+{
+ SeedObject ret;
+ if (doc->_private)
+ return (SeedObject) doc->_private;
+ ret = seed_make_object (ctx, xml_doc_class, doc);
+ doc->_private = ret;
+ return ret;
+}
+
+static SeedObject
+seed_make_xml_node (SeedContext ctx,
+ xmlNodePtr node)
+{
+ SeedObject ret;
+ if (node == NULL)
+ return seed_make_null (ctx);
+ if (node->_private)
+ return (SeedObject) node->_private;
+ ret = seed_make_object (ctx, xml_node_class, node);
+ node->_private = ret;
+ return ret;
+}
+
+static SeedObject
+seed_make_xml_attr (SeedContext ctx,
+ xmlAttrPtr attr)
+{
+ SeedObject ret;
+ if (attr == NULL)
+ return seed_make_null (ctx);
+ if (attr->_private)
+ return (SeedObject) attr->_private;
+ ret = seed_make_object (ctx, xml_attr_class, attr);
+ attr->_private = ret;
+ return ret;
+}
+
+static gchar *
+seed_xml_element_type_to_string (xmlElementType type)
+{
+ if (type == XML_ELEMENT_NODE)
+ return "element";
+ else if (type == XML_ATTRIBUTE_NODE)
+ return "attribute";
+ else if (type == XML_TEXT_NODE)
+ return "text";
+ else
+ return "Implement more types! racarr is lazy.";
+}
+
+static SeedValue
+seed_xml_parse_file (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject ret;
+ xmlDocPtr doc;
+ gchar *path;
+ if (argument_count != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "parseFile expected 1 argument, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+ path = seed_value_to_string (ctx, arguments[0], exception);
+ doc = xmlParseFile (path);
+ if (!doc)
+ {
+ seed_make_exception (ctx, exception, "XMLError",
+ "Document not parsed successfully");
+ g_free (path);
+ return seed_make_null (ctx);
+ }
+ ret = seed_make_xml_doc (ctx, doc);
+
+ g_free (path);
+ return ret;
+}
+
+static SeedValue
+seed_xml_parse_string (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject ret;
+ xmlDocPtr doc;
+ gchar *string;
+ if (argument_count != 1)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "parseString expected 1 argument, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+ string = seed_value_to_string (ctx, arguments[0], exception);
+ doc = xmlParseMemory (string, strlen (string));
+ if (!doc)
+ {
+ seed_make_exception (ctx, exception, "XMLError",
+ "Document not parsed successfully");
+ g_free (string);
+ return seed_make_null (ctx);
+ }
+ ret = seed_make_xml_doc (ctx, doc);
+
+ g_free (string);
+ return ret;
+}
+
+static SeedValue
+seed_xml_doc_get_root (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlDocPtr doc = XML_DOC_PRIV (object);
+ return seed_make_xml_node (ctx, xmlDocGetRootElement (doc));
+}
+
+static void
+seed_xml_doc_finalize (SeedObject object)
+{
+ xmlDocPtr ptr = XML_DOC_PRIV (object);
+ xmlFreeDoc (ptr);
+}
+
+static SeedValue
+seed_xml_node_get_name (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+ return seed_value_from_string (ctx, (gchar *)node->name, exception);
+}
+
+static SeedValue
+seed_xml_node_get_children (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_node (ctx, node->children);
+
+}
+
+static SeedValue
+seed_xml_node_get_parent (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_node (ctx, node->parent);
+}
+
+static SeedValue
+seed_xml_node_get_next (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_node (ctx, node->next);
+}
+
+static SeedValue
+seed_xml_node_get_prev (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_node (ctx, node->prev);
+}
+
+static SeedValue
+seed_xml_node_get_last (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_node (ctx, node->last);
+}
+
+static SeedValue
+seed_xml_node_get_doc (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_doc (ctx, node->doc);
+}
+
+static SeedValue
+seed_xml_node_get_content (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ SeedValue ret;
+ gchar *content;
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ content = (gchar *)xmlNodeGetContent (node);
+ ret = seed_value_from_string (ctx, content, exception);
+ g_free (content);
+
+ return ret;
+}
+
+static SeedValue
+seed_xml_node_get_type (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_value_from_string (ctx,
+ seed_xml_element_type_to_string
+ (node->type), exception);
+}
+
+static SeedValue
+seed_xml_node_get_properties (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+
+ return seed_make_xml_attr (ctx, node->properties);
+}
+
+static void
+seed_xml_node_init (SeedContext ctx,
+ SeedObject object)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+ if (node && node->doc->_private)
+ seed_value_protect (ctx, node->doc->_private);
+}
+
+static void
+seed_xml_node_finalize (SeedObject object)
+{
+ xmlNodePtr node = XML_NODE_PRIV (object);
+ if (!node)
+ return;
+ node->_private = NULL;
+ // This might be invalid.
+ if (node->doc->_private)
+ seed_value_unprotect (eng->context, node->doc->_private);
+}
+
+static SeedValue
+seed_xml_xpath_eval (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ xmlXPathObjectPtr xpath_obj;
+ xmlXPathContextPtr xpath_ctx;
+ guchar *xpath;
+
+ if (argument_count != 1)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError",
+ "xpathEval expected 1 argument, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+ xpath_ctx = XML_XPATH_PRIV (this_object);
+
+ xpath = (guchar *)seed_value_to_string (ctx, arguments[0], exception);
+ xpath_obj = xmlXPathEval (xpath, xpath_ctx);
+ g_free (xpath);
+
+ return seed_make_object (ctx, xml_xpathobj_class, xpath_obj);
+}
+
+static SeedValue
+seed_xml_xpath_register_ns (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ xmlXPathContextPtr xpath;
+ guchar *prefix;
+ guchar *ns_uri;
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "xpathRegisterNs expects 2 arguments, got %zd",
+ argument_count);
+ return seed_make_undefined (ctx);
+ }
+ xpath = XML_XPATH_PRIV (this_object);
+ prefix = (guchar *)seed_value_to_string (ctx, arguments[0], exception);
+ ns_uri = (guchar *)seed_value_to_string (ctx, arguments[1], exception);
+
+ xmlXPathRegisterNs (xpath, prefix, ns_uri);
+ g_free (prefix);
+ g_free (ns_uri);
+
+ return seed_make_undefined (ctx);
+}
+
+static SeedValue
+seed_xml_construct_xpath_context (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ xmlXPathContextPtr xpath;
+ xmlDocPtr doc;
+
+ doc = XML_DOC_PRIV (this_object);
+ xpath = xmlXPathNewContext (doc);
+
+ seed_value_protect (ctx, this_object);
+
+ return seed_make_object (ctx, xml_xpath_class, xpath);
+}
+
+static void
+seed_xml_xpath_finalize (SeedObject object)
+{
+ xmlXPathContextPtr xpath = XML_XPATH_PRIV (object);
+ // Maybe unsafe. Seems to work.
+ seed_value_unprotect (eng->context, xpath->doc->_private);
+ xmlXPathFreeContext (xpath);
+}
+
+static void
+seed_xml_xpathobj_finalize (SeedObject object)
+{
+ xmlXPathObjectPtr xpath = XML_XPATHOBJ_PRIV (object);
+ xmlXPathFreeObject (xpath);
+}
+
+static SeedValue
+seed_xml_array_from_nodeset (SeedContext ctx,
+ xmlNodeSetPtr nodeset,
+ SeedException *exception)
+{
+ SeedValue *ary = g_alloca (nodeset->nodeNr * sizeof (SeedValue));
+ int i;
+
+ for (i = 0; i < nodeset->nodeNr; i++)
+ {
+ ary[i] = seed_make_xml_node (ctx, nodeset->nodeTab[i]);
+ }
+ return seed_make_array (ctx, ary, nodeset->nodeNr, exception);
+}
+
+static SeedValue
+seed_xml_xpathobj_get_value (SeedContext ctx,
+ SeedObject object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ xmlXPathObjectPtr xpath = XML_XPATHOBJ_PRIV (object);
+
+ switch (xpath->type)
+ {
+/* case XPATH_BOOLEAN:
+ return seed_value_from_boolean (ctx, xpath->boolval, exception);
+ case XPATH_NUMBER:
+ return seed_value_from_double (ctx, xpath->floatval, exception);
+ case XPATH_STRING:
+ return seed_value_from_string (ctx, xpath->stringval, exception);*/
+ case XPATH_NODESET:
+ return seed_xml_array_from_nodeset (ctx, xpath->nodesetval, exception);
+ default:
+ return seed_make_null (ctx);
+ }
+}
+
+
+seed_static_function doc_funcs[] = {
+ {"xpathNewContext", seed_xml_construct_xpath_context, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_value doc_values[] = {
+ {"root", seed_xml_doc_get_root, NULL, 0},
+ {"name", seed_xml_node_get_name, NULL, 0},
+ {"children", seed_xml_node_get_children, NULL, 0},
+ {"parent", seed_xml_node_get_parent, NULL, 0},
+ {"next", seed_xml_node_get_next, NULL, 0},
+ {"prev", seed_xml_node_get_prev, NULL, 0},
+ {"last", seed_xml_node_get_last, NULL, 0},
+ {"doc", seed_xml_node_get_doc, NULL, 0},
+ {"type", seed_xml_node_get_type, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function node_funcs[] = {
+ {NULL, NULL, 0}
+};
+
+seed_static_value node_values[] = {
+ {"name", seed_xml_node_get_name, NULL, 0},
+ {"children", seed_xml_node_get_children, NULL, 0},
+ {"parent", seed_xml_node_get_parent, NULL, 0},
+ {"next", seed_xml_node_get_next, NULL, 0},
+ {"prev", seed_xml_node_get_prev, NULL, 0},
+ {"content", seed_xml_node_get_content, NULL, 0},
+ {"last", seed_xml_node_get_last, NULL, 0},
+ {"doc", seed_xml_node_get_doc, NULL, 0},
+ {"type", seed_xml_node_get_type, NULL, 0},
+ {"properties", seed_xml_node_get_properties, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function attr_funcs[] = {
+ {NULL, NULL, 0}
+};
+
+seed_static_value attr_values[] = {
+ {"name", seed_xml_node_get_name, NULL, 0},
+ {"children", seed_xml_node_get_children, NULL, 0},
+ {"parent", seed_xml_node_get_parent, NULL, 0},
+ {"next", seed_xml_node_get_next, NULL, 0},
+ {"prev", seed_xml_node_get_prev, NULL, 0},
+ {"last", seed_xml_node_get_last, NULL, 0},
+ {"doc", seed_xml_node_get_doc, NULL, 0},
+ {"type", seed_xml_node_get_type, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function xpath_funcs[] = {
+ {"xpathEval", seed_xml_xpath_eval, 0},
+ {"xpathRegisterNs", seed_xml_xpath_register_ns, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_value xpathobj_values[] = {
+ {"value", seed_xml_xpathobj_get_value, NULL, 0},
+ {NULL, NULL, NULL, 0}
+};
+
+static void
+seed_libxml_define_stuff ()
+{
+ SeedObject node_proto;
+
+ seed_class_definition xml_doc_class_def = seed_empty_class;
+ seed_class_definition xml_node_class_def = seed_empty_class;
+ seed_class_definition xml_attr_class_def = seed_empty_class;
+ seed_class_definition xml_xpath_class_def = seed_empty_class;
+ seed_class_definition xml_xpathobj_class_def = seed_empty_class;
+
+ xml_doc_class_def.class_name="XMLDocument";
+ xml_doc_class_def.static_functions = doc_funcs;
+ xml_doc_class_def.static_values = doc_values;
+ xml_doc_class_def.finalize = seed_xml_doc_finalize;
+ xml_doc_class = seed_create_class (&xml_doc_class_def);
+
+ xml_node_class_def.class_name="XMLNode";
+ xml_node_class_def.static_functions = node_funcs;
+ xml_node_class_def.static_values = node_values;
+ xml_node_class_def.finalize = seed_xml_node_finalize;
+ xml_node_class_def.initialize = seed_xml_node_init;
+ xml_node_class = seed_create_class (&xml_node_class_def);
+
+ xml_attr_class_def.class_name="XMLAttribute";
+ xml_attr_class_def.static_functions = attr_funcs;
+ xml_attr_class_def.static_values = attr_values;
+ xml_attr_class_def.finalize = seed_xml_node_finalize;
+ xml_attr_class_def.initialize = seed_xml_node_init;
+ xml_attr_class = seed_create_class (&xml_attr_class_def);
+
+ xml_xpath_class_def.class_name = "XMLXPathContext";
+ xml_xpath_class_def.finalize = seed_xml_xpath_finalize;
+ xml_xpath_class_def.static_functions = xpath_funcs;
+ xml_xpath_class = seed_create_class (&xml_xpath_class_def);
+
+ xml_xpathobj_class_def.class_name = "XMLXPathObj";
+ xml_xpathobj_class_def.finalize = seed_xml_xpathobj_finalize;
+ xml_xpathobj_class_def.static_values = xpathobj_values;
+ xml_xpathobj_class = seed_create_class (&xml_xpathobj_class_def);
+
+ seed_create_function (eng->context, "parseFile",
+ (SeedFunctionCallback) seed_xml_parse_file,
+ namespace_ref);
+ seed_create_function (eng->context, "parseString",
+ (SeedFunctionCallback) seed_xml_parse_string,
+ namespace_ref);
+
+ node_proto = seed_object_get_prototype (eng->context,
+ seed_make_object (eng->context,
+ xml_node_class,
+ NULL));
+ seed_make_object (eng->context, xml_node_class, NULL);
+ seed_object_set_property (eng->context, namespace_ref, "_nodeProto", node_proto);
+ seed_simple_evaluate (eng->context, "imports.extensions.xml", NULL);
+}
+
+SeedObject
+seed_module_init(SeedEngine *local_eng)
+{
+ eng = local_eng;
+ namespace_ref = seed_make_object (eng->context, NULL, NULL);
+ seed_value_protect (eng->context, namespace_ref);
+
+ seed_libxml_define_stuff();
+
+ return namespace_ref;
+}
diff --git a/modules/libxml/xml.js b/modules/libxml/xml.js
new file mode 100644
index 0000000..b6cccb6
--- /dev/null
+++ b/modules/libxml/xml.js
@@ -0,0 +1,22 @@
+xml = imports.libxml;
+
+xml._nodeProto.getElementsByTagName = function(name){
+ ret = [];
+ child = this.children;
+ while (child){
+ if (child.name == name)
+ ret.push (child);
+ child = child.next;
+ }
+ return ret;
+}
+
+xml._nodeProto.getAttribute = function(name){
+ properties = this.properties;
+ while (properties){
+ if (properties.name == name)
+ return properties.children.content;
+ properties = properties.next
+ }
+ return null;
+}
diff --git a/modules/mpfr/Makefile.am b/modules/mpfr/Makefile.am
new file mode 100644
index 0000000..7924a05
--- /dev/null
+++ b/modules/mpfr/Makefile.am
@@ -0,0 +1,33 @@
+if BUILD_MPFR_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_mpfr.la
+
+libseed_mpfr_la_SOURCES = \
+ seed-mpfr.c \
+ seed-mpfr-trig.c \
+ seed-mpfr-arithmetic.c \
+ seed-mpfr-cmp.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_mpfr_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_mpfr_la_LIBADD = -lmpfr -lgmp \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+EXTRA_DIST = seed-mpfr.h
+
+endif
+
+
+
diff --git a/modules/mpfr/Makefile.in b/modules/mpfr/Makefile.in
new file mode 100644
index 0000000..3d7f9b5
--- /dev/null
+++ b/modules/mpfr/Makefile.in
@@ -0,0 +1,663 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/mpfr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_MPFR_MODULE_TRUE@libseed_mpfr_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_MPFR_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_mpfr_la_SOURCES_DIST = seed-mpfr.c seed-mpfr-trig.c \
+ seed-mpfr-arithmetic.c seed-mpfr-cmp.c
+@BUILD_MPFR_MODULE_TRUE@am_libseed_mpfr_la_OBJECTS = seed-mpfr.lo \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-trig.lo \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-arithmetic.lo \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-cmp.lo
+libseed_mpfr_la_OBJECTS = $(am_libseed_mpfr_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_mpfr_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_mpfr_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+@BUILD_MPFR_MODULE_TRUE@am_libseed_mpfr_la_rpath = -rpath \
+@BUILD_MPFR_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_mpfr_la_SOURCES)
+DIST_SOURCES = $(am__libseed_mpfr_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_MPFR_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_MPFR_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_MPFR_MODULE_TRUE@ libseed_mpfr.la
+
+@BUILD_MPFR_MODULE_TRUE@libseed_mpfr_la_SOURCES = \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr.c \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-trig.c \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-arithmetic.c \
+@BUILD_MPFR_MODULE_TRUE@ seed-mpfr-cmp.c
+
+@BUILD_MPFR_MODULE_TRUE@AM_CPPFLAGS = \
+@BUILD_MPFR_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_MPFR_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_MPFR_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_MPFR_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_MPFR_MODULE_TRUE@libseed_mpfr_la_LDFLAGS = \
+@BUILD_MPFR_MODULE_TRUE@ -module -avoid-version \
+@BUILD_MPFR_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_MPFR_MODULE_TRUE@libseed_mpfr_la_LIBADD = -lmpfr -lgmp \
+@BUILD_MPFR_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_MPFR_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+@BUILD_MPFR_MODULE_TRUE@EXTRA_DIST = seed-mpfr.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/mpfr/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/mpfr/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_mpfr.la: $(libseed_mpfr_la_OBJECTS) $(libseed_mpfr_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_mpfr_la_LINK) $(am_libseed_mpfr_la_rpath) $(libseed_mpfr_la_OBJECTS) $(libseed_mpfr_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-mpfr-arithmetic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-mpfr-cmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-mpfr-trig.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-mpfr.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/mpfr/seed-mpfr-arithmetic.c b/modules/mpfr/seed-mpfr-arithmetic.c
new file mode 100644
index 0000000..cb6714a
--- /dev/null
+++ b/modules/mpfr/seed-mpfr-arithmetic.c
@@ -0,0 +1,1270 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Matthew Arsenault 2009-2010 <arsenm2@rpi.edu>
+ */
+
+#include <mpfr.h>
+#include "seed-mpfr.h"
+
+/* This is a bit disgusting. Oh well. */
+SeedValue seed_mpfr_add (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gdouble dop1, dop2;
+ gint ret;
+ seed_mpfr_t argt1, argt2;
+ /* only want 1 double argument. alternatively, could accept 2,
+ add those, and set from the result*/
+
+ CHECK_ARG_COUNT("mpfr.add", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ argt1 = seed_mpfr_arg_type(ctx, args[0], exception);
+ argt2 = seed_mpfr_arg_type(ctx, args[1], exception);
+
+ if ( (argt1 & argt2) == SEED_MPFR_MPFR )
+ {
+ /* both mpfr_t */
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_add(rop, op1, op2, rnd);
+ }
+ else if ( (argt1 | argt2) == (SEED_MPFR_MPFR | SEED_MPFR_DOUBLE) )
+ {
+ /* a double and an mpfr_t. Figure out the order */
+ if ( argt1 == SEED_MPFR_MPFR )
+ {
+ op1 = seed_object_get_private(args[0]);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ mpfr_add_d(rop, op1, dop2, rnd);
+ }
+ else
+ {
+ dop2 = seed_value_to_double(ctx, args[0], exception);
+ op1 = seed_object_get_private(args[1]);
+ mpfr_add_d(rop, op1, dop2, rnd);
+ }
+ }
+ else if ( (argt1 & argt2) == SEED_MPFR_DOUBLE )
+ {
+ /* 2 doubles. hopefully doesn't happen */
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ ret = mpfr_set_d(rop, dop1 + dop2, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.add", "double or mpfr_t");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_sub (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gdouble dop1, dop2;
+ gint ret;
+ seed_mpfr_t argt1, argt2;
+ /* only want 1 double argument. alternatively, could accept 2,
+ add those, and set from the result*/
+
+ CHECK_ARG_COUNT("mpfr.sub", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ argt1 = seed_mpfr_arg_type(ctx, args[0], exception);
+ argt2 = seed_mpfr_arg_type(ctx, args[1], exception);
+
+ if ( (argt1 & argt2) == SEED_MPFR_MPFR )
+ {
+ /* both mpfr_t */
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_sub(rop, op1, op2, rnd);
+ }
+ else if ( (argt1 | argt2) == (SEED_MPFR_MPFR | SEED_MPFR_DOUBLE) )
+ {
+ /* a double and an mpfr_t. Figure out the order */
+ if ( argt1 == SEED_MPFR_MPFR )
+ {
+ op1 = seed_object_get_private(args[0]);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ mpfr_sub_d(rop, op1, dop2, rnd);
+ }
+ else
+ {
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ op2 = seed_object_get_private(args[1]);
+ mpfr_d_sub(rop, dop1, op2, rnd);
+ }
+ }
+ else if ( (argt1 & argt2) == SEED_MPFR_DOUBLE )
+ {
+ /* 2 doubles. hopefully doesn't happen */
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ ret = mpfr_set_d(rop, dop1 - dop2, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sub", "double or mpfr_t");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_mul (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gdouble dop1, dop2;
+ gint ret;
+ seed_mpfr_t argt1, argt2;
+ /* only want 1 double argument. alternatively, could accept 2,
+ add those, and set from the result*/
+
+ CHECK_ARG_COUNT("mpfr.mul", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ argt1 = seed_mpfr_arg_type(ctx, args[0], exception);
+ argt2 = seed_mpfr_arg_type(ctx, args[1], exception);
+
+ if ( (argt1 & argt2) == SEED_MPFR_MPFR )
+ {
+ /* both mpfr_t */
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_mul(rop, op1, op2, rnd);
+ }
+ else if ( (argt1 | argt2) == (SEED_MPFR_MPFR | SEED_MPFR_DOUBLE) )
+ {
+ /* a double and an mpfr_t. Figure out the order */
+ if ( argt1 == SEED_MPFR_MPFR )
+ {
+ op1 = seed_object_get_private(args[0]);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ mpfr_mul_d(rop, op1, dop2, rnd);
+ }
+ else
+ {
+ dop2 = seed_value_to_double(ctx, args[0], exception);
+ op1 = seed_object_get_private(args[1]);
+ mpfr_mul_d(rop, op1, dop2, rnd);
+ }
+ }
+ else if ( (argt1 & argt2) == SEED_MPFR_DOUBLE )
+ {
+ /* 2 doubles. hopefully doesn't happen */
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ ret = mpfr_set_d(rop, dop1 * dop2, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.mul", "double or mpfr_t");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_div (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gdouble dop1, dop2;
+ gint ret;
+ seed_mpfr_t argt1, argt2;
+ /* only want 1 double argument. alternatively, could accept 2,
+ add those, and set from the result*/
+
+ CHECK_ARG_COUNT("mpfr.div", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ argt1 = seed_mpfr_arg_type(ctx, args[0], exception);
+ argt2 = seed_mpfr_arg_type(ctx, args[1], exception);
+
+ if ( (argt1 & argt2) == SEED_MPFR_MPFR )
+ {
+ /* both mpfr_t */
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_div(rop, op1, op2, rnd);
+ }
+ else if ( (argt1 | argt2) == (SEED_MPFR_MPFR | SEED_MPFR_DOUBLE) )
+ {
+ /* a double and an mpfr_t. Figure out the order */
+ if ( argt1 == SEED_MPFR_MPFR )
+ {
+ op1 = seed_object_get_private(args[0]);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ mpfr_div_d(rop, op1, dop2, rnd);
+ }
+ else
+ {
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ op2 = seed_object_get_private(args[1]);
+ mpfr_d_div(rop, dop1, op2, rnd);
+ }
+ }
+ else if ( (argt1 & argt2) == SEED_MPFR_DOUBLE )
+ {
+ /* 2 doubles. hopefully doesn't happen */
+ dop1 = seed_value_to_double(ctx, args[0], exception);
+ dop2 = seed_value_to_double(ctx, args[1], exception);
+ ret = mpfr_set_d(rop, dop1 / dop2, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.div", "double or mpfr_t");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+
+SeedValue seed_mpfr_pow (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+ glong iop;
+ gulong uiop1, uiop2;
+ seed_mpfr_t argt1, argt2;
+ /* only want 1 double argument. alternatively, could accept 2,
+ add those, and set from the result*/
+
+ CHECK_ARG_COUNT("mpfr.pow", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ argt1 = seed_mpfr_arg_type(ctx, args[0], exception);
+ argt2 = seed_mpfr_arg_type(ctx, args[1], exception);
+
+ if ( (argt1 & argt2) == SEED_MPFR_MPFR )
+ {
+ /* both mpfr_t */
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_pow(rop, op1, op2, rnd);
+ }
+ else if ( (argt1 | argt2) == (SEED_MPFR_MPFR | SEED_MPFR_DOUBLE) )
+ {
+ /* a double and an mpfr_t. Figure out the order */
+ /* FIXME: is this switching ui and si bad? si_pow doesn't exist,
+ and it's all from double anyway */
+ if ( argt1 == SEED_MPFR_MPFR )
+ {
+ op1 = seed_object_get_private(args[0]);
+ iop = seed_value_to_long(ctx, args[1], exception);
+ ret = mpfr_pow_si(rop, op1, iop, rnd);
+ }
+ else
+ {
+ uiop1 = seed_value_to_ulong(ctx, args[0], exception);
+ op2 = seed_object_get_private(args[1]);
+ ret = mpfr_ui_pow(rop, uiop1, op2, rnd);
+ }
+ }
+ else if ( (argt1 & argt2) == SEED_MPFR_DOUBLE )
+ {
+ /* pretend both ui */
+ uiop1 = seed_value_to_ulong(ctx, args[0], exception);
+ uiop2 = seed_value_to_ulong(ctx, args[1], exception);
+ ret = mpfr_ui_pow_ui(rop, uiop1, uiop2, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.pow", "int or unsigned int and mpfr_t");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_sqrt (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sqrt", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sqrt", "mpfr_t");
+ }
+
+ ret = mpfr_sqrt(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_rec_sqrt (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rec_sqrt", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rec_sqrt", "mpfr_t");
+ }
+
+ ret = mpfr_rec_sqrt(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_sqr (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sqr", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sqr", "mpfr_t");
+ }
+
+ ret = mpfr_sqr(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_root (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+ gulong k;
+
+ CHECK_ARG_COUNT("mpfr.root", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.root", "mpfr_t");
+ }
+
+ if ( seed_value_is_number(ctx, args[1]) )
+ {
+ k = seed_value_to_ulong(ctx, args[1], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.root", "unsigned long int");
+ }
+
+
+ ret = mpfr_root(rop, op, k, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_cbrt (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cbrt", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cbrt", "mpfr_t");
+ }
+
+ ret = mpfr_cbrt(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_neg (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.neg", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.neg", "mpfr_t");
+ }
+
+ ret = mpfr_neg(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_abs (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.abs", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.abs", "mpfr_t");
+ }
+
+ ret = mpfr_abs(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_dim (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.dim", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.dim", "mpfr_t");
+ }
+
+ ret = mpfr_dim(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+
+/* Rounding functions */
+
+SeedValue seed_mpfr_rint (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rint", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rint", "mpfr_t");
+ }
+
+ ret = mpfr_rint(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_ceil (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.ceil", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.ceil", "mpfr_t");
+ }
+
+ ret = mpfr_ceil(rop, op);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_floor (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.floor", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.floor", "mpfr_t");
+ }
+
+ ret = mpfr_floor(rop, op);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_round (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.round", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.round", "mpfr_t");
+ }
+
+ ret = mpfr_round(rop, op);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_trunc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.trunc", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.trunc", "mpfr_t");
+ }
+
+ ret = mpfr_trunc(rop, op);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_rint_ceil (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rint_ceil", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rint_ceil", "mpfr_t");
+ }
+
+ ret = mpfr_rint_ceil(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_rint_floor (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rint_floor", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rint_floor", "mpfr_t");
+ }
+
+ ret = mpfr_rint_floor(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_rint_round (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rint_round", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rint_round", "mpfr_t");
+ }
+
+ ret = mpfr_rint_round(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_rint_trunc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.rint_trunc", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.rint_trunc", "mpfr_t");
+ }
+
+ ret = mpfr_rint_trunc(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_frac (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.frac", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.frac", "mpfr_t");
+ }
+
+ ret = mpfr_frac(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_integer_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.integer", 0);
+ rop = seed_object_get_private(this_object);
+ ret = mpfr_integer_p(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_fmod (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.fmod", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.fmod", "mpfr_t");
+ }
+
+ ret = mpfr_fmod(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_remainder (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.remainder", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.remainder", "mpfr_t");
+ }
+
+ ret = mpfr_remainder(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_nexttoward (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+
+ CHECK_ARG_COUNT("mpfr.nexttoward", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.nexttoward", "mpfr_t");
+ }
+
+ mpfr_nexttoward(rop, op);
+
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_nextabove (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+
+ CHECK_ARG_COUNT("mpfr.nextabove", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ mpfr_nextabove(rop);
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_nextbelow (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+
+ CHECK_ARG_COUNT("mpfr.nextbelow", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ mpfr_nextbelow(rop);
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_min (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.min", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.min", "mpfr_t");
+ }
+
+ ret = mpfr_min(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_max (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.max", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.max", "mpfr_t");
+ }
+
+ ret = mpfr_max(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_prec_round (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mp_prec_t prec;
+ mpfr_ptr rop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.prec_round", 2);
+
+ rop = seed_object_get_private(this_object);
+ prec = seed_value_to_mpfr_prec_t(ctx, args[0], exception);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ ret = mpfr_prec_round(rop, prec, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_signbit (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.signbit", 0);
+ rop = seed_object_get_private(this_object);
+ ret = mpfr_signbit(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_setsign (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+ gint s;
+ mpfr_rnd_t rnd;
+
+ CHECK_ARG_COUNT("mpfr.signbit", 3);
+
+ rop = seed_object_get_private(this_object);
+ s = seed_value_to_int(ctx, args[1], exception);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.setsign", "mpfr_t");
+ }
+
+ ret = mpfr_setsign(rop, op, s, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_copysign (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.copysign", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.copysign", "mpfr_t");
+ }
+
+ ret = mpfr_copysign(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_mul_2si (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+ gulong k;
+
+ CHECK_ARG_COUNT("mpfr.mul_2si", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.mul_2si", "mpfr_t");
+ }
+
+ if ( seed_value_is_number(ctx, args[1]) )
+ {
+ k = seed_value_to_ulong(ctx, args[1], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.mul_2si", "long int");
+ }
+
+ ret = mpfr_mul_2si(rop, op, k, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_div_2si (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+ gulong k;
+
+ CHECK_ARG_COUNT("mpfr.div_2si", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.div_2si", "mpfr_t");
+ }
+
+ if ( seed_value_is_number(ctx, args[1]) )
+ {
+ k = seed_value_to_ulong(ctx, args[1], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.div_2si", "long int");
+ }
+
+ ret = mpfr_div_2si(rop, op, k, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
diff --git a/modules/mpfr/seed-mpfr-cmp.c b/modules/mpfr/seed-mpfr-cmp.c
new file mode 100644
index 0000000..5446cf5
--- /dev/null
+++ b/modules/mpfr/seed-mpfr-cmp.c
@@ -0,0 +1,420 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Matthew Arsenault 2009-2010 <arsenm2@rpi.edu>
+ */
+
+#include <mpfr.h>
+#include "seed-mpfr.h"
+
+SeedValue seed_mpfr_cmp (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gdouble dop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cmp", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ ret = mpfr_cmp(rop, op);
+ }
+ else if ( seed_value_is_number(ctx, args[0]))
+ {
+ dop = seed_value_to_double(ctx, args[0], exception);
+ ret = mpfr_cmp_d(rop, dop);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cmp", "mpfr_t or double");
+ }
+
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_cmpabs (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cmpabs", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cmpabs", "mpfr_t");
+ }
+
+ ret = mpfr_cmpabs(rop, op);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue
+seed_mpfr_nan_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.nan_p", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ ret = mpfr_nan_p(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue
+seed_mpfr_inf_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.inf_p", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ ret = mpfr_inf_p(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue
+seed_mpfr_number_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.number_p", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ ret = mpfr_number_p(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue
+seed_mpfr_zero_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.zero_p", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ ret = mpfr_zero_p(rop);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue
+seed_mpfr_sgn (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sgn", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ ret = mpfr_sgn(rop);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_greater_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.greater_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.greater_p", "mpfr_t");
+ }
+
+ ret = mpfr_greater_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_greaterequal_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.greaterequal_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.greaterequal_p", "mpfr_t");
+ }
+
+ ret = mpfr_greaterequal_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_less_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.less_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.less_p", "mpfr_t");
+ }
+
+ ret = mpfr_less_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_lessequal_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.less_equal_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.less_equal_p", "mpfr_t");
+ }
+
+ ret = mpfr_lessequal_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_lessgreater_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.lessgreater_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.lessgreater_p", "mpfr_t");
+ }
+
+ ret = mpfr_lessgreater_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_equal_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.equal_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.equal_p", "mpfr_t");
+ }
+
+ ret = mpfr_equal_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_unordered_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.unordered_p", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.unordered_p", "mpfr_t");
+ }
+
+ ret = mpfr_unordered_p(rop, op);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+
+SeedValue seed_mpfr_cmp_si_2exp (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr op1;
+ gulong op2;
+ mp_exp_t exp;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cmp_si_2exp", 2);
+
+ op1 = seed_object_get_private(this_object);
+
+ if ( seed_value_is_number(ctx, args[0]) )
+ {
+ op2 = seed_value_to_ulong(ctx, args[0], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cmp_si_2exp", "long int");
+ }
+
+ if ( seed_value_is_number(ctx, args[1]) )
+ {
+ exp = seed_value_to_mp_exp_t(ctx, args[1], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cmp_si_2exp", "mp_exp_t");
+ }
+
+ ret = mpfr_cmp_si_2exp(op1, op2, exp);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
diff --git a/modules/mpfr/seed-mpfr-trig.c b/modules/mpfr/seed-mpfr-trig.c
new file mode 100644
index 0000000..3d28dbc
--- /dev/null
+++ b/modules/mpfr/seed-mpfr-trig.c
@@ -0,0 +1,1262 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Matthew Arsenault 2009-2010 <arsenm2@rpi.edu>
+ */
+
+#include <mpfr.h>
+
+#include "seed-mpfr.h"
+
+SeedValue seed_mpfr_sin (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sin", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sin", "mpfr_t");
+ }
+
+ ret = mpfr_sin(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_cos (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cos", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cos", "mpfr_t");
+ }
+
+ ret = mpfr_cos(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_tan (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.tan", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.tan", "mpfr_t");
+ }
+
+ ret = mpfr_tan(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_csc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.csc", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.csc", "mpfr_t");
+ }
+
+ ret = mpfr_csc(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_sec (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sec", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sec", "mpfr_t");
+ }
+
+ ret = mpfr_sec(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_cot (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cot", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cot", "mpfr_t");
+ }
+
+ ret = mpfr_cot(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_asin (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.asin", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.asin", "mpfr_t");
+ }
+
+ ret = mpfr_asin(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+
+SeedValue seed_mpfr_acos (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.acos", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.acos", "mpfr_t");
+ }
+
+ ret = mpfr_acos(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_atan (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.atan", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.atan", "mpfr_t");
+ }
+
+ ret = mpfr_atan(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+
+/* log functions */
+
+SeedValue seed_mpfr_log (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.log", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.log", "mpfr_t");
+ }
+
+ ret = mpfr_log(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_log2 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.log2", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.log2", "mpfr_t");
+ }
+
+ ret = mpfr_log2(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_log10 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.log10", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.log10", "mpfr_t");
+ }
+
+ ret = mpfr_log10(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+/* hyperbolic trig functions */
+
+SeedValue seed_mpfr_sinh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sinh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sinh", "mpfr_t");
+ }
+
+ ret = mpfr_sinh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_cosh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.cosh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.cosh", "mpfr_t");
+ }
+
+ ret = mpfr_cosh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_tanh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.tanh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.tanh", "mpfr_t");
+ }
+
+ ret = mpfr_tanh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+
+SeedValue seed_mpfr_sech (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.sech", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.sech", "mpfr_t");
+ }
+
+ ret = mpfr_sech(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_csch (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.csch", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.csch", "mpfr_t");
+ }
+
+ ret = mpfr_csch(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_coth (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.coth", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.coth", "mpfr_t");
+ }
+
+ ret = mpfr_coth(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+/* inverse hyperbolic trig */
+
+SeedValue seed_mpfr_asinh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.asinh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.asinh", "mpfr_t");
+ }
+
+ ret = mpfr_asinh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_acosh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.acosh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.acosh", "mpfr_t");
+ }
+
+ ret = mpfr_acosh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_atanh (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.atanh", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.atanh", "mpfr_t");
+ }
+
+ ret = mpfr_atanh(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_log1p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.log1p", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.log1p", "mpfr_t");
+ }
+
+ ret = mpfr_log1p(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_expm1 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.expm1", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.expm1", "mpfr_t");
+ }
+
+ ret = mpfr_expm1(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_li2 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.li2", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.li2", "mpfr_t");
+ }
+
+ ret = mpfr_li2(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_gamma (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.gamma", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.gamma", "mpfr_t");
+ }
+
+ ret = mpfr_gamma(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_lngamma (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.lngamma", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.lngamma", "mpfr_t");
+ }
+
+ ret = mpfr_lngamma(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_zeta (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+ gulong uiop;
+
+ CHECK_ARG_COUNT("mpfr.zeta", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ ret = mpfr_zeta(rop, op, rnd);
+ }
+ else if ( seed_value_is_number(ctx, args[0]) )
+ {
+ uiop = seed_value_to_ulong(ctx, args[0], exception);
+ ret = mpfr_zeta_ui(rop, uiop, rnd);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.zeta", "mpfr_t or unsigned int");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_erf (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.erf", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.erf", "mpfr_t");
+ }
+
+ ret = mpfr_erf(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_erfc (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.erfc", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.erfc", "mpfr_t");
+ }
+
+ ret = mpfr_erfc(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+/* bessel functions */
+SeedValue seed_mpfr_j0 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.j0", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.j0", "mpfr_t");
+ }
+
+ ret = mpfr_j0(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_j1 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.j1", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.j1", "mpfr_t");
+ }
+
+ ret = mpfr_j1(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_jn (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret, n;
+
+ CHECK_ARG_COUNT("mpfr.jn", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[1], mpfr_class) )
+ {
+ op = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.jn", "mpfr_t");
+ }
+
+ if ( seed_value_is_number(ctx, args[0]) )
+ {
+ n = seed_value_to_int(ctx, args[0], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.jn", "int");
+ }
+
+ ret = mpfr_jn(rop, n, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_y0 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.y0", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.y0", "mpfr_t");
+ }
+
+ ret = mpfr_y0(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_y1 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.y1", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.y1", "mpfr_t");
+ }
+
+ ret = mpfr_y1(rop, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_yn (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gint ret, n;
+
+ CHECK_ARG_COUNT("mpfr.yn", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[1], mpfr_class) )
+ {
+ op = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.yn", "mpfr_t");
+ }
+
+ if ( seed_value_is_number(ctx, args[0]) )
+ {
+ n = seed_value_to_int(ctx, args[0], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.yn", "int");
+ }
+
+ ret = mpfr_yn(rop, n, op, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_fma (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2, op3;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.fma", 4);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[3], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[2], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ op3 = seed_object_get_private(args[2]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.fma", "mpfr_t");
+ }
+
+ ret = mpfr_fma(rop, op1, op2, op3, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_fms (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2, op3;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.fms", 4);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[3], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[2], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ op3 = seed_object_get_private(args[2]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.fms", "mpfr_t");
+ }
+
+ ret = mpfr_fms(rop, op1, op2, op3, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_agm (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.agm", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.agm", "mpfr_t");
+ }
+
+ ret = mpfr_agm(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_hypot (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op1, op2;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.hypot", 3);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) &&
+ seed_value_is_object_of_class(ctx, args[1], mpfr_class))
+ {
+ op1 = seed_object_get_private(args[0]);
+ op2 = seed_object_get_private(args[1]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.hypot", "mpfr_t");
+ }
+
+ ret = mpfr_hypot(rop, op1, op2, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_free_cache (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ CHECK_ARG_COUNT("mpfr.free_cache", 0);
+ mpfr_free_cache();
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_clear_flags (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ CHECK_ARG_COUNT("mpfr.clear_flags", 0);
+ mpfr_clear_flags();
+ return seed_make_null(ctx);
+}
+
diff --git a/modules/mpfr/seed-mpfr.c b/modules/mpfr/seed-mpfr.c
new file mode 100644
index 0000000..2e03126
--- /dev/null
+++ b/modules/mpfr/seed-mpfr.c
@@ -0,0 +1,1188 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Matthew Arsenault 2009-2010 <arsenm2@rpi.edu>
+ */
+
+#include <seed-module.h>
+
+#include <stdio.h>
+#include <mpfr.h>
+
+#include "seed-mpfr.h"
+
+SeedObject ns_ref;
+SeedClass mpfr_class;
+
+/* For now at least ignoring the ability to use gmp types since there is no gmp module */
+
+SeedEngine * eng;
+
+inline seed_mpfr_t
+seed_mpfr_arg_type(SeedContext ctx, SeedValue arg, SeedException exept)
+{
+ if ( seed_value_is_object_of_class(ctx, arg, mpfr_class) )
+ return SEED_MPFR_MPFR;
+ else if ( seed_value_is_number(ctx, arg) )
+ return SEED_MPFR_DOUBLE;
+ else if ( seed_value_is_string(ctx, arg) )
+ return SEED_MPFR_STRING;
+ else
+ return SEED_MPFR_UNKNOWN;
+}
+
+static SeedValue
+seed_mpfr_out_str (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ gsize n;
+ FILE* stream;
+ gint base;
+ mpfr_rnd_t rnd;
+ mpfr_ptr op;
+
+ CHECK_ARG_COUNT("mpfr.out_str", 4);
+
+ stream = (FILE*) seed_pointer_get_pointer(ctx, args[0]);
+ base = seed_value_to_int(ctx, args[1], exception);
+ n = seed_value_to_uint(ctx, args[2], exception);
+ op = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[3], exception);
+
+ return seed_value_from_uint(ctx,
+ mpfr_out_str(stream, base, n, op, rnd),
+ exception);
+}
+
+/* no way to do real printf with varargs yet, this is a way to get fake printf */
+static SeedValue
+seed_mpfr_print (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr op;
+ mpfr_rnd_t rnd;
+ unsigned int width, sigdigits;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.print", 3);
+
+ op = seed_object_get_private(this_object);
+ width = seed_value_to_uint(ctx, args[0], exception);
+ sigdigits = seed_value_to_uint(ctx, args[1], exception);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+
+ ret = mpfr_printf("%*.*R*g", width, sigdigits, rnd, op );
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_const_pi (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.pi", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_const_pi(rop, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_const_euler (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.euler", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_const_euler(rop, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_const_catalan (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gint ret;
+
+ CHECK_ARG_COUNT("mpfr.catalan", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_const_catalan(rop, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_get_d (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gdouble ret;
+
+ CHECK_ARG_COUNT("mpfr.get_d", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_get_d(rop, rnd);
+
+ return seed_value_from_double(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_ulong_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_ulong_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_ulong_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_slong_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_slong_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_slong_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_uint_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_uint_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_uint_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_sint_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_sint_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_sint_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_ushort_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_ushort_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_ushort_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_sshort_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_sshort_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_sshort_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_intmax_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_intmax_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_intmax_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_fits_uintmax_p (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gboolean ret;
+
+ CHECK_ARG_COUNT("mpfr.fits_uintmax_p", 1);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[0], exception);
+
+ ret = mpfr_fits_uintmax_p(rop, rnd);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_get_exp (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ mpfr_ptr ptr = seed_object_get_private(this_object);
+ return seed_value_from_mp_exp_t(ctx, mpfr_get_exp(ptr), exception);
+}
+
+static gboolean
+seed_mpfr_set_exp (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ mpfr_ptr ptr = seed_object_get_private(this_object);
+ mpfr_set_exp(ptr, seed_value_to_mp_exp_t(ctx, value, exception));
+ return TRUE;
+}
+
+static gboolean
+seed_mpfr_set_default_rounding_mode (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ mpfr_set_default_rounding_mode(seed_value_to_mpfr_rnd_t(ctx, value, exception));
+ return TRUE;
+}
+
+static SeedValue
+seed_mpfr_get_default_rounding_mode (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ return seed_value_from_mpfr_rnd_t(ctx, mpfr_get_default_rounding_mode(), exception);
+}
+
+static SeedValue
+seed_mpfr_get_prec (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ mpfr_ptr ptr = seed_object_get_private(this_object);
+ return seed_value_from_mpfr_prec_t(ctx, mpfr_get_prec(ptr), exception);
+}
+
+static gboolean
+seed_mpfr_set_prec (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ mpfr_ptr ptr = seed_object_get_private(this_object);
+ mpfr_set_prec(ptr, seed_value_to_mpfr_prec_t(ctx, value, exception));
+ return TRUE;
+}
+
+static void
+seed_mpfr_finalize (SeedObject obj)
+{
+ mpfr_ptr ptr = seed_object_get_private(obj);
+ if ( ptr )
+ {
+ mpfr_clear(ptr);
+ g_free( ptr );
+ }
+}
+
+static SeedValue
+seed_mpfr_set (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop, op;
+ gdouble dop;
+ gint ret;
+ gchar* str;
+ seed_mpfr_t argt;
+
+ CHECK_ARG_COUNT("mpfr.set", 2);
+
+ rop = seed_object_get_private(this_object);
+ argt = seed_mpfr_arg_type(ctx, args[0], exception);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+
+ switch ( argt )
+ {
+ case SEED_MPFR_MPFR:
+ op = seed_object_get_private(args[0]);
+ ret = mpfr_set(rop, op, rnd);
+ break;
+ case SEED_MPFR_DOUBLE:
+ dop = seed_value_to_double(ctx, args[0], exception);
+ ret = mpfr_set_d(rop, dop, rnd);
+ break;
+ case SEED_MPFR_STRING:
+ str = seed_value_to_string(ctx, args[0], exception);
+ ret = mpfr_set_str(rop, str, 10, rnd);
+ g_free( str );
+ break;
+ default:
+ TYPE_EXCEPTION("mpfr.set", "mpfr_t, double or string");
+ }
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+SeedValue seed_mpfr_set_inf (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+ gint sign;
+
+ CHECK_ARG_COUNT("mpfr.set_inf", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_number(ctx, args[0]) )
+ {
+ sign = seed_value_to_int(ctx, args[0], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.set_inf", "int");
+ }
+
+ mpfr_set_inf(rop, sign);
+
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_set_nan (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop;
+
+ CHECK_ARG_COUNT("mpfr.set_nan", 0);
+
+ rop = seed_object_get_private(this_object);
+
+ mpfr_set_nan(rop);
+
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_swap (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_ptr rop, op;
+
+ CHECK_ARG_COUNT("mpfr.swap", 1);
+
+ rop = seed_object_get_private(this_object);
+
+ if ( seed_value_is_object_of_class(ctx, args[0], mpfr_class) )
+ {
+ op = seed_object_get_private(args[0]);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr.swap", "mpfr_t");
+ }
+
+ mpfr_swap(rop, op);
+
+ return seed_make_null(ctx);
+}
+
+SeedValue seed_mpfr_can_round (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd1, rnd2;
+ mpfr_ptr rop;
+ gboolean ret;
+ mpfr_prec_t prec;
+ mp_exp_t err;
+
+ CHECK_ARG_COUNT("mpfr.can_round", 4);
+
+ rop = seed_object_get_private(this_object);
+ err = seed_value_to_mp_exp_t(ctx, args[0], exception);
+ rnd1 = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+ rnd2 = seed_value_to_mpfr_rnd_t(ctx, args[2], exception);
+ prec = seed_value_to_mpfr_prec_t(ctx, args[3], exception);
+
+ ret = mpfr_can_round(rop, err, rnd1, rnd2, prec);
+
+ return seed_value_from_boolean(ctx, ret, exception);
+}
+
+/* init and set functions, using default precision, or optionally specifying it */
+SeedObject
+seed_mpfr_construct_with_set(SeedContext ctx,
+ SeedObject constructor,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException*exception)
+{
+ mpfr_prec_t prec;
+ mpfr_rnd_t rnd;
+ mpfr_ptr newmp, op;
+ gdouble dbl;
+ gchar* str;
+ SeedObject obj;
+ seed_mpfr_t argt;
+
+ /* TODO: Precision range check */
+ switch ( argument_count )
+ {
+ case 2:
+ prec = mpfr_get_default_prec();
+ break;
+ case 3:
+ if ( seed_value_is_number(ctx, args[1]) )
+ {
+ prec = seed_value_to_mpfr_prec_t(ctx, args[1], exception);
+ }
+ else
+ {
+ TYPE_EXCEPTION("mpfr constructor with set", "mpfr_prec_t");
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "mpfr_t constructor.set expected 2 or 3 arguments got %Zd", argument_count);
+ return seed_make_undefined (ctx);
+ }
+
+ /* last argument is always rnd */
+ if ( seed_value_is_number(ctx, args[argument_count - 1]) )
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[argument_count - 1], exception);
+ else
+ {
+ TYPE_EXCEPTION("mpfr constructor", "mpfr_rnd_t");
+ }
+
+ newmp = (mpfr_ptr) g_malloc(sizeof(mpfr_t));
+ mpfr_init2(newmp, prec);
+
+ argt = seed_mpfr_arg_type(ctx, args[0], exception);
+
+ switch ( argt )
+ {
+ case SEED_MPFR_MPFR:
+ obj = seed_value_to_object(ctx, args[0], exception);
+ op = seed_object_get_private(obj);
+ mpfr_set(newmp, op, rnd);
+ break;
+ case SEED_MPFR_DOUBLE:
+ dbl = seed_value_to_double(ctx, args[0], exception);
+ mpfr_set_d(newmp, dbl, rnd);
+ break;
+ case SEED_MPFR_STRING:
+ /* TODO: Assuming base 10 is bad */
+ str = seed_value_to_string(ctx, args[0], exception);
+ mpfr_set_str(newmp, str, 10, rnd);
+ break;
+ default:
+ mpfr_clear( newmp );
+ g_free( newmp );
+ TYPE_EXCEPTION("mpfr_constructor", "mpfr_t, double or string");
+ }
+
+ return seed_make_object(ctx, mpfr_class, newmp);
+}
+
+/* init, optionally specifying precision */
+SeedObject
+seed_mpfr_construct(SeedContext ctx,
+ SeedObject constructor,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException*exception)
+{
+ mpfr_prec_t prec;
+ mpfr_ptr newmp = (mpfr_ptr) g_malloc(sizeof(mpfr_t));
+
+ switch (argument_count)
+ {
+ case 0:
+ mpfr_init(newmp); /* use default precision */
+ break;
+ case 1:
+ if ( seed_value_is_number(ctx, args[0]) )
+ {
+ prec = seed_value_to_mpfr_prec_t(ctx, args[0], exception);
+ mpfr_init2(newmp, prec);
+ }
+ else
+ {
+ g_free( newmp );
+ TYPE_EXCEPTION("mpfr constructor", "mpfr_prec_t");
+ }
+ break;
+ default:
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "mpfr_t constructor expected 0 or 1 arguments got %Zd", argument_count);
+ return seed_make_undefined (ctx);
+ }
+
+ return seed_make_object(ctx, mpfr_class, newmp);
+}
+
+SeedValue seed_mpfr_get_version (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ const gchar* str;
+ SeedValue ret;
+
+ str = mpfr_get_version();
+ ret = seed_value_from_string(ctx, str, exception);
+
+ return ret;
+}
+
+SeedValue seed_mpfr_get_patches (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ const gchar* str;
+ SeedValue ret;
+
+ str = mpfr_get_patches();
+ ret = seed_value_from_string(ctx, str, exception);
+
+ return ret;
+}
+
+static gboolean seed_mpfr_set_emin (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException*exception)
+{
+ mp_exp_t exp;
+ gint ret;
+
+ exp = seed_value_to_mp_exp_t(ctx, value, exception);
+ ret = mpfr_set_emin(exp);
+
+ return ret;
+}
+
+static gboolean seed_mpfr_set_emax (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ mp_exp_t exp;
+ gint ret;
+
+ exp = seed_value_to_mp_exp_t(ctx, value, exception);
+ ret = mpfr_set_emax(exp);
+
+ return ret;
+}
+
+SeedValue seed_mpfr_get_emax (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emax();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_get_emin (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emin();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_get_emin_min (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emin_min();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_get_emin_max (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emin_max();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_get_emax_min (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emax_min();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_get_emax_max (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ mp_exp_t exp;
+ exp = mpfr_get_emax_max();
+ return seed_value_from_mp_exp_t(ctx, exp, exception);
+}
+
+SeedValue seed_mpfr_underflow_p (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ gint ret = mpfr_underflow_p();
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+gboolean seed_mpfr_set_underflow (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException * exception)
+{
+ gboolean setorclear;
+ setorclear = seed_value_to_boolean(ctx, value, exception);
+ if ( setorclear )
+ mpfr_set_underflow();
+ else
+ mpfr_clear_underflow();
+
+ return setorclear;
+}
+
+SeedValue seed_mpfr_overflow_p (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException* exception)
+{
+ gint ret = mpfr_overflow_p();
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+gboolean seed_mpfr_set_overflow (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ gboolean setorclear;
+ setorclear = seed_value_to_boolean(ctx, value, exception);
+ if ( setorclear )
+ mpfr_set_overflow();
+ else
+ mpfr_clear_overflow();
+
+ return setorclear;
+}
+
+SeedValue seed_mpfr_nanflag_p (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException*exception)
+{
+ gint ret = mpfr_nanflag_p();
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+gboolean seed_mpfr_set_nanflag (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ gboolean setorclear;
+ setorclear = seed_value_to_boolean(ctx, value, exception);
+ if ( setorclear )
+ mpfr_set_nanflag();
+ else
+ mpfr_clear_nanflag();
+
+ return setorclear;
+}
+
+SeedValue seed_mpfr_inexflag_p (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException*exception)
+{
+ gint ret = mpfr_inexflag_p();
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+gboolean seed_mpfr_set_inexflag (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ gboolean setorclear;
+ setorclear = seed_value_to_boolean(ctx, value, exception);
+ if ( setorclear )
+ mpfr_set_inexflag();
+ else
+ mpfr_clear_inexflag();
+
+ return setorclear;
+}
+
+SeedValue seed_mpfr_erangeflag_p (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ gint ret = mpfr_erangeflag_p();
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+gboolean seed_mpfr_set_erangeflag (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedValue value,
+ SeedException *exception)
+{
+ gboolean setorclear;
+ setorclear = seed_value_to_boolean(ctx, value, exception);
+ if ( setorclear )
+ mpfr_set_erangeflag();
+ else
+ mpfr_clear_erangeflag();
+
+ return setorclear;
+}
+
+static SeedValue
+seed_mpfr_subnormalize (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gint ret, t;
+
+ CHECK_ARG_COUNT("mpfr.subnormalize", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+ t = seed_value_to_int(ctx, args[0], exception);
+
+ ret = mpfr_subnormalize(rop, t, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+static SeedValue
+seed_mpfr_check_range (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException *exception)
+{
+ mpfr_rnd_t rnd;
+ mpfr_ptr rop;
+ gint ret, t;
+
+ CHECK_ARG_COUNT("mpfr.check_range", 2);
+
+ rop = seed_object_get_private(this_object);
+ rnd = seed_value_to_mpfr_rnd_t(ctx, args[1], exception);
+ t = seed_value_to_int(ctx, args[0], exception);
+
+ ret = mpfr_check_range(rop, t, rnd);
+
+ return seed_value_from_int(ctx, ret, exception);
+}
+
+seed_static_value mpfr_ns_values[] =
+{
+ {"default_rounding_mode", seed_mpfr_get_default_rounding_mode, seed_mpfr_set_default_rounding_mode, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emax", seed_mpfr_get_emax, seed_mpfr_set_emax, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emin", seed_mpfr_get_emin, seed_mpfr_set_emin, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emin_min", seed_mpfr_get_emin_min, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emin_max", seed_mpfr_get_emin_max, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emax_min", seed_mpfr_get_emax_min, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"emax_max", seed_mpfr_get_emax_max, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"underflow", seed_mpfr_underflow_p, seed_mpfr_set_underflow, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"overflow", seed_mpfr_overflow_p, seed_mpfr_set_overflow, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"nanflag", seed_mpfr_nanflag_p, seed_mpfr_set_nanflag, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"inexflag", seed_mpfr_inexflag_p, seed_mpfr_set_inexflag, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"erangeflag", seed_mpfr_erangeflag_p, seed_mpfr_set_erangeflag, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"version", seed_mpfr_get_version, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"patches", seed_mpfr_get_patches, NULL, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {NULL, NULL, NULL, 0}
+};
+
+seed_static_function mpfr_ns_funcs[] =
+{
+ {"free_cache", seed_mpfr_free_cache, 0},
+ {"clear_flags", seed_mpfr_clear_flags, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_function mpfr_funcs[] =
+{
+ {"add", seed_mpfr_add, 0},
+ {"sub", seed_mpfr_sub, 0},
+ {"mul", seed_mpfr_mul, 0},
+ {"div", seed_mpfr_div, 0},
+ {"sqrt", seed_mpfr_sqrt, 0},
+ {"sqr", seed_mpfr_sqr, 0},
+ {"pow", seed_mpfr_pow, 0},
+ {"mul_2si", seed_mpfr_mul_2si, 0},
+ {"div_2si", seed_mpfr_div_2si, 0},
+ {"root", seed_mpfr_root, 0},
+ {"rec_sqrt", seed_mpfr_rec_sqrt, 0},
+ {"cbrt", seed_mpfr_cbrt, 0},
+ {"neg", seed_mpfr_neg, 0},
+ {"abs", seed_mpfr_abs, 0},
+ {"rint", seed_mpfr_rint, 0},
+ {"ceil", seed_mpfr_ceil, 0},
+ {"floor", seed_mpfr_floor, 0},
+ {"round", seed_mpfr_round, 0},
+ {"trunc", seed_mpfr_trunc, 0},
+ {"prec_round", seed_mpfr_prec_round, 0},
+ {"can_round", seed_mpfr_can_round, 0},
+ {"signbit", seed_mpfr_signbit, 0},
+ {"setsign", seed_mpfr_setsign, 0},
+ {"copysign", seed_mpfr_copysign, 0},
+ {"nexttoward", seed_mpfr_nexttoward, 0},
+ {"nextabove", seed_mpfr_nextabove, 0},
+ {"nextbelow", seed_mpfr_nextbelow, 0},
+ {"rint_ceil", seed_mpfr_rint_ceil, 0},
+ {"rint_floor", seed_mpfr_rint_floor, 0},
+ {"rint_round", seed_mpfr_rint_round, 0},
+ {"rint_trunc", seed_mpfr_rint_trunc, 0},
+ {"min", seed_mpfr_min, 0},
+ {"max", seed_mpfr_max, 0},
+ {"frac", seed_mpfr_frac, 0},
+ {"fmod", seed_mpfr_fmod, 0},
+ {"remainder", seed_mpfr_remainder, 0},
+ {"integer_p", seed_mpfr_integer_p, 0},
+ {"dim", seed_mpfr_dim, 0},
+ {"sin", seed_mpfr_sin, 0},
+ {"cos", seed_mpfr_cos, 0},
+ {"tan", seed_mpfr_tan, 0},
+ {"asin", seed_mpfr_asin, 0},
+ {"acos", seed_mpfr_acos, 0},
+ {"atan", seed_mpfr_atan, 0},
+ {"csc", seed_mpfr_csc, 0},
+ {"sec", seed_mpfr_sec, 0},
+ {"cot", seed_mpfr_cot, 0},
+ {"log", seed_mpfr_log, 0},
+ {"log2", seed_mpfr_log2, 0},
+ {"log10", seed_mpfr_log10, 0},
+ {"sinh", seed_mpfr_sinh, 0},
+ {"cosh", seed_mpfr_cosh, 0},
+ {"tanh", seed_mpfr_tanh, 0},
+ {"csch", seed_mpfr_csch, 0},
+ {"sech", seed_mpfr_sech, 0},
+ {"coth", seed_mpfr_coth, 0},
+ {"asinh", seed_mpfr_asinh, 0},
+ {"acosh", seed_mpfr_acosh, 0},
+ {"atanh", seed_mpfr_atanh, 0},
+ {"log1p", seed_mpfr_log1p, 0},
+ {"expm1", seed_mpfr_expm1, 0},
+ {"li2", seed_mpfr_li2, 0},
+ {"gamma", seed_mpfr_gamma, 0},
+ {"lngamma", seed_mpfr_lngamma, 0},
+ {"zeta", seed_mpfr_zeta, 0},
+ {"erf", seed_mpfr_erf, 0},
+ {"erfc", seed_mpfr_erfc, 0},
+ {"j0", seed_mpfr_j0, 0},
+ {"j1", seed_mpfr_j1, 0},
+ {"jn", seed_mpfr_jn, 0},
+ {"y0", seed_mpfr_y0, 0},
+ {"y1", seed_mpfr_y1, 0},
+ {"yn", seed_mpfr_yn, 0},
+ {"fma", seed_mpfr_fma, 0},
+ {"fms", seed_mpfr_fms, 0},
+ {"agm", seed_mpfr_agm, 0},
+ {"hypot", seed_mpfr_hypot, 0},
+ {"set", seed_mpfr_set, 0},
+ {"set_inf", seed_mpfr_set_inf, 0},
+ {"set_nan", seed_mpfr_set_nan, 0},
+ {"swap", seed_mpfr_swap, 0},
+ {"cmp", seed_mpfr_cmp, 0},
+ {"cmpabs", seed_mpfr_cmpabs, 0},
+ {"cmp_si_2exp", seed_mpfr_cmp_si_2exp, 0},
+ {"greater_p", seed_mpfr_greater_p, 0},
+ {"greaterequal_p", seed_mpfr_greaterequal_p, 0},
+ {"less_p", seed_mpfr_less_p, 0},
+ {"lessequal_p", seed_mpfr_lessequal_p, 0},
+ {"lessgreater_p", seed_mpfr_lessgreater_p, 0},
+ {"equal_p", seed_mpfr_equal_p, 0},
+ {"unordered_p", seed_mpfr_unordered_p, 0},
+ {"nan_p", seed_mpfr_nan_p, 0},
+ {"inf_p", seed_mpfr_inf_p, 0},
+ {"number_p", seed_mpfr_number_p, 0},
+ {"zero_p", seed_mpfr_zero_p, 0},
+ {"sgn", seed_mpfr_sgn, 0},
+ {"get_d", seed_mpfr_get_d, 0},
+ {"fits_ulong_p", seed_mpfr_fits_ulong_p, 0},
+ {"fits_slong_p", seed_mpfr_fits_slong_p, 0},
+ {"fits_uint_p", seed_mpfr_fits_uint_p, 0},
+ {"fits_sint_p", seed_mpfr_fits_sint_p, 0},
+ {"fits_ushort_p", seed_mpfr_fits_ushort_p, 0},
+ {"fits_sshort_p", seed_mpfr_fits_sshort_p, 0},
+ {"fits_intmax_p", seed_mpfr_fits_intmax_p, 0},
+ {"fits_uintmax_p", seed_mpfr_fits_uintmax_p, 0},
+ {"out_str", seed_mpfr_out_str, 0},
+ {"print", seed_mpfr_print, 0},
+ {"pi", seed_mpfr_const_pi, 0},
+ {"euler", seed_mpfr_const_euler, 0},
+ {"catalan", seed_mpfr_const_catalan, 0},
+ {"subnormalize", seed_mpfr_subnormalize, 0},
+ {"check_range", seed_mpfr_check_range, 0},
+ {NULL, NULL, 0}
+};
+
+seed_static_value mpfr_values[] =
+{
+ {"prec", seed_mpfr_get_prec, seed_mpfr_set_prec, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {"exp", seed_mpfr_get_exp, seed_mpfr_set_exp, SEED_PROPERTY_ATTRIBUTE_DONT_DELETE},
+ {NULL, NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine *local_eng)
+{
+ SeedGlobalContext ctx = local_eng->context;
+ seed_class_definition mpfr_def = seed_empty_class;
+ seed_class_definition ns_ref_class_def = seed_empty_class;
+ SeedObject mpfr_constructor, mpfr_constructor_set;
+ SeedClass ns_class;
+
+ ns_ref_class_def.static_values = mpfr_ns_values;
+ ns_ref_class_def.static_functions = mpfr_ns_funcs;
+
+ ns_class = seed_create_class(&ns_ref_class_def);
+
+ ns_ref = seed_make_object(ctx, ns_class, NULL);
+ seed_value_protect(ctx, ns_ref);
+
+ mpfr_def.class_name = "mpfr_t";
+ mpfr_def.static_functions = mpfr_funcs;
+ mpfr_def.finalize = seed_mpfr_finalize;
+ mpfr_def.static_values = mpfr_values;
+
+ mpfr_class = seed_create_class(&mpfr_def);
+
+ mpfr_constructor = seed_make_constructor(ctx, mpfr_class, seed_mpfr_construct);
+ mpfr_constructor_set = seed_make_constructor(ctx, mpfr_class, seed_mpfr_construct_with_set);
+
+ seed_object_set_property(ctx, ns_ref, "mpfr_t", mpfr_constructor);
+ seed_object_set_property(ctx, mpfr_constructor, "set", mpfr_constructor_set);
+
+ /* Setup enums */
+ DEFINE_ENUM_MEMBER(ns_ref, GMP_RNDN);
+ DEFINE_ENUM_MEMBER(ns_ref, GMP_RNDZ);
+ DEFINE_ENUM_MEMBER(ns_ref, GMP_RNDU);
+ DEFINE_ENUM_MEMBER(ns_ref, GMP_RNDD);
+
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "VERSION_MAJOR", MPFR_VERSION_MAJOR);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "VERSION_MINOR", MPFR_VERSION_MINOR);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "VERSION_PATCHLEVEL", MPFR_VERSION_PATCHLEVEL);
+ seed_object_set_property(ctx, ns_ref, "VERSION_STRING",
+ seed_value_from_string(ctx, MPFR_VERSION_STRING, NULL));
+
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "PREC_MIN", MPFR_PREC_MIN);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "PREC_MAX", MPFR_PREC_MAX);
+
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "EMAX_DEFAULT", MPFR_EMAX_DEFAULT);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "EMIN_DEFAULT", MPFR_EMIN_DEFAULT);
+
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "NAN_KIND", MPFR_NAN_KIND);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "INF_KIND", MPFR_INF_KIND);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "ZERO_KIND", MPFR_ZERO_KIND);
+ DEFINE_ENUM_MEMBER_EXT(ns_ref, "REGULAR_KIND", MPFR_REGULAR_KIND);
+
+ return ns_ref;
+}
+
diff --git a/modules/mpfr/seed-mpfr.h b/modules/mpfr/seed-mpfr.h
new file mode 100644
index 0000000..35ed94c
--- /dev/null
+++ b/modules/mpfr/seed-mpfr.h
@@ -0,0 +1,175 @@
+#ifndef _SEED_MPFR_H_
+#define _SEED_MPFR_H_
+
+#include <seed-module.h>
+#include <seed.h>
+
+#define TYPE_EXCEPTION(name, wanted) \
+ seed_make_exception(ctx, exception, "TypeError", name " expected " wanted ); \
+ return seed_make_undefined(ctx);
+
+#if 0 /* TODO: Make this work */
+/* kind of stupid hack */
+#if MPFR_PREC_MAX == G_MAXLONG
+ #define seed_value_to_mpfr_prec_t(a, b, c) seed_value_to_ulong(a, b, c)
+ #define seed_value_from_mpfr_prec_t(a, b, c) seed_value_from_ulong(a, b, c)
+#elif MPFR_PREC_MAX == G_MAXUSHORT
+ #define seed_value_to_mpfr_prec_t(a, b, c) seed_value_to_ushort(a, b, c)
+ #define seed_value_from_mpfr_prec_t(a, b, c) seed_value_from_ushort(a, b, c)
+#elif MPFR_PREC_MAX == G_MAXINT
+ #define seed_value_to_mpfr_prec_t(a, b, c) seed_value_to_int(a, b, c)
+ #define seed_value_from_mpfr_prec_t(a, b, c) seed_value_from_int(a, b, c)
+#elif MPFR_PREC_MAX == G_MAXUINT64
+ #define seed_value_to_mpfr_prec_t(a, b, c) seed_value_to_uint64(a, b, c)
+ #define seed_value_from_mpfr_prec_t(a, b, c) seed_value_from_uint64(a, b, c)
+#else
+ #error "Wrong mpfr_prec_t size somehow?"
+#endif
+#endif
+
+#define seed_value_to_mpfr_prec_t(a, b, c) seed_value_to_uint64(a, b, c)
+#define seed_value_from_mpfr_prec_t(a, b, c) seed_value_from_uint64(a, b, c)
+
+/* TODO: Right size for this */
+#define seed_value_to_mpfr_rnd_t(a, b, c) seed_value_to_char(a, b, c)
+#define seed_value_from_mpfr_rnd_t(a, b, c) seed_value_from_char(a, b, c)
+
+#define seed_value_from_mp_exp_t(a, b, c) seed_value_from_ulong(a, b, c)
+#define seed_value_to_mp_exp_t(a, b, c) seed_value_to_ulong(a, b, c)
+
+
+#define DEF_SEED_MPFR_FUNC(name) SeedValue name( SeedContext,SeedObject,\
+SeedObject, gsize, const SeedValue[], SeedException*)
+
+extern SeedObject ns_ref;
+extern SeedClass mpfr_class;
+
+typedef enum _seed_mpfr_t
+{
+ SEED_MPFR_UNKNOWN = 0,
+ SEED_MPFR_MPFR = 1 << 1,
+ SEED_MPFR_DOUBLE = 1 << 2,
+ SEED_MPFR_STRING = 1 << 3,
+} seed_mpfr_t;
+
+inline seed_mpfr_t seed_mpfr_arg_type(SeedContext, SeedValue, SeedException);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_neg);
+DEF_SEED_MPFR_FUNC(seed_mpfr_abs);
+DEF_SEED_MPFR_FUNC(seed_mpfr_dim);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_rint);
+DEF_SEED_MPFR_FUNC(seed_mpfr_ceil);
+DEF_SEED_MPFR_FUNC(seed_mpfr_floor);
+DEF_SEED_MPFR_FUNC(seed_mpfr_round);
+DEF_SEED_MPFR_FUNC(seed_mpfr_trunc);
+DEF_SEED_MPFR_FUNC(seed_mpfr_frac);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_nexttoward);
+DEF_SEED_MPFR_FUNC(seed_mpfr_nextabove);
+DEF_SEED_MPFR_FUNC(seed_mpfr_nextbelow);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_prec_round);
+DEF_SEED_MPFR_FUNC(seed_mpfr_signbit);
+DEF_SEED_MPFR_FUNC(seed_mpfr_setsign);
+DEF_SEED_MPFR_FUNC(seed_mpfr_copysign);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_min);
+DEF_SEED_MPFR_FUNC(seed_mpfr_max);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_fmod);
+DEF_SEED_MPFR_FUNC(seed_mpfr_remainder);
+DEF_SEED_MPFR_FUNC(seed_mpfr_integer_p);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_rint_ceil);
+DEF_SEED_MPFR_FUNC(seed_mpfr_rint_floor);
+DEF_SEED_MPFR_FUNC(seed_mpfr_rint_round);
+DEF_SEED_MPFR_FUNC(seed_mpfr_rint_trunc);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_add);
+DEF_SEED_MPFR_FUNC(seed_mpfr_sub);
+DEF_SEED_MPFR_FUNC(seed_mpfr_mul);
+DEF_SEED_MPFR_FUNC(seed_mpfr_div);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_sin);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cos);
+DEF_SEED_MPFR_FUNC(seed_mpfr_tan);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_csc);
+DEF_SEED_MPFR_FUNC(seed_mpfr_sec);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cot);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_asin);
+DEF_SEED_MPFR_FUNC(seed_mpfr_acos);
+DEF_SEED_MPFR_FUNC(seed_mpfr_atan);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_log);
+DEF_SEED_MPFR_FUNC(seed_mpfr_log2);
+DEF_SEED_MPFR_FUNC(seed_mpfr_log10);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_sinh);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cosh);
+DEF_SEED_MPFR_FUNC(seed_mpfr_tanh);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_csch);
+DEF_SEED_MPFR_FUNC(seed_mpfr_sech);
+DEF_SEED_MPFR_FUNC(seed_mpfr_coth);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_asinh);
+DEF_SEED_MPFR_FUNC(seed_mpfr_acosh);
+DEF_SEED_MPFR_FUNC(seed_mpfr_atanh);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_sqrt);
+DEF_SEED_MPFR_FUNC(seed_mpfr_sqr);
+DEF_SEED_MPFR_FUNC(seed_mpfr_pow);
+DEF_SEED_MPFR_FUNC(seed_mpfr_root);
+DEF_SEED_MPFR_FUNC(seed_mpfr_rec_sqrt);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cbrt);
+DEF_SEED_MPFR_FUNC(seed_mpfr_mul_2si);
+DEF_SEED_MPFR_FUNC(seed_mpfr_div_2si);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_cmp);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cmpabs);
+DEF_SEED_MPFR_FUNC(seed_mpfr_cmp_si_2exp);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_nan_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_inf_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_number_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_zero_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_sgn);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_greater_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_greaterequal_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_less_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_lessequal_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_lessgreater_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_equal_p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_unordered_p);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_log1p);
+DEF_SEED_MPFR_FUNC(seed_mpfr_expm1);
+DEF_SEED_MPFR_FUNC(seed_mpfr_li2);
+DEF_SEED_MPFR_FUNC(seed_mpfr_gamma);
+DEF_SEED_MPFR_FUNC(seed_mpfr_lngamma);
+DEF_SEED_MPFR_FUNC(seed_mpfr_zeta);
+DEF_SEED_MPFR_FUNC(seed_mpfr_erf);
+DEF_SEED_MPFR_FUNC(seed_mpfr_erfc);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_j0);
+DEF_SEED_MPFR_FUNC(seed_mpfr_j1);
+DEF_SEED_MPFR_FUNC(seed_mpfr_jn);
+DEF_SEED_MPFR_FUNC(seed_mpfr_y0);
+DEF_SEED_MPFR_FUNC(seed_mpfr_y1);
+DEF_SEED_MPFR_FUNC(seed_mpfr_yn);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_fma);
+DEF_SEED_MPFR_FUNC(seed_mpfr_fms);
+DEF_SEED_MPFR_FUNC(seed_mpfr_agm);
+DEF_SEED_MPFR_FUNC(seed_mpfr_hypot);
+
+DEF_SEED_MPFR_FUNC(seed_mpfr_free_cache);
+DEF_SEED_MPFR_FUNC(seed_mpfr_clear_flags);
+
+
+#endif /* _SEED_MFPR_H_ */
+
diff --git a/modules/multiprocessing/Makefile.am b/modules/multiprocessing/Makefile.am
new file mode 100644
index 0000000..e340817
--- /dev/null
+++ b/modules/multiprocessing/Makefile.am
@@ -0,0 +1,29 @@
+if BUILD_MULTIPROCESSING_MODULE
+
+EXTRA_DIST = fork.js bi.js
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_multiprocessing.la
+
+libseed_multiprocessing_la_SOURCES = \
+ seed-multiprocessing.c
+
+libseed_multiprocessing_la_CFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_multiprocessing_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_multiprocessing_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+endif
+
+
diff --git a/modules/multiprocessing/Makefile.in b/modules/multiprocessing/Makefile.in
new file mode 100644
index 0000000..73df59f
--- /dev/null
+++ b/modules/multiprocessing/Makefile.in
@@ -0,0 +1,662 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/multiprocessing
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_MULTIPROCESSING_MODULE_TRUE@libseed_multiprocessing_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_multiprocessing_la_SOURCES_DIST = seed-multiprocessing.c
+@BUILD_MULTIPROCESSING_MODULE_TRUE@am_libseed_multiprocessing_la_OBJECTS = libseed_multiprocessing_la-seed-multiprocessing.lo
+libseed_multiprocessing_la_OBJECTS = \
+ $(am_libseed_multiprocessing_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_multiprocessing_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_multiprocessing_la_CFLAGS) $(CFLAGS) \
+ $(libseed_multiprocessing_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_MULTIPROCESSING_MODULE_TRUE@am_libseed_multiprocessing_la_rpath = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ -rpath $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_multiprocessing_la_SOURCES)
+DIST_SOURCES = $(am__libseed_multiprocessing_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_MULTIPROCESSING_MODULE_TRUE@EXTRA_DIST = fork.js bi.js
+@BUILD_MULTIPROCESSING_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_MULTIPROCESSING_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ libseed_multiprocessing.la
+
+@BUILD_MULTIPROCESSING_MODULE_TRUE@libseed_multiprocessing_la_SOURCES = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ seed-multiprocessing.c
+
+@BUILD_MULTIPROCESSING_MODULE_TRUE@libseed_multiprocessing_la_CFLAGS = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_MULTIPROCESSING_MODULE_TRUE@libseed_multiprocessing_la_LDFLAGS = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ -module -avoid-version \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+@BUILD_MULTIPROCESSING_MODULE_TRUE@libseed_multiprocessing_la_LIBADD = \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_MULTIPROCESSING_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/multiprocessing/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/multiprocessing/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_multiprocessing.la: $(libseed_multiprocessing_la_OBJECTS) $(libseed_multiprocessing_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_multiprocessing_la_LINK) $(am_libseed_multiprocessing_la_rpath) $(libseed_multiprocessing_la_OBJECTS) $(libseed_multiprocessing_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_multiprocessing_la-seed-multiprocessing.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_multiprocessing_la-seed-multiprocessing.lo: seed-multiprocessing.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_multiprocessing_la_CFLAGS) $(CFLAGS) -MT libseed_multiprocessing_la-seed-multiprocessing.lo -MD -MP -MF $(DEPDIR)/libseed_multiprocessing_la-seed-multiprocessing.Tpo -c -o libseed_multiprocessing_la-seed-multiprocessing.lo `test -f 'seed-multiprocessing.c' || echo '$(srcdir)/'`seed-multiprocessing.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_multiprocessing_la-seed-multiprocessing.Tpo $(DEPDIR)/libseed_multiprocessing_la-seed-multiprocessing.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-multiprocessing.c' object='libseed_multiprocessing_la-seed-multiprocessing.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_multiprocessing_la_CFLAGS) $(CFLAGS) -c -o libseed_multiprocessing_la-seed-multiprocessing.lo `test -f 'seed-multiprocessing.c' || echo '$(srcdir)/'`seed-multiprocessing.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/multiprocessing/bi.js b/modules/multiprocessing/bi.js
new file mode 100755
index 0000000..a90c3d1
--- /dev/null
+++ b/modules/multiprocessing/bi.js
@@ -0,0 +1,28 @@
+#!/usr/bin/env seed
+
+multiprocessing = imports.multiprocessing;
+Gtk = imports.gi.Gtk;
+os = imports.os;
+JSON = imports.JSON;
+
+pipes = new multiprocessing.Pipe();
+child_pid = os.fork();
+
+if (child_pid == 0)
+{
+ mine = pipes[0];
+ mine.add_watch(1,
+ function()
+ {
+ var message = {type: "PING",
+ data: "Hello!"};
+ mine.write(JSON.stringify(message));
+ return true;
+ });
+ Gtk.main();
+}
+
+mine = pipes[1];
+mine.write("Ping");
+message = JSON.parse(mine.read());
+print("Parent Got: " + message.type + ": " + message.data);
diff --git a/modules/multiprocessing/fork.js b/modules/multiprocessing/fork.js
new file mode 100755
index 0000000..5990b4e
--- /dev/null
+++ b/modules/multiprocessing/fork.js
@@ -0,0 +1,42 @@
+#!/usr/bin/env seed
+
+multiprocessing = imports.multiprocessing;
+Gtk = imports.gi.Gtk;
+GLib = imports.gi.GLib;
+os = imports.os;
+JSON = imports.JSON;
+
+pipe = new multiprocessing.Pipe();
+child_pid = os.fork();
+
+if (child_pid == 0)
+{
+ Gtk.init(null, null);
+
+ childs = pipe[0];
+ w = new Gtk.Window();
+ l = new Gtk.Label();
+ w.add(l);
+
+ w.show_all();
+ childs.add_watch(1,
+ function(source, condition, label)
+ {
+ label.label = source.read();
+ return true;
+ }, l);
+ Gtk.main();
+}
+Gtk.init(null, null);
+parents = pipe[1];
+
+w = new Gtk.Window();
+l = new Gtk.Entry();
+w.add(l);
+w.show_all();
+
+l.signal.activate.connect(function(entry){parents.write(entry.text);});
+
+Gtk.main();
+
+
diff --git a/modules/multiprocessing/seed-multiprocessing.c b/modules/multiprocessing/seed-multiprocessing.c
new file mode 100644
index 0000000..38d0655
--- /dev/null
+++ b/modules/multiprocessing/seed-multiprocessing.c
@@ -0,0 +1,212 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed-module.h>
+
+#include <unistd.h>
+#include <stdio.h>
+
+SeedEngine *eng;
+SeedObject namespace_ref;
+SeedClass pipe_class;
+
+typedef struct _pipe_priv {
+ GIOChannel *read;
+ GIOChannel *write;
+} pipe_priv;
+
+void pipe_finalize(SeedObject pipeobj)
+{
+ pipe_priv *priv = seed_object_get_private(pipeobj);
+ g_io_channel_unref(priv->read);
+ g_io_channel_unref(priv->write);
+ g_free(priv);
+}
+
+SeedObject seed_construct_pipe(SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject jsone, jstwo, jsret;
+ int fd1[2], fd2[2];
+ pipe_priv *priv_one, *priv_two;
+
+ CHECK_ARG_COUNT("multiprocessing.pipe constructor", 0);
+
+ if (pipe(fd1) < 0)
+ {
+ perror("Pipe failed. Make me a javascript exception");
+ return seed_make_null(ctx);
+ }
+ if (pipe(fd2) < 0)
+ {
+ perror("Pipe failed. Make me a javascript exception");
+ return seed_make_null(ctx);
+ }
+
+ priv_one = g_new0(pipe_priv, 1);
+ priv_two = g_new0(pipe_priv, 1);
+
+ priv_one->read = g_io_channel_unix_new(fd1[0]);
+ priv_one->write = g_io_channel_unix_new(fd2[1]);
+ priv_two->read = g_io_channel_unix_new(fd2[0]);
+ priv_two->write = g_io_channel_unix_new(fd1[1]);
+
+ g_io_channel_set_close_on_unref(priv_one->read, TRUE);
+ g_io_channel_set_close_on_unref(priv_one->write, TRUE);
+ g_io_channel_set_close_on_unref(priv_two->read, TRUE);
+ g_io_channel_set_close_on_unref(priv_two->write, TRUE);
+
+ jsret = seed_make_object(ctx, 0, 0);
+ jsone = seed_make_object(ctx, pipe_class, priv_one);
+ jstwo = seed_make_object(ctx, pipe_class, priv_two);
+
+ seed_object_set_property_at_index(ctx, jsret, 0, jsone, exception);
+ seed_object_set_property_at_index(ctx, jsret, 1, jstwo, exception);
+
+ return jsret;
+}
+
+#define GET_CHANNEL pipe_priv * priv = \
+ seed_object_get_private(this_object)
+
+SeedValue seed_pipe_read(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ SeedValue ret;
+ gchar *read;
+ GET_CHANNEL;
+
+ CHECK_ARG_COUNT("multiprocessing.pipe.read", 0);
+
+ g_io_channel_read_line(priv->read, &read, 0, 0, 0);
+ ret = seed_value_from_string(ctx, read, exception);
+ g_free(read);
+
+ return ret;
+}
+
+typedef struct _marshal_privates {
+ SeedObject function;
+ SeedObject source;
+ SeedValue user_data;
+} marshal_privates;
+
+static gboolean gio_marshal_func(GIOChannel * source,
+ GIOCondition condition, gpointer data)
+{
+ SeedGlobalContext ctx = seed_context_create(eng->group, 0);
+ SeedValue jscondition = seed_value_from_long(ctx, (glong) condition, 0);
+ SeedValue args[3], ret;
+ marshal_privates *priv = (marshal_privates *) data;
+ gboolean bret;
+
+ args[0] = priv->source;
+ args[1] = jscondition;
+ args[2] = priv->user_data;
+
+ ret = seed_object_call(ctx, priv->function, 0, 3, args, 0);
+
+ bret = seed_value_to_boolean(ctx, ret, 0);
+ seed_context_unref(ctx);
+
+ if (!bret)
+ g_free(priv);
+
+ return bret;
+}
+
+SeedValue seed_pipe_write(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar *data;
+ gsize written;
+ gchar eol = '\n';
+ GET_CHANNEL;
+
+ CHECK_ARG_COUNT("multiprocessing.pipe.write", 1);
+
+ data = seed_value_to_string(ctx, arguments[0], exception);
+ g_io_channel_write_chars(priv->write, data, -1, &written, 0);
+ g_io_channel_write_chars(priv->write, &eol, 1, 0, 0);
+ g_io_channel_flush(priv->write, 0);
+
+ return seed_value_from_int(ctx, written, exception);
+}
+
+SeedValue seed_pipe_add_watch(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ GET_CHANNEL;
+
+ marshal_privates *mpriv = g_malloc0(sizeof(marshal_privates));
+ glong condition = seed_value_to_long(ctx, arguments[0], exception);
+
+ mpriv->function = arguments[1];
+ mpriv->source = this_object;
+ mpriv->user_data = argument_count == 3 ? arguments[2] : seed_make_null(ctx);
+
+ g_io_add_watch(priv->read, condition, gio_marshal_func, mpriv);
+
+ return seed_value_from_boolean(ctx, TRUE, exception);
+}
+
+seed_static_function pipe_funcs[] = {
+ {"read", seed_pipe_read, 0},
+ {"write", seed_pipe_write, 0},
+ {"add_watch", seed_pipe_add_watch, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine * local_eng)
+{
+ SeedObject pipe_constructor;
+ seed_class_definition pipe_class_def = seed_empty_class;
+ eng = local_eng;
+
+ namespace_ref = seed_make_object(eng->context, 0, 0);
+
+ pipe_class_def.class_name = "Pipe";
+ pipe_class_def.static_functions = pipe_funcs;
+ pipe_class_def.finalize = pipe_finalize;
+
+ pipe_class = seed_create_class(&pipe_class_def);
+
+ pipe_constructor = seed_make_constructor(eng->context,
+ 0, seed_construct_pipe);
+
+ seed_object_set_property(eng->context,
+ namespace_ref, "Pipe", pipe_constructor);
+
+ return namespace_ref;
+}
diff --git a/modules/os/Makefile.am b/modules/os/Makefile.am
new file mode 100644
index 0000000..018f7e5
--- /dev/null
+++ b/modules/os/Makefile.am
@@ -0,0 +1,27 @@
+if BUILD_OS_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_os.la
+
+libseed_os_la_SOURCES = \
+ seed-os.c
+
+libseed_os_la_CFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_os_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(SEED_DEBUG_LDFLAGS)
+
+libseed_os_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ -lutil \
+ $(SEED_PROFILE_LIBS)
+
+endif
diff --git a/modules/os/Makefile.in b/modules/os/Makefile.in
new file mode 100644
index 0000000..895ada9
--- /dev/null
+++ b/modules/os/Makefile.in
@@ -0,0 +1,661 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/os
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_OS_MODULE_TRUE@libseed_os_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_OS_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_os_la_SOURCES_DIST = seed-os.c
+@BUILD_OS_MODULE_TRUE@am_libseed_os_la_OBJECTS = \
+@BUILD_OS_MODULE_TRUE@ libseed_os_la-seed-os.lo
+libseed_os_la_OBJECTS = $(am_libseed_os_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_os_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libseed_os_la_CFLAGS) \
+ $(CFLAGS) $(libseed_os_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_OS_MODULE_TRUE@am_libseed_os_la_rpath = -rpath $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_os_la_SOURCES)
+DIST_SOURCES = $(am__libseed_os_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_OS_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_OS_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_OS_MODULE_TRUE@ libseed_os.la
+
+@BUILD_OS_MODULE_TRUE@libseed_os_la_SOURCES = \
+@BUILD_OS_MODULE_TRUE@ seed-os.c
+
+@BUILD_OS_MODULE_TRUE@libseed_os_la_CFLAGS = \
+@BUILD_OS_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_OS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_OS_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_OS_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_OS_MODULE_TRUE@libseed_os_la_LDFLAGS = \
+@BUILD_OS_MODULE_TRUE@ -module -avoid-version \
+@BUILD_OS_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_OS_MODULE_TRUE@ $(SEED_DEBUG_LDFLAGS)
+
+@BUILD_OS_MODULE_TRUE@libseed_os_la_LIBADD = \
+@BUILD_OS_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_OS_MODULE_TRUE@ -lutil \
+@BUILD_OS_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/os/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/os/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_os.la: $(libseed_os_la_OBJECTS) $(libseed_os_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_os_la_LINK) $(am_libseed_os_la_rpath) $(libseed_os_la_OBJECTS) $(libseed_os_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_os_la-seed-os.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_os_la-seed-os.lo: seed-os.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_os_la_CFLAGS) $(CFLAGS) -MT libseed_os_la-seed-os.lo -MD -MP -MF $(DEPDIR)/libseed_os_la-seed-os.Tpo -c -o libseed_os_la-seed-os.lo `test -f 'seed-os.c' || echo '$(srcdir)/'`seed-os.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_os_la-seed-os.Tpo $(DEPDIR)/libseed_os_la-seed-os.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-os.c' object='libseed_os_la-seed-os.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_os_la_CFLAGS) $(CFLAGS) -c -o libseed_os_la-seed-os.lo `test -f 'seed-os.c' || echo '$(srcdir)/'`seed-os.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/os/seed-os.c b/modules/os/seed-os.c
new file mode 100644
index 0000000..0f9dcf0
--- /dev/null
+++ b/modules/os/seed-os.c
@@ -0,0 +1,1167 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#define _GNU_SOURCE
+
+#include "../../config.h"
+
+#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <sys/stat.h>
+#include <sys/utsname.h>
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
+#include <sys/param.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <termios.h>
+#if defined(__FreeBSD__)
+#include <libutil.h>
+#endif
+#include <unistd.h>
+
+#include <fcntl.h>
+
+#ifdef HAVE_PTY_H
+#include <pty.h>
+#endif
+
+#include <seed.h>
+
+SeedObject os_namespace;
+
+#define EXPECTED_EXCEPTION(name, argnum) \
+ seed_make_exception (ctx, exception, "ArgumentError", name " expected " argnum " got %Zd", argument_count); \
+ return seed_make_undefined (ctx);
+
+SeedValue
+seed_os_realpath (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue sv;
+ gchar *arg;
+ gchar *resolved_path;
+ gchar *ret;
+ gsize path_max;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.realpath", "1 argument");
+ }
+ arg = seed_value_to_string (ctx, arguments[0], exception);
+#ifdef PATH_MAX
+ path_max = PATH_MAX;
+#else
+ path_max = pathconf (arg, _PC_PATH_MAX);
+ if (path_max <= 0)
+ path_max = 4096;
+#endif
+ resolved_path = (gchar *) g_malloc (path_max);
+ ret = realpath(arg, resolved_path);
+ g_free (arg);
+
+ sv = seed_value_from_string (ctx, ret, exception);
+ g_free (resolved_path);
+
+ return sv;
+}
+
+SeedValue
+seed_os_chdir (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar *arg;
+ gint ret;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.chdir", "1 argument");
+ }
+ arg = seed_value_to_string (ctx, arguments[0], exception);
+ ret = chdir (arg);
+ g_free (arg);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+SeedValue
+seed_os_fchdir (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint ret, arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.fchdir", "1 argument");
+ }
+ arg = seed_value_to_int (ctx, arguments[0], exception);
+ ret = fchdir (arg);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+SeedValue
+seed_os_getcwd (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue seed_ret;
+ gchar *ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getcwd", "no arguments");
+ }
+ ret = getcwd (NULL, 0);
+ seed_ret = seed_value_from_string (ctx, ret, exception);
+ g_free (ret);
+
+ return seed_ret;
+}
+
+SeedValue
+seed_os_ctermid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue seed_ret;
+ gchar *ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getcwd", "no arguments");
+ }
+ // ctermid returns a static buffer
+ ret = ctermid (NULL);
+ seed_ret = seed_value_from_string (ctx, ret, exception);
+
+ return seed_ret;
+}
+
+SeedValue
+seed_os_getegid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gid_t ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getegid", "no arguments");
+ }
+ ret = getegid ();
+
+ return seed_value_from_long (ctx, (glong) ret, exception);
+}
+
+SeedValue
+seed_os_geteuid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ uid_t ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.geteuid", "no arguments");
+ }
+ ret = geteuid ();
+
+ return seed_value_from_long (ctx, (glong) ret, exception);
+}
+
+SeedValue
+seed_os_getgid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gid_t ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getgid", "no arguments");
+ }
+ ret = getgid ();
+
+ return seed_value_from_long (ctx, (glong) ret, exception);
+}
+
+SeedValue
+seed_os_getuid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ uid_t ret;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getuid", "no arguments");
+ }
+ ret = getuid ();
+
+ return seed_value_from_long (ctx, (glong) ret, exception);
+}
+
+SeedValue
+seed_os_getgroups (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue ret;
+ SeedValue *groups;
+ gid_t *group_list;
+ guint num_groups, i;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getgroups", "no arguments");
+ }
+ num_groups = getgroups(0, NULL);
+ group_list = g_alloca (num_groups * sizeof(gid_t));
+ groups = g_alloca (num_groups * sizeof(SeedValue));
+ if (getgroups (num_groups, group_list) < 0)
+ {
+ // TODO: Decide on how to handle exceptions for things like this...
+ // Investigate python
+ return seed_make_null (ctx);
+ }
+
+ for (i = 0; i < num_groups; i++)
+ {
+ groups[i] = seed_value_from_long (ctx, (glong) group_list[i], exception);
+ }
+ ret = seed_make_array (ctx, groups, num_groups, exception);
+
+ return ret;
+}
+
+SeedValue
+seed_os_getlogin (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getlogin", "no arguments");
+ }
+
+ return seed_value_from_string (ctx, getlogin(), exception);
+}
+
+SeedValue
+seed_os_getpgid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ pid_t pid;
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.getpgid", "1 argument");
+ }
+ pid = (pid_t) seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_long (ctx, (glong) getpgid(pid), exception);
+}
+
+SeedValue
+seed_os_getpgrp (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getpgrp", "no arguments");
+ }
+
+ return seed_value_from_long (ctx, (glong) getpgrp(), exception);
+}
+
+SeedValue
+seed_os_getpid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getpid", "no arguments");
+ }
+
+ return seed_value_from_long (ctx, (glong) getpid(), exception);
+}
+
+SeedValue
+seed_os_getppid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.getppid", "no arguments");
+ }
+
+ return seed_value_from_long (ctx, (glong) getppid(), exception);
+}
+
+SeedValue
+seed_os_getenv (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue ret;
+ gchar *name, *value;
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.getenv", "1 arguments");
+ }
+ name = seed_value_to_string (ctx, arguments[0], exception);
+ value = getenv (name);
+ ret = seed_value_from_string (ctx, value, exception);
+ g_free (name);
+
+ return ret;
+}
+
+SeedValue
+seed_os_putenv (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint ret;
+ gchar *name, *value, *arg;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("os.putenv", "2 arguments");
+ }
+ name = seed_value_to_string (ctx, arguments[0], exception);
+ value = seed_value_to_string (ctx, arguments[1], exception);
+ arg = g_strconcat (name, "=", value, NULL);
+
+ ret = putenv (arg);
+
+ g_free (name);
+ g_free (value);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+
+SeedValue
+seed_os_setegid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gid_t arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.setegid", "1 argument");
+ }
+ arg = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, setegid(arg), exception);
+}
+
+SeedValue
+seed_os_setgid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gid_t arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.setgid", "1 argument");
+ }
+ arg = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, setgid(arg), exception);
+}
+
+SeedValue
+seed_os_seteuid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ uid_t arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.seteuid", "1 argument");
+ }
+ arg = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, seteuid(arg), exception);
+}
+
+SeedValue
+seed_os_setuid (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ uid_t arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.setuid", "1 argument");
+ }
+ arg = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, setuid(arg), exception);
+}
+
+SeedValue
+seed_os_strerror (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ int arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.strerror", "1 argument");
+ }
+ arg = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_string (ctx, strerror(arg), exception);
+}
+
+SeedValue
+seed_os_umask (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ mode_t arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.umask", "1 argument");
+ }
+ arg = seed_value_to_long (ctx, arguments[0], exception);
+
+ return seed_value_from_long (ctx, umask(arg), exception);
+}
+
+SeedValue
+seed_os_uname (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue elements[5], ret;
+ guint c;
+ struct utsname name;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION("os.uname", "no arguments");
+ }
+ c = uname (&name);
+ // TODO: Do something with c
+ elements[0] = seed_value_from_string (ctx, name.sysname, exception);
+ elements[1] = seed_value_from_string (ctx, name.nodename, exception);
+ elements[2] = seed_value_from_string (ctx, name.release, exception);
+ elements[3] = seed_value_from_string (ctx, name.version, exception);
+ elements[4] = seed_value_from_string (ctx, name.machine, exception);
+ ret = seed_make_array (ctx, elements, 5, exception);
+
+
+ return ret;
+}
+
+
+SeedValue
+seed_os_unsetenv (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint ret;
+ gchar *arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.unsetenv", "1 argument");
+ }
+
+ arg = seed_value_to_string (ctx, arguments[0], exception);
+#if __FreeBSD_version < 700000
+ ret = 0;
+ unsetenv (arg);
+#else
+ ret = unsetenv (arg);
+#endif
+ g_free (arg);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+SeedValue
+seed_os_open (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar *path;
+ gint flags, ret;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("os.open", "2 arguments");
+ }
+
+ path = seed_value_to_string (ctx, arguments[0], exception);
+ flags = seed_value_to_int (ctx, arguments[1], exception);
+
+ ret = open (path, flags);
+ g_free (path);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+SeedValue
+seed_os_close (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.close", "2 arguments");
+ }
+
+ arg = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, close (arg), exception);
+}
+
+SeedValue
+seed_os_dup (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint arg;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION("os.dup", "1 argument");
+ }
+
+ arg = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, dup (arg), exception);
+}
+SeedValue
+seed_os_dup2 (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint arg, arg2;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION("os.dup2", "2 arguments");
+ }
+
+ arg = seed_value_to_int (ctx, arguments[0], exception);
+ arg2 = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, dup2 (arg, arg2), exception);
+}
+
+SeedValue
+seed_os_fchmod (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+ mode_t mode;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.fchmod", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ mode = seed_value_to_long (ctx, arguments[1], exception);
+
+ return seed_value_from_int (ctx, fchmod (fd, mode), exception);
+}
+
+SeedValue
+seed_os_fchown (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+ gid_t gid;
+ uid_t uid;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION ("os.fchown", "3 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ uid = seed_value_to_long (ctx, arguments[1], exception);
+ gid = seed_value_to_long (ctx, arguments[2], exception);
+
+ return seed_value_from_int (ctx, fchown (fd, uid, gid), exception);
+}
+
+SeedValue
+seed_os_fdatasync (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+#if !defined(__FreeBSD__) && !defined(__OpenBSD__)
+ gint fd;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("os.fdatasync", "1 argument");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_int (ctx, fdatasync (fd), exception);
+#else
+ errno = ENOSYS;
+ return seed_value_from_int (ctx, -1, exception);
+#endif
+}
+
+SeedValue
+seed_os_fpathconf (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd, name;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.fpathconf", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ name = seed_value_to_int (ctx, arguments[1], exception);
+
+ return seed_value_from_long (ctx, fpathconf (fd, name), exception);
+}
+
+SeedValue
+seed_os_fsync (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("os.fsync", "1 argument");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_long (ctx, fsync (fd), exception);
+}
+
+SeedValue
+seed_os_ftruncate (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+ off_t length;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.ftruncate", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ length = seed_value_to_int (ctx, arguments[1], exception);
+
+ return seed_value_from_long (ctx, ftruncate (fd, length), exception);
+}
+
+SeedValue
+seed_os_isatty (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("os.isatty", "1 argument");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_boolean (ctx, isatty (fd), exception);
+}
+
+SeedValue
+seed_os_lseek (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd, whence;
+ off_t offset;
+
+ if (argument_count != 3)
+ {
+ EXPECTED_EXCEPTION ("os.lseek", "3 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ offset = seed_value_to_long (ctx, arguments[1], exception);
+ whence = seed_value_to_int (ctx, arguments[2], exception);
+
+ return seed_value_from_long (ctx, lseek (fd, offset, whence), exception);
+}
+
+SeedValue
+seed_os_openpty (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue fds[2], ret;
+ gint master,slave;
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION ("os.openpty", "no arguments");
+ }
+ openpty (&master, &slave, NULL, NULL, NULL);
+
+ fds[0] = seed_value_from_int (ctx, master, exception);
+ fds[1] = seed_value_from_int (ctx, slave, exception);
+
+ ret = seed_make_array (ctx, fds, 2, exception);
+
+ return ret;
+}
+
+SeedValue
+seed_os_pipe (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue fds[2], ret;
+ gint fildes[2];
+
+ if (argument_count != 0)
+ {
+ EXPECTED_EXCEPTION ("os.pipe", "no arguments");
+ }
+ if (pipe (fildes) < 0)
+ {
+ // TODO
+ }
+
+ fds[0] = seed_value_from_int (ctx, fildes[0], exception);
+ fds[1] = seed_value_from_int (ctx, fildes[1], exception);
+
+ ret = seed_make_array (ctx, fds, 2, exception);
+
+ return ret;
+}
+
+SeedValue
+seed_os_read (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedValue ret;
+ gint fd, n, nr;
+ gchar *buf;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.read", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ n = seed_value_to_int (ctx, arguments[1], exception);
+
+ buf = g_alloca (n * sizeof (gchar));
+ nr = read (fd, buf, n);
+ buf[nr] = '\0';
+
+ if (nr)
+ ret = seed_value_from_string (ctx, buf, exception);
+ else
+ ret = seed_make_null (ctx);
+
+ return ret;
+}
+
+SeedValue
+seed_os_write (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd, nw;
+ gchar *buf;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.write", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ buf = seed_value_to_string (ctx, arguments[1], exception);
+
+ nw = write (fd, buf, strlen (buf));
+
+ return seed_value_from_int (ctx, nw, exception);
+}
+
+SeedValue
+seed_os_ttyname (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("os.ttyname", "1 argument");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_string (ctx, ttyname (fd), exception);
+}
+
+SeedValue
+seed_os_tcgetpgrp (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+
+ if (argument_count != 1)
+ {
+ EXPECTED_EXCEPTION ("os.tcgetpgrp", "1 argument");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+
+ return seed_value_from_long (ctx, tcgetpgrp (fd), exception);
+}
+
+SeedValue
+seed_os_tcsetpgrp (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gint fd;
+ pid_t pgrp;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.tcsetpgrp", "2 arguments");
+ }
+ fd = seed_value_to_int (ctx, arguments[0], exception);
+ pgrp = seed_value_to_int (ctx, arguments[1], exception);
+
+ return seed_value_from_int (ctx, tcsetpgrp (fd, pgrp), exception);
+}
+
+SeedValue
+seed_os_access (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ int ret;
+ gchar *path;
+ int amd;
+
+ if (argument_count != 2)
+ {
+ EXPECTED_EXCEPTION ("os.access", "2 arguments");
+ }
+ path = seed_value_to_string (ctx, arguments[0], exception);
+ amd = seed_value_to_int (ctx, arguments[1], exception);
+
+ ret = access (path, amd);
+
+ if (ret == 0)
+ return seed_value_from_boolean (ctx, TRUE, exception);
+ else
+ return seed_value_from_boolean (ctx, FALSE, exception);
+}
+
+static SeedValue
+seed_os_fork (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue arguments[],
+ SeedException *exception)
+{
+ pid_t t = fork();
+
+ return seed_value_from_long (ctx, t, exception);
+}
+
+seed_static_function os_funcs[] = {
+ {"fork", seed_os_fork, 0},
+ {"realpath", seed_os_realpath, 0},
+ {"chdir", seed_os_chdir, 0},
+ {"fchdir", seed_os_fchdir, 0},
+ {"getcwd", seed_os_getcwd, 0},
+ {"ctermid", seed_os_ctermid, 0},
+ {"getegid", seed_os_getegid, 0},
+ {"geteuid", seed_os_geteuid, 0},
+ {"getgid", seed_os_getgid, 0},
+ {"getuid", seed_os_getuid, 0},
+ {"getlogin", seed_os_getlogin, 0},
+ {"getpgid", seed_os_getpgid, 0},
+ {"getpgrp", seed_os_getpgrp, 0},
+ {"getpid", seed_os_getpid, 0},
+ {"getppid", seed_os_getuid, 0},
+ {"getenv", seed_os_getenv, 0},
+ {"putenv", seed_os_putenv, 0},
+ {"setegid", seed_os_setegid, 0},
+ {"setgid", seed_os_setegid, 0},
+ {"seteuid", seed_os_setegid, 0},
+ {"setuid", seed_os_setuid, 0},
+ {"strerror", seed_os_strerror, 0},
+ {"umask", seed_os_umask, 0},
+ {"uname", seed_os_uname, 0},
+ {"unsetenv", seed_os_unsetenv, 0},
+ {"open", seed_os_open, 0},
+ {"close", seed_os_close, 0},
+ {"dup", seed_os_dup, 0},
+ {"dup2", seed_os_dup2, 0},
+ {"fchmod", seed_os_fchmod, 0},
+ {"fchown", seed_os_fchown, 0},
+ {"fdatasync", seed_os_fdatasync, 0},
+ {"fpathconf", seed_os_fpathconf, 0},
+ {"fsync", seed_os_fsync, 0},
+ {"ftruncate", seed_os_ftruncate, 0},
+ {"isatty", seed_os_isatty, 0},
+ {"lseek", seed_os_lseek, 0},
+ {"openpty", seed_os_openpty, 0},
+ {"pipe", seed_os_pipe, 0},
+ {"read", seed_os_read, 0},
+ {"write", seed_os_write, 0},
+ {"ttyname", seed_os_ttyname, 0},
+ {"tcgetpgrp", seed_os_tcgetpgrp, 0},
+ {"tcsetpgrp", seed_os_tcsetpgrp, 0},
+ {"access", seed_os_access, 0},
+ {NULL, NULL, 0}
+};
+
+#define OS_DEFINE_ENUM(name, value) \
+ seed_object_set_property (eng->context, os_namespace, name, \
+ seed_value_from_long (eng->context, value, NULL))
+#define OS_DEFINE_QUICK_ENUM(value) \
+seed_object_set_property (eng->context, os_namespace, #value, \
+ seed_value_from_long (eng->context, value, NULL)) \
+
+SeedObject
+seed_module_init(SeedEngine * eng)
+{
+ SeedClass os_namespace_class;
+ seed_class_definition os_namespace_class_definition = seed_empty_class;
+
+ os_namespace_class_definition.static_functions = os_funcs;
+ os_namespace_class = seed_create_class (&os_namespace_class_definition);
+
+ os_namespace = seed_make_object (eng->context, os_namespace_class, NULL);
+
+ OS_DEFINE_QUICK_ENUM (O_RDONLY);
+ OS_DEFINE_QUICK_ENUM (O_WRONLY);
+ OS_DEFINE_QUICK_ENUM (O_RDWR);
+ OS_DEFINE_QUICK_ENUM (O_APPEND);
+ OS_DEFINE_QUICK_ENUM (O_CREAT);
+ OS_DEFINE_QUICK_ENUM (O_EXCL);
+ OS_DEFINE_QUICK_ENUM (O_TRUNC);
+
+#if defined (O_DSYNC)
+ OS_DEFINE_QUICK_ENUM (O_DSYNC);
+#endif
+#if defined (O_RSYNC)
+ OS_DEFINE_QUICK_ENUM (O_RSYNC);
+#endif
+
+ OS_DEFINE_QUICK_ENUM (O_SYNC);
+ OS_DEFINE_QUICK_ENUM (O_NDELAY);
+ OS_DEFINE_QUICK_ENUM (O_NONBLOCK);
+ OS_DEFINE_QUICK_ENUM (O_NOCTTY);
+ // OS_DEFINE_QUICK_ENUM (O_SHLOCK);
+ // OS_DEFINE_QUICK_ENUM (O_EXLOCK);
+
+ OS_DEFINE_QUICK_ENUM (O_ASYNC);
+#if defined (O_DIRECT)
+ OS_DEFINE_QUICK_ENUM (O_DIRECT);
+#endif
+#if defined (O_DIRECTORY)
+ OS_DEFINE_QUICK_ENUM (O_DIRECTORY);
+#endif
+ OS_DEFINE_QUICK_ENUM (O_NOFOLLOW);
+#if defined (O_NOATIME)
+ OS_DEFINE_QUICK_ENUM (O_NOATIME);
+#endif
+
+ OS_DEFINE_QUICK_ENUM (SEEK_SET);
+ OS_DEFINE_QUICK_ENUM (SEEK_CUR);
+ OS_DEFINE_QUICK_ENUM (SEEK_END);
+
+ OS_DEFINE_QUICK_ENUM (F_OK);
+ OS_DEFINE_QUICK_ENUM (R_OK);
+ OS_DEFINE_QUICK_ENUM (W_OK);
+ OS_DEFINE_QUICK_ENUM (X_OK);
+
+ return os_namespace;
+}
diff --git a/modules/readline/Makefile.am b/modules/readline/Makefile.am
new file mode 100644
index 0000000..6ceb55f
--- /dev/null
+++ b/modules/readline/Makefile.am
@@ -0,0 +1,28 @@
+if BUILD_READLINE_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_readline.la
+
+libseed_readline_la_SOURCES = \
+ seed-readline.c
+
+libseed_readline_la_CFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(FFI_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_readline_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(FFI_LDFLAGS)
+
+libseed_readline_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ -lreadline \
+ $(SEED_PROFILE_LIBS)
+
+endif
diff --git a/modules/readline/Makefile.in b/modules/readline/Makefile.in
new file mode 100644
index 0000000..9a1fab0
--- /dev/null
+++ b/modules/readline/Makefile.in
@@ -0,0 +1,663 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/readline
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_READLINE_MODULE_TRUE@libseed_readline_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_READLINE_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_readline_la_SOURCES_DIST = seed-readline.c
+@BUILD_READLINE_MODULE_TRUE@am_libseed_readline_la_OBJECTS = libseed_readline_la-seed-readline.lo
+libseed_readline_la_OBJECTS = $(am_libseed_readline_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_readline_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_readline_la_CFLAGS) $(CFLAGS) \
+ $(libseed_readline_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_READLINE_MODULE_TRUE@am_libseed_readline_la_rpath = -rpath \
+@BUILD_READLINE_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_readline_la_SOURCES)
+DIST_SOURCES = $(am__libseed_readline_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_READLINE_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_READLINE_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_READLINE_MODULE_TRUE@ libseed_readline.la
+
+@BUILD_READLINE_MODULE_TRUE@libseed_readline_la_SOURCES = \
+@BUILD_READLINE_MODULE_TRUE@ seed-readline.c
+
+@BUILD_READLINE_MODULE_TRUE@libseed_readline_la_CFLAGS = \
+@BUILD_READLINE_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_READLINE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_READLINE_MODULE_TRUE@ $(FFI_CFLAGS) \
+@BUILD_READLINE_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_READLINE_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_READLINE_MODULE_TRUE@libseed_readline_la_LDFLAGS = \
+@BUILD_READLINE_MODULE_TRUE@ -module -avoid-version \
+@BUILD_READLINE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_READLINE_MODULE_TRUE@ $(FFI_LDFLAGS)
+
+@BUILD_READLINE_MODULE_TRUE@libseed_readline_la_LIBADD = \
+@BUILD_READLINE_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_READLINE_MODULE_TRUE@ -lreadline \
+@BUILD_READLINE_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/readline/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/readline/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_readline.la: $(libseed_readline_la_OBJECTS) $(libseed_readline_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_readline_la_LINK) $(am_libseed_readline_la_rpath) $(libseed_readline_la_OBJECTS) $(libseed_readline_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_readline_la-seed-readline.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_readline_la-seed-readline.lo: seed-readline.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_readline_la_CFLAGS) $(CFLAGS) -MT libseed_readline_la-seed-readline.lo -MD -MP -MF $(DEPDIR)/libseed_readline_la-seed-readline.Tpo -c -o libseed_readline_la-seed-readline.lo `test -f 'seed-readline.c' || echo '$(srcdir)/'`seed-readline.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_readline_la-seed-readline.Tpo $(DEPDIR)/libseed_readline_la-seed-readline.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-readline.c' object='libseed_readline_la-seed-readline.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_readline_la_CFLAGS) $(CFLAGS) -c -o libseed_readline_la-seed-readline.lo `test -f 'seed-readline.c' || echo '$(srcdir)/'`seed-readline.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/readline/seed-readline.c b/modules/readline/seed-readline.c
new file mode 100644
index 0000000..cd5ecfe
--- /dev/null
+++ b/modules/readline/seed-readline.c
@@ -0,0 +1,198 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed-module.h>
+
+#include <stdio.h>
+#include <ffi.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+#include <sys/mman.h>
+
+SeedObject namespace_ref;
+SeedEngine *eng;
+gboolean readline_has_initialized = FALSE;
+
+static void
+seed_handle_rl_closure(ffi_cif * cif, void *result, void **args, void *userdata)
+{
+ SeedContext ctx = seed_context_create(eng->group, NULL);
+ SeedValue exception = 0;
+ SeedObject function = (SeedObject) userdata;
+
+ seed_object_call(ctx, function, 0, 0, 0, &exception);
+ if (exception)
+ {
+ gchar *mes = seed_exception_to_string(ctx,
+ exception);
+ g_warning("Exception in readline bind key closure. %s \n", mes);
+ }
+ seed_context_unref((SeedContext) ctx);
+}
+
+// "Leaky" in that it exists for lifetime of program,
+// kind of unavoidable though.
+static ffi_closure *seed_make_rl_closure(SeedObject function)
+{
+ ffi_cif *cif;
+ ffi_closure *closure;
+
+ cif = g_new0(ffi_cif, 1);
+ closure = mmap(0, sizeof(ffi_closure), PROT_READ | PROT_WRITE |
+ PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0);
+ ffi_prep_cif(cif, FFI_DEFAULT_ABI, 0, &ffi_type_sint, 0);
+ ffi_prep_closure(closure, cif, seed_handle_rl_closure, function);
+
+ return closure;
+}
+
+static SeedValue
+seed_readline_bind(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedValue * exception)
+{
+ gchar *key;
+ ffi_closure *c;
+
+ CHECK_ARG_COUNT("readline.bind", 2);
+
+ key = seed_value_to_string(ctx, arguments[0], exception);
+ c = seed_make_rl_closure((SeedObject) arguments[1]);
+
+ rl_bind_key(*key, (Function *) c);
+
+ g_free(key);
+
+ return seed_make_null(ctx);
+}
+
+static SeedValue
+seed_rl_done(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedValue * exception)
+{
+ CHECK_ARG_COUNT("readline.done", 0);
+ rl_done = 1;
+ return seed_make_null (ctx);
+}
+
+static SeedValue
+seed_rl_buffer(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedValue * exception)
+{
+ CHECK_ARG_COUNT("readline.buffer", 0);
+ return seed_value_from_string (ctx, rl_line_buffer, exception);
+}
+
+static SeedValue
+seed_rl_insert(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedValue * exception)
+{
+ gchar *ins;
+ gint ret;
+
+ CHECK_ARG_COUNT("readline.insert", 1);
+
+ ins = seed_value_to_string (ctx, arguments[0], exception);
+ ret = rl_insert_text (ins);
+ g_free (ins);
+
+ return seed_value_from_int (ctx, ret, exception);
+}
+
+static SeedValue
+seed_readline(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedValue * exception)
+{
+ SeedValue valstr = 0;
+ gchar *str = NULL;
+ gchar *buf;
+ const gchar *histfname = g_get_home_dir();
+ gchar *path = g_build_filename(histfname, ".seed_history", NULL);
+
+ if (!readline_has_initialized)
+ {
+ read_history(path);
+ readline_has_initialized = TRUE;
+ }
+
+ CHECK_ARG_COUNT("readline.readline", 1);
+
+ buf = seed_value_to_string(ctx, arguments[0], exception);
+
+ str = readline(buf);
+ if (str && *str)
+ {
+ add_history(str);
+ valstr = seed_value_from_string(ctx, str, exception);
+ g_free(str);
+ }
+
+ write_history(path);
+ history_truncate_file(path, 1000);
+
+ g_free(buf);
+ g_free(path);
+
+ if (valstr == 0)
+ valstr = seed_make_null(ctx);
+
+ return valstr;
+}
+
+seed_static_function readline_funcs[] = {
+ {"readline", seed_readline, 0},
+ {"bind", seed_readline_bind, 0},
+ {"done", seed_rl_done, 0},
+ {"buffer", seed_rl_buffer, 0},
+ {"insert", seed_rl_insert, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine * local_eng)
+{
+ seed_class_definition readline_ns_class_def = seed_empty_class;
+ readline_ns_class_def.static_functions = readline_funcs;
+
+ SeedClass readline_ns_class = seed_create_class(&readline_ns_class_def);
+
+ eng = local_eng;
+
+ namespace_ref = seed_make_object(eng->context, readline_ns_class, 0);
+
+ return namespace_ref;
+}
+
diff --git a/modules/sandbox/Makefile.am b/modules/sandbox/Makefile.am
new file mode 100644
index 0000000..17d4864
--- /dev/null
+++ b/modules/sandbox/Makefile.am
@@ -0,0 +1,26 @@
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+
+seedlib_LTLIBRARIES = \
+ libseed_sandbox.la
+
+libseed_sandbox_la_SOURCES = \
+ seed-sandbox.c
+
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_sandbox_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_sandbox_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+
+
+
diff --git a/modules/sandbox/Makefile.in b/modules/sandbox/Makefile.in
new file mode 100644
index 0000000..941e759
--- /dev/null
+++ b/modules/sandbox/Makefile.in
@@ -0,0 +1,650 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/sandbox
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libseed_sandbox_la_DEPENDENCIES = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(am__DEPENDENCIES_1)
+am_libseed_sandbox_la_OBJECTS = seed-sandbox.lo
+libseed_sandbox_la_OBJECTS = $(am_libseed_sandbox_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_sandbox_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libseed_sandbox_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_sandbox_la_SOURCES)
+DIST_SOURCES = $(libseed_sandbox_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+seedlib_LTLIBRARIES = \
+ libseed_sandbox.la
+
+libseed_sandbox_la_SOURCES = \
+ seed-sandbox.c
+
+AM_CPPFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_sandbox_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS)
+
+libseed_sandbox_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/sandbox/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/sandbox/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_sandbox.la: $(libseed_sandbox_la_OBJECTS) $(libseed_sandbox_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_sandbox_la_LINK) -rpath $(seedlibdir) $(libseed_sandbox_la_OBJECTS) $(libseed_sandbox_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-sandbox.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/sandbox/seed-sandbox.c b/modules/sandbox/seed-sandbox.c
new file mode 100644
index 0000000..20e0a5f
--- /dev/null
+++ b/modules/sandbox/seed-sandbox.c
@@ -0,0 +1,146 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <seed.h>
+
+SeedContext ctx;
+SeedContextGroup group;
+SeedObject namespace_ref;
+SeedClass context_class;
+
+static SeedObject
+seed_construct_sandbox_context (SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject ret;
+ SeedContext c;
+
+ c = seed_context_create (group, NULL);
+ ret = seed_make_object (ctx, context_class, c);
+
+ seed_object_set_property (ctx, ret, "global", seed_context_get_global_object (c));
+ return ret;
+}
+
+static SeedValue
+seed_context_eval (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedContext c = seed_object_get_private (this_object);
+ SeedValue ret;
+ gchar *s;
+
+ if (!c)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError", "Context is destroyed");
+ return seed_make_undefined (ctx);
+ }
+
+ s = seed_value_to_string (ctx, arguments[0], exception);
+ ret = seed_simple_evaluate (c, s, exception);
+ g_free (s);
+
+ return ret;
+}
+
+static SeedValue
+seed_sandbox_context_add_globals (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedContext c = seed_object_get_private (this_object);
+ if (!c)
+ {
+ seed_make_exception (ctx, exception,
+ "ArgumentError", "Context is destroyed");
+ return seed_make_undefined (ctx);
+ }
+ seed_prepare_global_context (c);
+
+ SeedObject g = seed_context_get_global_object (c);
+ SeedObject global = seed_context_get_global_object (ctx);
+
+ SeedValue script_path = seed_object_get_property (ctx, global, "__script_path__");
+
+ seed_object_set_property (c, g, "__script_path__",
+ (script_path && seed_value_is_object(ctx, script_path)) ?
+ script_path : seed_make_undefined(ctx)
+ );
+
+ return seed_make_null (ctx);
+}
+
+
+static SeedValue
+seed_sandbox_context_destroy (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedContext c = seed_object_get_private (this_object);
+
+ seed_context_unref (c);
+ seed_object_set_private (this_object, NULL);
+ return seed_make_null (ctx);
+}
+
+seed_static_function context_funcs[] = {
+ {"eval", seed_context_eval, 0},
+ {"add_globals", seed_sandbox_context_add_globals, 0},
+ {"destroy", seed_sandbox_context_destroy, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine * eng)
+{
+ SeedObject context_constructor;
+ seed_class_definition context_class_def = seed_empty_class;
+
+ ctx = eng->context;
+ group = eng->group;
+ namespace_ref = seed_make_object (ctx, NULL, NULL);
+
+ context_class_def.class_name = "Context";
+ context_class_def.static_functions = context_funcs;
+
+ context_class = seed_create_class (&context_class_def);
+
+
+ context_constructor = seed_make_constructor (eng->context,
+ context_class,
+ seed_construct_sandbox_context);
+ seed_object_set_property (eng->context, namespace_ref, "Context", context_constructor);
+
+ return namespace_ref;
+
+}
diff --git a/modules/sqlite/Makefile.am b/modules/sqlite/Makefile.am
new file mode 100644
index 0000000..b8a3bd6
--- /dev/null
+++ b/modules/sqlite/Makefile.am
@@ -0,0 +1,30 @@
+if BUILD_SQLITE_MODULE
+
+seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+EXTRA_DIST = example.js
+
+seedlib_LTLIBRARIES = \
+ libseed_sqlite.la
+
+libseed_sqlite_la_SOURCES = \
+ seed-sqlite.c
+
+libseed_sqlite_la_CFLAGS = \
+ -I@top_srcdir@/libseed/ \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(SQLITE_CFLAGS) \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS)
+
+libseed_sqlite_la_LDFLAGS = \
+ -module -avoid-version \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(SQLITE_LDFLAGS) \
+ $(SEED_DEBUG_LDFLAGS)
+
+libseed_sqlite_la_LIBADD = \
+ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+ $(SQLITE_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+endif
diff --git a/modules/sqlite/Makefile.in b/modules/sqlite/Makefile.in
new file mode 100644
index 0000000..bc35463
--- /dev/null
+++ b/modules/sqlite/Makefile.in
@@ -0,0 +1,667 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = modules/sqlite
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(seedlibdir)"
+LTLIBRARIES = $(seedlib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_SQLITE_MODULE_TRUE@libseed_sqlite_la_DEPENDENCIES = $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_SQLITE_MODULE_TRUE@ $(am__DEPENDENCIES_1) \
+@BUILD_SQLITE_MODULE_TRUE@ $(am__DEPENDENCIES_1)
+am__libseed_sqlite_la_SOURCES_DIST = seed-sqlite.c
+@BUILD_SQLITE_MODULE_TRUE@am_libseed_sqlite_la_OBJECTS = \
+@BUILD_SQLITE_MODULE_TRUE@ libseed_sqlite_la-seed-sqlite.lo
+libseed_sqlite_la_OBJECTS = $(am_libseed_sqlite_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libseed_sqlite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libseed_sqlite_la_CFLAGS) $(CFLAGS) \
+ $(libseed_sqlite_la_LDFLAGS) $(LDFLAGS) -o $@
+@BUILD_SQLITE_MODULE_TRUE@am_libseed_sqlite_la_rpath = -rpath \
+@BUILD_SQLITE_MODULE_TRUE@ $(seedlibdir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libseed_sqlite_la_SOURCES)
+DIST_SOURCES = $(am__libseed_sqlite_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_SQLITE_MODULE_TRUE@seedlibdir = ${libdir}/seed@SEED_GTK_VERSION@
+@BUILD_SQLITE_MODULE_TRUE@EXTRA_DIST = example.js
+@BUILD_SQLITE_MODULE_TRUE@seedlib_LTLIBRARIES = \
+@BUILD_SQLITE_MODULE_TRUE@ libseed_sqlite.la
+
+@BUILD_SQLITE_MODULE_TRUE@libseed_sqlite_la_SOURCES = \
+@BUILD_SQLITE_MODULE_TRUE@ seed-sqlite.c
+
+@BUILD_SQLITE_MODULE_TRUE@libseed_sqlite_la_CFLAGS = \
+@BUILD_SQLITE_MODULE_TRUE@ -I@top_srcdir@/libseed/ \
+@BUILD_SQLITE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_CFLAGS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SQLITE_CFLAGS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SEED_DEBUG_CFLAGS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SEED_PROFILE_CFLAGS)
+
+@BUILD_SQLITE_MODULE_TRUE@libseed_sqlite_la_LDFLAGS = \
+@BUILD_SQLITE_MODULE_TRUE@ -module -avoid-version \
+@BUILD_SQLITE_MODULE_TRUE@ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SQLITE_LDFLAGS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SEED_DEBUG_LDFLAGS)
+
+@BUILD_SQLITE_MODULE_TRUE@libseed_sqlite_la_LIBADD = \
+@BUILD_SQLITE_MODULE_TRUE@ $(top_builddir)/libseed/libseed@SEED_GTK_VERSION@.la \
+@BUILD_SQLITE_MODULE_TRUE@ $(SQLITE_LIBS) \
+@BUILD_SQLITE_MODULE_TRUE@ $(SEED_PROFILE_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/sqlite/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu modules/sqlite/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
+$(am__aclocal_m4_deps):
+install-seedlibLTLIBRARIES: $(seedlib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(seedlibdir)" || $(MKDIR_P) "$(DESTDIR)$(seedlibdir)"
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(seedlibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(seedlibdir)"; \
+ }
+
+uninstall-seedlibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(seedlib_LTLIBRARIES)'; test -n "$(seedlibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(seedlibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(seedlibdir)/$$f"; \
+ done
+
+clean-seedlibLTLIBRARIES:
+ -test -z "$(seedlib_LTLIBRARIES)" || rm -f $(seedlib_LTLIBRARIES)
+ @list='$(seedlib_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
+libseed_sqlite.la: $(libseed_sqlite_la_OBJECTS) $(libseed_sqlite_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libseed_sqlite_la_LINK) $(am_libseed_sqlite_la_rpath) $(libseed_sqlite_la_OBJECTS) $(libseed_sqlite_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libseed_sqlite_la-seed-sqlite.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libseed_sqlite_la-seed-sqlite.lo: seed-sqlite.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_sqlite_la_CFLAGS) $(CFLAGS) -MT libseed_sqlite_la-seed-sqlite.lo -MD -MP -MF $(DEPDIR)/libseed_sqlite_la-seed-sqlite.Tpo -c -o libseed_sqlite_la-seed-sqlite.lo `test -f 'seed-sqlite.c' || echo '$(srcdir)/'`seed-sqlite.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libseed_sqlite_la-seed-sqlite.Tpo $(DEPDIR)/libseed_sqlite_la-seed-sqlite.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seed-sqlite.c' object='libseed_sqlite_la-seed-sqlite.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libseed_sqlite_la_CFLAGS) $(CFLAGS) -c -o libseed_sqlite_la-seed-sqlite.lo `test -f 'seed-sqlite.c' || echo '$(srcdir)/'`seed-sqlite.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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)
+installdirs:
+ for dir in "$(DESTDIR)$(seedlibdir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-seedlibLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-seedlibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-seedlibLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-seedlibLTLIBRARIES 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-seedlibLTLIBRARIES install-strip 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-seedlibLTLIBRARIES
+
+
+# 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/modules/sqlite/example.js b/modules/sqlite/example.js
new file mode 100755
index 0000000..adc95c7
--- /dev/null
+++ b/modules/sqlite/example.js
@@ -0,0 +1,14 @@
+#!/usr/bin/env seed
+
+sqlite = imports.sqlite;
+
+d = new sqlite.Database(Seed.argv[2]);
+
+d.exec("create table t1 (t1key INTEGER PRIMARY KEY,data TEXT,num double,timeEnter DATE);");
+d.exec("insert into t1 (data,num) values ('This is sample data',3);");
+d.exec("insert into t1 (data,num) values ('More sample data',6);");
+d.exec("insert into t1 (data,num) values ('And a little more',9);");
+
+d.exec("select * from t1", function(results){print(JSON.stringify(results))});
+
+d.close();
diff --git a/modules/sqlite/seed-sqlite.c b/modules/sqlite/seed-sqlite.c
new file mode 100644
index 0000000..18f204c
--- /dev/null
+++ b/modules/sqlite/seed-sqlite.c
@@ -0,0 +1,215 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include <sqlite3.h>
+
+SeedObject namespace_ref;
+SeedClass sqlite_class;
+SeedEngine *eng;
+
+#define MAKE_ERROR_ENUM(name) \
+ seed_object_set_property(eng->context, namespace_ref, #name, \
+ seed_value_from_int(eng->context, SQLITE_##name, 0))
+
+void define_errors(SeedEngine * eng)
+{
+ MAKE_ERROR_ENUM(OK);
+ MAKE_ERROR_ENUM(ERROR);
+ MAKE_ERROR_ENUM(INTERNAL);
+ MAKE_ERROR_ENUM(PERM);
+ MAKE_ERROR_ENUM(ABORT);
+ MAKE_ERROR_ENUM(BUSY);
+ MAKE_ERROR_ENUM(LOCKED);
+ MAKE_ERROR_ENUM(NOMEM);
+ MAKE_ERROR_ENUM(READONLY);
+ MAKE_ERROR_ENUM(INTERRUPT);
+ MAKE_ERROR_ENUM(CORRUPT);
+ MAKE_ERROR_ENUM(NOTFOUND);
+ MAKE_ERROR_ENUM(FULL);
+ MAKE_ERROR_ENUM(CANTOPEN);
+ MAKE_ERROR_ENUM(PROTOCOL);
+ MAKE_ERROR_ENUM(EMPTY);
+ MAKE_ERROR_ENUM(SCHEMA);
+ MAKE_ERROR_ENUM(TOOBIG);
+ MAKE_ERROR_ENUM(CONSTRAINT);
+ MAKE_ERROR_ENUM(MISMATCH);
+ MAKE_ERROR_ENUM(MISUSE);
+ MAKE_ERROR_ENUM(NOLFS);
+ MAKE_ERROR_ENUM(AUTH);
+ MAKE_ERROR_ENUM(FORMAT);
+ MAKE_ERROR_ENUM(RANGE);
+ MAKE_ERROR_ENUM(NOTADB);
+ MAKE_ERROR_ENUM(ROW);
+ MAKE_ERROR_ENUM(DONE);
+}
+
+void sqlite_database_finalize(SeedObject object)
+{
+ sqlite3 *db = seed_object_get_private(object);
+ if (db)
+ sqlite3_close(db);
+}
+
+SeedObject sqlite_construct_database(SeedContext ctx,
+ SeedObject constructor,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ SeedObject ret;
+ gchar *file;
+ sqlite3 *db;
+ int rc;
+
+ if (argument_count != 1)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "sqlite.Database constructor expected 1 argument");
+ return (SeedObject) seed_make_null(ctx);
+ }
+ file = seed_value_to_string(ctx, arguments[0], exception);
+
+ rc = sqlite3_open(file, &db);
+
+ g_free(file);
+
+ ret = seed_make_object(ctx, sqlite_class, db);
+ seed_object_set_property(ctx, ret, "status",
+ seed_value_from_int(ctx, rc, exception));
+
+ return ret;
+}
+
+static int seed_sqlite_exec_callback(SeedObject function,
+ int argc,
+ gchar ** argv, gchar ** azColName)
+{
+ SeedGlobalContext ctx;
+ SeedObject hash;
+ int i;
+
+ if (!function)
+ return 0;
+
+ ctx = seed_context_create(eng->group, NULL);
+
+ hash = seed_make_object(ctx, 0, 0);
+ for (i = 0; i < argc; i++)
+ {
+ seed_object_set_property(ctx, hash,
+ azColName[i],
+ seed_value_from_string(ctx, argv[i], 0));
+ }
+
+ seed_object_call(ctx, function, 0, 1, &hash, 0);
+
+ seed_context_unref(ctx);
+
+ return 0;
+}
+
+SeedValue seed_sqlite_exec(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ gchar *statement;
+ gchar *sqlite_error = 0;
+ sqlite3 *db;
+ int rc;
+
+ if (argument_count < 1)
+ {
+ seed_make_exception(ctx, exception, "ArgumentError",
+ "sqlite.Database.exec expected 1 or 2 arguments");
+ return seed_make_null(ctx);
+ }
+
+ statement = seed_value_to_string(ctx, arguments[0], exception);
+ db = seed_object_get_private(this_object);
+
+ g_assert(db);
+
+ rc = sqlite3_exec(db, statement,
+ seed_sqlite_exec_callback,
+ argument_count == 2 ? arguments[1] : 0, &sqlite_error);
+ g_free(statement);
+
+ if (rc != SQLITE_OK)
+ {
+ if (sqlite_error)
+ {
+ seed_make_exception(ctx, exception, "SqliteError",
+ sqlite_error, NULL);
+ sqlite3_free(sqlite_error);
+ }
+ return seed_make_null(ctx);
+ }
+
+ return seed_value_from_int(ctx, rc, exception);
+
+}
+
+SeedValue seed_sqlite_close(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[],
+ SeedException * exception)
+{
+ sqlite3 *db = seed_object_get_private(this_object);
+ sqlite3_close(db);
+ return seed_value_from_boolean(ctx, TRUE, exception);
+}
+
+seed_static_function database_funcs[] = {
+ {"close", seed_sqlite_close, 0},
+ {"exec", seed_sqlite_exec, 0},
+ {NULL, NULL, 0}
+};
+
+SeedObject
+seed_module_init(SeedEngine * local_eng)
+{
+ SeedObject db_constructor;
+ seed_class_definition sqlite_class_def = seed_empty_class;
+
+ eng = local_eng;
+
+ namespace_ref = seed_make_object(eng->context, 0, 0);
+
+ define_errors(eng);
+
+ sqlite_class_def.class_name = "Database";
+ sqlite_class_def.finalize = sqlite_database_finalize;
+ sqlite_class_def.static_functions = database_funcs;
+
+ sqlite_class = seed_create_class(&sqlite_class_def);
+
+ db_constructor = seed_make_constructor(eng->context,
+ sqlite_class,
+ sqlite_construct_database);
+ seed_object_set_property(eng->context,
+ namespace_ref, "Database", db_constructor);
+
+ return namespace_ref;
+}
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/po/ChangeLog
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..bc8cbb0
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,2 @@
+# please keep this list sorted alphabetically
+#
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..cc8a222
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,217 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
+#
+# This file may be copied and used freely without restrictions. It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && gencat $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-data
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $$dir; \
+ if test -r $$lang.gmo; then \
+ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $(srcdir)/$$lang.gmo as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo"; \
+ fi; \
+ if test -r $$lang.gmo.m; then \
+ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ if test -r $(srcdir)/$$lang.gmo.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+ $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $(srcdir)/$$lang.gmo.m as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info ctags tags CTAGS TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ done
+
+check: all $(GETTEXT_PACKAGE).pot
+ rm -f missing notexist
+ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+ if [ -r missing -o -r notexist ]; then \
+ exit 1; \
+ fi
+
+mostlyclean:
+ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES stamp-it
+ rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ extra_dists="$(EXTRA_DISTFILES)"; \
+ for file in $$extra_dists; do \
+ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+ done; \
+ for file in $$dists; do \
+ test -f $$file || file="$(srcdir)/$$file"; \
+ ln $$file $(distdir) 2> /dev/null \
+ || cp -p $$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.gmo failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+Makefile POTFILES: stamp-it
+ @if test ! -f $@; then \
+ rm -f stamp-it; \
+ $(MAKE) stamp-it; \
+ fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..a0b3c55
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,3 @@
+# List of source files containing translatable strings.
+
+src/main.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644
index 0000000..c969364
--- /dev/null
+++ b/po/POTFILES.skip
@@ -0,0 +1 @@
+examples/clutter-pad/clutter-pad.ui
diff --git a/seed.pc b/seed.pc
new file mode 100644
index 0000000..2acaf20
--- /dev/null
+++ b/seed.pc
@@ -0,0 +1,13 @@
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+bindir=${exec_prefix}/bin
+includedir=${prefix}/include
+
+Cflags: -I${includedir}/seed-gtk3
+Requires: webkitgtk-3.0 gobject-introspection-1.0 glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0
+Libs: -L${libdir} -lseed-gtk3
+
+Name: Seed
+Description: Seed Javascript Interpreter.
+Version: 3.2.0
diff --git a/seed.pc.in b/seed.pc.in
new file mode 100644
index 0000000..380b750
--- /dev/null
+++ b/seed.pc.in
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+bindir=@bindir@
+includedir=@includedir@
+
+Cflags: -I${includedir}/seed@SEED_GTK_VERSION@
+Requires: @WEBKIT_PC@ gobject-introspection-1.0 glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0
+Libs: -L${libdir} -lseed@SEED_GTK_VERSION@
+
+Name: Seed
+Description: Seed Javascript Interpreter.
+Version: @VERSION@
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..ed4cb26
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,27 @@
+## Process this file with automake to produce Makefile.in
+
+bin_PROGRAMS = seed
+
+seed_SOURCES = \
+ main.c \
+ args.c
+
+seed_CFLAGS = \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
+ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
+ -Wall \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS) \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(WEBKIT_CFLAGS)
+
+seed_LDFLAGS = \
+ $(SEED_PROFILE_LIBS) \
+ $(LIBFFI_LDFLAGS) \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(WEBKIT_LDFLAGS) \
+ $(GTHREAD_LIBS)
+
+seed_LDADD = \
+ ../libseed/libseed@SEED_GTK_VERSION@.la
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..86fcd70
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,674 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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@
+bin_PROGRAMS = seed$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_seed_OBJECTS = seed-main.$(OBJEXT) seed-args.$(OBJEXT)
+seed_OBJECTS = $(am_seed_OBJECTS)
+seed_DEPENDENCIES = ../libseed/libseed@SEED_GTK_VERSION@.la
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+seed_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(seed_CFLAGS) $(CFLAGS) \
+ $(seed_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(seed_SOURCES)
+DIST_SOURCES = $(seed_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+seed_SOURCES = \
+ main.c \
+ args.c
+
+seed_CFLAGS = \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
+ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
+ -Wall \
+ $(SEED_DEBUG_CFLAGS) \
+ $(SEED_PROFILE_CFLAGS) \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(WEBKIT_CFLAGS)
+
+seed_LDFLAGS = \
+ $(SEED_PROFILE_LIBS) \
+ $(LIBFFI_LDFLAGS) \
+ $(GOBJECT_INTROSPECTION_LDFLAGS) \
+ $(WEBKIT_LDFLAGS) \
+ $(GTHREAD_LIBS)
+
+seed_LDADD = \
+ ../libseed/libseed@SEED_GTK_VERSION@.la
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu 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
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p || test -f $$p1; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+seed$(EXEEXT): $(seed_OBJECTS) $(seed_DEPENDENCIES)
+ @rm -f seed$(EXEEXT)
+ $(AM_V_CCLD)$(seed_LINK) $(seed_OBJECTS) $(seed_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-args.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed-main.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+seed-main.o: main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -MT seed-main.o -MD -MP -MF $(DEPDIR)/seed-main.Tpo -c -o seed-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/seed-main.Tpo $(DEPDIR)/seed-main.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='seed-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -c -o seed-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+
+seed-main.obj: main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -MT seed-main.obj -MD -MP -MF $(DEPDIR)/seed-main.Tpo -c -o seed-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/seed-main.Tpo $(DEPDIR)/seed-main.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='seed-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -c -o seed-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+
+seed-args.o: args.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -MT seed-args.o -MD -MP -MF $(DEPDIR)/seed-args.Tpo -c -o seed-args.o `test -f 'args.c' || echo '$(srcdir)/'`args.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/seed-args.Tpo $(DEPDIR)/seed-args.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='args.c' object='seed-args.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -c -o seed-args.o `test -f 'args.c' || echo '$(srcdir)/'`args.c
+
+seed-args.obj: args.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -MT seed-args.obj -MD -MP -MF $(DEPDIR)/seed-args.Tpo -c -o seed-args.obj `if test -f 'args.c'; then $(CYGPATH_W) 'args.c'; else $(CYGPATH_W) '$(srcdir)/args.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/seed-args.Tpo $(DEPDIR)/seed-args.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='args.c' object='seed-args.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(seed_CFLAGS) $(CFLAGS) -c -o seed-args.obj `if test -f 'args.c'; then $(CYGPATH_W) 'args.c'; else $(CYGPATH_W) '$(srcdir)/args.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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 $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip 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-binPROGRAMS
+
+
+# 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/src/args.c b/src/args.c
new file mode 100644
index 0000000..156ad70
--- /dev/null
+++ b/src/args.c
@@ -0,0 +1,85 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <stdlib.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "../libseed/seed.h"
+#include "../libseed/seed-debug.h"
+#include <girepository.h>
+#include "config.h"
+
+extern gboolean seed_interpreter_arg_print_version;
+extern gchar *seed_interpreter_arg_exec_string;
+
+static GOptionEntry seed_args[] = {
+ {"version", 0, 0, G_OPTION_ARG_NONE, &seed_interpreter_arg_print_version,
+ "Print interpreter version", 0},
+ {"execute", 'e', 0, G_OPTION_ARG_STRING, &seed_interpreter_arg_exec_string,
+ "Pass program in as string", "expression"},
+ {NULL,},
+};
+
+
+static GOptionGroup *
+seed_interpreter_get_option_group (void)
+{
+ GOptionGroup *group;
+
+ group = g_option_group_new ("seed-interpreter", "Interpreter Options",
+ "Show Interpreter Options", NULL, NULL);
+ g_option_group_add_entries (group, seed_args);
+
+ return group;
+}
+
+gboolean
+seed_interpreter_parse_args (int *argc, char ***argv)
+{
+ GOptionContext *option_context;
+ GOptionGroup *interpreter_group;
+
+ GError *error = NULL;
+ gboolean ret = TRUE;
+
+ option_context = g_option_context_new (NULL);
+ g_option_context_set_ignore_unknown_options (option_context, TRUE);
+ g_option_context_set_help_enabled (option_context, TRUE);
+
+ /* Initiate any command line options from the backend */
+
+ interpreter_group = seed_interpreter_get_option_group ();
+ g_option_context_set_main_group (option_context, interpreter_group);
+ g_option_context_add_group (option_context, seed_get_option_group ());
+
+ if (!g_option_context_parse (option_context, argc, argv, &error))
+ {
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
+
+ ret = FALSE;
+ }
+
+ g_option_context_free (option_context);
+
+ return ret;
+}
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..504a00a
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,164 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include <stdlib.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "../libseed/seed.h"
+#include "../libseed/seed-debug.h"
+#include <girepository.h>
+#include "config.h"
+
+#define DEFAULT_PATH "."
+
+SeedEngine *eng;
+gboolean seed_interpreter_arg_print_version;
+gchar *seed_interpreter_arg_exec_string;
+
+gboolean seed_interpreter_parse_args (int *argc, char ***argv);
+
+static void
+seed_repl ()
+{
+ SeedScript *script;
+ SeedException e;
+
+ script = seed_make_script (eng->context, "repl = imports.repl", NULL, 0);
+
+ if ((e = seed_script_exception (script)))
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+
+ seed_evaluate (eng->context, script, 0);
+
+ if ((e = seed_script_exception (script)))
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+
+ g_free (script);
+}
+
+static void
+seed_exec (gchar * filename)
+{
+ SeedObject global;
+ SeedScript *script;
+ SeedException e;
+ gchar *buffer;
+
+ g_file_get_contents (filename, &buffer, 0, 0);
+
+ if (!buffer)
+ {
+ g_critical ("File %s not found!", filename);
+ exit (EXIT_FAILURE);
+ }
+
+ if (*buffer == '#')
+ {
+ while (*buffer != '\n')
+ buffer++;
+ buffer++;
+ }
+
+ script = seed_make_script (eng->context, buffer, filename, 1);
+
+ if ((e = seed_script_exception (script)))
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+
+ global = seed_context_get_global_object (eng->context);
+ seed_importer_add_global (global, filename);
+
+ seed_evaluate (eng->context, script, 0);
+ if ((e = seed_script_exception (script)))
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+
+ g_free (script);
+}
+
+static void
+seed_exec_str ()
+{
+ SeedException e = NULL;
+ SeedValue val;
+ gchar *val_str;
+
+ val =
+ seed_simple_evaluate (eng->context, seed_interpreter_arg_exec_string, &e);
+
+ if (e)
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+ else
+ {
+ val_str = seed_value_to_string (eng->context, val, &e);
+ if (e)
+ {
+ g_critical ("%s", seed_exception_to_string (eng->context, e));
+ exit (EXIT_FAILURE);
+ }
+
+ g_print ("%s\n", val_str);
+ g_free (seed_interpreter_arg_exec_string);
+ g_free (val_str);
+
+ exit (EXIT_SUCCESS);
+ }
+
+}
+
+gint
+main (gint argc, gchar ** argv)
+{
+ g_set_prgname ("seed");
+ g_thread_init (NULL);
+
+ seed_interpreter_parse_args (&argc, &argv);
+
+ if (seed_interpreter_arg_print_version)
+ {
+ g_print ("%s\n", "Seed " VERSION);
+ exit (EXIT_SUCCESS);
+ }
+
+ eng = seed_init (&argc, &argv);
+
+ seed_engine_set_search_path (eng, DEFAULT_PATH);
+
+ if (seed_interpreter_arg_exec_string)
+ seed_exec_str ();
+ else if (argc == 1)
+ seed_repl ();
+ else
+ seed_exec (argv[1]);
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/COPYING b/tests/COPYING
new file mode 100644
index 0000000..d8205ee
--- /dev/null
+++ b/tests/COPYING
@@ -0,0 +1 @@
+Any code in these tests is to be considered under the MIT license.
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..a16435e
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = javascript c
+EXTRA_DIST = COPYING
+
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644
index 0000000..47ce787
--- /dev/null
+++ b/tests/Makefile.in
@@ -0,0 +1,651 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = javascript c
+EXTRA_DIST = COPYING
+all: 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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive 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-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-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/tests/c/Makefile.am b/tests/c/Makefile.am
new file mode 100644
index 0000000..954c6ea
--- /dev/null
+++ b/tests/c/Makefile.am
@@ -0,0 +1,24 @@
+noinst_PROGRAMS = test
+
+TESTS = test
+
+test_SOURCES = \
+ main.c \
+ basic.c \
+ api-types.c \
+ api-closure.c \
+ api-js-signal-from-c.c
+
+EXTRA_DIST = \
+ test-common.h
+
+test_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS)
+
+test_LDFLAGS = \
+ $(GOBJECT_INTROSPECTION_LIBS)
+
+test_LDADD = \
+ ../../libseed/libseed@SEED_GTK_VERSION@.la
+
diff --git a/tests/c/Makefile.in b/tests/c/Makefile.in
new file mode 100644
index 0000000..02e2759
--- /dev/null
+++ b/tests/c/Makefile.in
@@ -0,0 +1,782 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = test$(EXEEXT)
+TESTS = test$(EXEEXT)
+subdir = tests/c
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_test_OBJECTS = test-main.$(OBJEXT) test-basic.$(OBJEXT) \
+ test-api-types.$(OBJEXT) test-api-closure.$(OBJEXT) \
+ test-api-js-signal-from-c.$(OBJEXT)
+test_OBJECTS = $(am_test_OBJECTS)
+test_DEPENDENCIES = ../../libseed/libseed@SEED_GTK_VERSION@.la
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_CFLAGS) $(CFLAGS) \
+ $(test_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(test_SOURCES)
+DIST_SOURCES = $(test_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+test_SOURCES = \
+ main.c \
+ basic.c \
+ api-types.c \
+ api-closure.c \
+ api-js-signal-from-c.c
+
+EXTRA_DIST = \
+ test-common.h
+
+test_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS)
+
+test_LDFLAGS = \
+ $(GOBJECT_INTROSPECTION_LIBS)
+
+test_LDADD = \
+ ../../libseed/libseed@SEED_GTK_VERSION@.la
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/c/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/c/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
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES)
+ @rm -f test$(EXEEXT)
+ $(AM_V_CCLD)$(test_LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-api-closure.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-api-js-signal-from-c.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-api-types.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-basic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-main.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+test-main.o: main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-main.o -MD -MP -MF $(DEPDIR)/test-main.Tpo -c -o test-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-main.Tpo $(DEPDIR)/test-main.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='test-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+
+test-main.obj: main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-main.obj -MD -MP -MF $(DEPDIR)/test-main.Tpo -c -o test-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-main.Tpo $(DEPDIR)/test-main.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='test-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+
+test-basic.o: basic.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-basic.o -MD -MP -MF $(DEPDIR)/test-basic.Tpo -c -o test-basic.o `test -f 'basic.c' || echo '$(srcdir)/'`basic.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-basic.Tpo $(DEPDIR)/test-basic.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='basic.c' object='test-basic.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-basic.o `test -f 'basic.c' || echo '$(srcdir)/'`basic.c
+
+test-basic.obj: basic.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-basic.obj -MD -MP -MF $(DEPDIR)/test-basic.Tpo -c -o test-basic.obj `if test -f 'basic.c'; then $(CYGPATH_W) 'basic.c'; else $(CYGPATH_W) '$(srcdir)/basic.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-basic.Tpo $(DEPDIR)/test-basic.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='basic.c' object='test-basic.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-basic.obj `if test -f 'basic.c'; then $(CYGPATH_W) 'basic.c'; else $(CYGPATH_W) '$(srcdir)/basic.c'; fi`
+
+test-api-types.o: api-types.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-types.o -MD -MP -MF $(DEPDIR)/test-api-types.Tpo -c -o test-api-types.o `test -f 'api-types.c' || echo '$(srcdir)/'`api-types.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-types.Tpo $(DEPDIR)/test-api-types.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-types.c' object='test-api-types.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-types.o `test -f 'api-types.c' || echo '$(srcdir)/'`api-types.c
+
+test-api-types.obj: api-types.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-types.obj -MD -MP -MF $(DEPDIR)/test-api-types.Tpo -c -o test-api-types.obj `if test -f 'api-types.c'; then $(CYGPATH_W) 'api-types.c'; else $(CYGPATH_W) '$(srcdir)/api-types.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-types.Tpo $(DEPDIR)/test-api-types.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-types.c' object='test-api-types.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-types.obj `if test -f 'api-types.c'; then $(CYGPATH_W) 'api-types.c'; else $(CYGPATH_W) '$(srcdir)/api-types.c'; fi`
+
+test-api-closure.o: api-closure.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-closure.o -MD -MP -MF $(DEPDIR)/test-api-closure.Tpo -c -o test-api-closure.o `test -f 'api-closure.c' || echo '$(srcdir)/'`api-closure.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-closure.Tpo $(DEPDIR)/test-api-closure.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-closure.c' object='test-api-closure.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-closure.o `test -f 'api-closure.c' || echo '$(srcdir)/'`api-closure.c
+
+test-api-closure.obj: api-closure.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-closure.obj -MD -MP -MF $(DEPDIR)/test-api-closure.Tpo -c -o test-api-closure.obj `if test -f 'api-closure.c'; then $(CYGPATH_W) 'api-closure.c'; else $(CYGPATH_W) '$(srcdir)/api-closure.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-closure.Tpo $(DEPDIR)/test-api-closure.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-closure.c' object='test-api-closure.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-closure.obj `if test -f 'api-closure.c'; then $(CYGPATH_W) 'api-closure.c'; else $(CYGPATH_W) '$(srcdir)/api-closure.c'; fi`
+
+test-api-js-signal-from-c.o: api-js-signal-from-c.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-js-signal-from-c.o -MD -MP -MF $(DEPDIR)/test-api-js-signal-from-c.Tpo -c -o test-api-js-signal-from-c.o `test -f 'api-js-signal-from-c.c' || echo '$(srcdir)/'`api-js-signal-from-c.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-js-signal-from-c.Tpo $(DEPDIR)/test-api-js-signal-from-c.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-js-signal-from-c.c' object='test-api-js-signal-from-c.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-js-signal-from-c.o `test -f 'api-js-signal-from-c.c' || echo '$(srcdir)/'`api-js-signal-from-c.c
+
+test-api-js-signal-from-c.obj: api-js-signal-from-c.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-api-js-signal-from-c.obj -MD -MP -MF $(DEPDIR)/test-api-js-signal-from-c.Tpo -c -o test-api-js-signal-from-c.obj `if test -f 'api-js-signal-from-c.c'; then $(CYGPATH_W) 'api-js-signal-from-c.c'; else $(CYGPATH_W) '$(srcdir)/api-js-signal-from-c.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-api-js-signal-from-c.Tpo $(DEPDIR)/test-api-js-signal-from-c.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='api-js-signal-from-c.c' object='test-api-js-signal-from-c.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-api-js-signal-from-c.obj `if test -f 'api-js-signal-from-c.c'; then $(CYGPATH_W) 'api-js-signal-from-c.c'; else $(CYGPATH_W) '$(srcdir)/api-js-signal-from-c.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS)
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic 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-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip 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
+
+
+# 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/tests/c/api-closure.c b/tests/c/api-closure.c
new file mode 100644
index 0000000..44939a5
--- /dev/null
+++ b/tests/c/api-closure.c
@@ -0,0 +1,65 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include "test-common.h"
+
+SeedValue do_some_math(SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ size_t argument_count,
+ const SeedValue arguments[], SeedException * exception)
+{
+ g_assert(argument_count == 4);
+
+ guint a = seed_value_to_uint(ctx, arguments[0], NULL);
+ gdouble b = seed_value_to_int(ctx, arguments[1], NULL);
+ gint c = seed_value_to_int(ctx, arguments[2], NULL);
+ gchar *d = seed_value_to_string(ctx, arguments[3], NULL);
+
+ g_assert(d[0] == 'a');
+
+ return seed_value_from_double(ctx, (a + b) / c, NULL);
+}
+
+void closures(TestSimpleFixture * fixture, gconstpointer _data)
+{
+ TestSharedState *state = (TestSharedState *) _data;
+
+ seed_create_function(state->eng->context, "do_some_math",
+ (SeedFunctionCallback) do_some_math,
+ (SeedObject) state->eng->global);
+
+ SeedValue *val = seed_simple_evaluate(state->eng->context,
+ "do_some_math(5, 8.66, -2, 'a')", NULL);
+ g_assert(seed_value_to_double(state->eng->context, val, NULL) == -6.5);
+
+ SeedObject *dsm_obj = seed_object_get_property(state->eng->context,
+ (SeedObject) state->eng->
+ global,
+ "do_some_math");
+ SeedValue args[4];
+ args[0] = seed_value_from_uint(state->eng->context, 5, NULL);
+ args[1] = seed_value_from_double(state->eng->context, 8.66, NULL);
+ args[2] = seed_value_from_int(state->eng->context, -2, NULL);
+ args[3] = seed_value_from_string(state->eng->context, "a", NULL);
+ val = seed_object_call(state->eng->context, dsm_obj, NULL, 4, args, NULL);
+
+ g_assert(seed_value_to_double(state->eng->context, val, NULL) == -6.5);
+}
diff --git a/tests/c/api-js-signal-from-c.c b/tests/c/api-js-signal-from-c.c
new file mode 100644
index 0000000..b16c1ff
--- /dev/null
+++ b/tests/c/api-js-signal-from-c.c
@@ -0,0 +1,67 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include "test-common.h"
+
+#include <string.h>
+
+gdouble hello_cb(gpointer w, gint a, gchar * b)
+{
+ g_assert(a == 2);
+ g_assert(strncmp(b, "Test", 4) == 0);
+
+ return 5.12;
+}
+
+void js_signal_from_c(TestSimpleFixture * fixture, gconstpointer _data)
+{
+ TestSharedState *state = (TestSharedState *) _data;
+
+ SeedValue *val = seed_simple_evaluate(state->eng->context,
+ "Gtk = imports.gi.Gtk;"
+ "GObject = imports.gi.GObject;"
+ "Gtk.init(null, null);"
+ "HelloWindowType = {"
+ " parent: Gtk.Window.type,"
+ " name: \"HelloWindow\","
+ " class_init: function(klass, prototype)"
+ " {"
+ " var HelloSignalDefinition = {name: \"hello\","
+ " parameters: [GObject.TYPE_INT,"
+ " GObject.TYPE_STRING],"
+ " return_type: GObject.TYPE_DOUBLE};"
+ " hello_signal_id = klass.install_signal(HelloSignalDefinition);"
+ " },"
+ " init: function(instance)"
+ " {"
+ " }};"
+ "HelloWindow = new GType(HelloWindowType);"
+ "w = new HelloWindow();", NULL);
+
+ GObject *obj = seed_value_to_object(state->eng->context, val, NULL);
+
+ g_signal_connect(obj, "hello", G_CALLBACK(hello_cb), NULL);
+
+ val =
+ seed_simple_evaluate(state->eng->context,
+ "g = w.signal.hello.emit(2,'Test')", NULL);
+
+ g_assert(seed_value_to_double(state->eng->context, val, NULL) == 5.12);
+}
diff --git a/tests/c/api-types.c b/tests/c/api-types.c
new file mode 100644
index 0000000..4d6bbde
--- /dev/null
+++ b/tests/c/api-types.c
@@ -0,0 +1,171 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include "test-common.h"
+#include <string.h>
+
+// The biggest problem here is everything gets cast to a double in JSCore!
+
+void basic_types(TestSimpleFixture * fixture, gconstpointer _data)
+{
+ // bool to/from JS equality
+
+ gboolean bool_test_in = TRUE;
+ SeedValue *bool_test = seed_value_from_boolean(fixture->context,
+ bool_test_in, NULL);
+ gboolean bool_test_out = seed_value_to_boolean(fixture->context,
+ bool_test, NULL);
+
+ g_assert(bool_test_in == bool_test_out);
+
+ // uint to/from JS equality
+
+ guint uint_test_in = 2946623;
+ SeedValue *uint_test = seed_value_from_uint(fixture->context,
+ uint_test_in, NULL);
+ guint uint_test_out = seed_value_to_uint(fixture->context,
+ uint_test, NULL);
+
+ g_assert(uint_test_in == uint_test_out);
+
+ // int to/from JS equality
+
+ gint int_test_in = -54374;
+ SeedValue *int_test = seed_value_from_int(fixture->context,
+ int_test_in, NULL);
+ gint int_test_out = seed_value_to_int(fixture->context,
+ int_test, NULL);
+
+ g_assert(int_test_in == int_test_out);
+
+ // char to/from JS equality
+
+ gchar char_test_in = -126;
+ SeedValue *char_test = seed_value_from_char(fixture->context,
+ char_test_in, NULL);
+ gchar char_test_out = seed_value_to_char(fixture->context,
+ char_test, NULL);
+
+ g_assert(char_test_in == char_test_out);
+
+ // uchar to/from JS equality
+
+ guchar uchar_test_in = 250;
+ SeedValue *uchar_test = seed_value_from_uchar(fixture->context,
+ uchar_test_in, NULL);
+ guchar uchar_test_out = seed_value_to_uchar(fixture->context,
+ uchar_test, NULL);
+
+ g_assert(uchar_test_in == uchar_test_out);
+
+ // long to/from JS equality
+
+ glong long_test_in = -454250;
+ SeedValue *long_test = seed_value_from_long(fixture->context,
+ long_test_in, NULL);
+ glong long_test_out = seed_value_to_long(fixture->context,
+ long_test, NULL);
+
+ g_assert(long_test_in == long_test_out);
+
+ // ulong to/from JS equality
+
+ gulong ulong_test_in = 250;
+ SeedValue *ulong_test = seed_value_from_ulong(fixture->context,
+ ulong_test_in, NULL);
+ gulong ulong_test_out = seed_value_to_ulong(fixture->context,
+ ulong_test, NULL);
+
+ g_assert(ulong_test_in == ulong_test_out);
+
+ // int64 to/from JS equality
+
+ gint64 int64_test_in = -54374;
+ SeedValue *int64_test = seed_value_from_int64(fixture->context,
+ int64_test_in, NULL);
+ gint64 int64_test_out = seed_value_to_int64(fixture->context,
+ int64_test, NULL);
+
+ g_assert(int64_test_in == int64_test_out);
+
+ // uint64 to/from JS equality
+
+ guint64 uint64_test_in = 2946623;
+ SeedValue *uint64_test = seed_value_from_uint64(fixture->context,
+ uint64_test_in, NULL);
+ guint64 uint64_test_out = seed_value_to_uint64(fixture->context,
+ uint64_test, NULL);
+
+ g_assert(uint64_test_in == uint64_test_out);
+
+ // float to/from JS equality
+
+ gfloat float_test_in = 1.618;
+ SeedValue *float_test = seed_value_from_float(fixture->context,
+ float_test_in, NULL);
+ gfloat float_test_out = seed_value_to_float(fixture->context,
+ float_test, NULL);
+
+ g_assert(float_test_in == float_test_out);
+
+ // double to/from JS equality
+
+ gdouble double_test_in = 1.6134857638;
+ SeedValue *double_test = seed_value_from_double(fixture->context,
+ double_test_in, NULL);
+ gdouble double_test_out = seed_value_to_double(fixture->context,
+ double_test, NULL);
+
+ g_assert(double_test_in == double_test_out);
+
+ // string to/from JS equality
+
+ gchar *string_test_in = "Hello, world!";
+ SeedValue *string_test = seed_value_from_string(fixture->context,
+ string_test_in, NULL);
+ gchar *string_test_out = seed_value_to_string(fixture->context,
+ string_test, NULL);
+
+ g_assert(strncmp(string_test_in, string_test_out,
+ strlen(string_test_in)) == 0);
+
+ // filename to/from JS equality
+
+ gchar *filename_test_in = "/bin";
+ SeedValue *filename_test = seed_value_from_filename(fixture->context,
+ filename_test_in,
+ NULL);
+ gchar *filename_test_out = seed_value_to_filename(fixture->context,
+ filename_test, NULL);
+
+ g_assert(strncmp(filename_test_in, filename_test_out,
+ strlen(filename_test_in)) == 0);
+ SeedValue si[2];
+ si[0] = seed_value_from_string (fixture->context, "Hi", NULL);
+ si[1] = seed_value_from_int (fixture->context, 1, NULL);
+ gint ni;
+ gchar *ns;
+
+ seed_value_to_format (fixture->context, "si", si, NULL, &ns, &ni, NULL);
+ g_assert (ni == 1);
+ g_assert (!strcmp(ns, "Hi"));
+
+
+}
diff --git a/tests/c/basic.c b/tests/c/basic.c
new file mode 100644
index 0000000..14c6809
--- /dev/null
+++ b/tests/c/basic.c
@@ -0,0 +1,26 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include "test-common.h"
+
+void basic(TestSimpleFixture * fixture, gconstpointer _data)
+{
+ g_assert(1);
+}
diff --git a/tests/c/main.c b/tests/c/main.c
new file mode 100644
index 0000000..03b406d
--- /dev/null
+++ b/tests/c/main.c
@@ -0,0 +1,72 @@
+/* -*- mode: C; indent-tabs-mode: t; tab-width: 8; c-basic-offset: 2; -*- */
+
+/*
+ * This file is part of Seed, the GObject Introspection<->Javascript bindings.
+ *
+ * Seed 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.
+ * Seed 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 Seed. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) Robert Carr 2009 <carrr@rpi.edu>
+ */
+
+#include "../../libseed/seed.h"
+#include <stdlib.h>
+#include "test-common.h"
+
+// Test stuff stolen from Clutter
+
+#define TEST_SIMPLE(NAMESPACE, FUNC) \
+ extern void FUNC (TestSimpleFixture *fixture, gconstpointer data); \
+ g_test_add (NAMESPACE "/" #FUNC, \
+ TestSimpleFixture, \
+ shared_state, \
+ test_simple_fixture_setup, \
+ FUNC, \
+ test_simple_fixture_teardown);
+
+void test_simple_fixture_setup(TestSimpleFixture * fixture, gconstpointer data)
+{
+ TestSharedState *state = (TestSharedState *) data;
+ fixture->context = seed_context_create(state->eng->group, NULL);
+}
+
+void test_simple_fixture_teardown(TestSimpleFixture * fixture,
+ gconstpointer data)
+{
+ seed_context_unref(fixture->context);
+}
+
+int main(int argc, char **argv)
+{
+ TestSharedState *shared_state = g_new0(TestSharedState, 1);
+ const gchar *display = g_getenv("DISPLAY");
+
+ if (!display || *display == '\0')
+ {
+ g_print("No DISPLAY found. Unable to run the test suite without X11.");
+ return EXIT_SUCCESS;
+ }
+
+ g_test_init(&argc, &argv, NULL);
+
+ SeedEngine *eng = seed_init(NULL, NULL);
+
+ shared_state->argc_addr = &argc;
+ shared_state->argv_addr = &argv;
+ shared_state->eng = eng;
+
+ TEST_SIMPLE("/", basic);
+ TEST_SIMPLE("/", closures);
+ TEST_SIMPLE("/types/", basic_types);
+ TEST_SIMPLE("/js-signal-from-c/", js_signal_from_c);
+
+ return g_test_run();
+}
diff --git a/tests/c/test-common.h b/tests/c/test-common.h
new file mode 100644
index 0000000..e70cfe0
--- /dev/null
+++ b/tests/c/test-common.h
@@ -0,0 +1,17 @@
+
+/* Stuff you put in here is setup once in main() and gets passed around to
+ * all test functions and fixture setup/teardown functions in the data
+ * argument */
+typedef struct _TestSharedState {
+ int *argc_addr;
+ char ***argv_addr;
+ SeedEngine *eng;
+} TestSharedState;
+
+/* This fixture structure is allocated by glib, and before running each test
+ * the test_conform_simple_fixture_setup func (see below) is called to
+ * initialise it, and test_conform_simple_fixture_teardown is called when
+ * the test is finished. */
+typedef struct _TestSimpleFixture {
+ SeedContext *context;
+} TestSimpleFixture;
diff --git a/tests/javascript/COPYING b/tests/javascript/COPYING
new file mode 100644
index 0000000..d8205ee
--- /dev/null
+++ b/tests/javascript/COPYING
@@ -0,0 +1 @@
+Any code in these tests is to be considered under the MIT license.
diff --git a/tests/javascript/Makefile.am b/tests/javascript/Makefile.am
new file mode 100644
index 0000000..c718637
--- /dev/null
+++ b/tests/javascript/Makefile.am
@@ -0,0 +1,76 @@
+SUBDIRS = gtypes signals structs
+
+EXTRA_DIST = \
+ COPYING \
+ argv.js \
+ array-gtype.js \
+ builtin-argument-length.js \
+ check-syntax.js \
+ closure-finalization.js \
+ compare.js \
+ constructor-args.js \
+ constructor-prototype.js \
+ enum.js \
+ everything.js \
+ fork.js \
+ function-info.js \
+ gdk-event.js \
+ gerror.js \
+ gobject-scope.js \
+ gvalue-argument.js \
+ include.js \
+ include-syntax.js \
+ introspect.js \
+ json-constructor.js \
+ json.js \
+ list-test.js \
+ modules.js \
+ modules-noasserts.js \
+ native-closure-exception.js \
+ native-closure.js \
+ object-info.js \
+ out-test.js \
+ property-benchmark.js \
+ property-glib-exception.js \
+ quit.js \
+ sqlite.js \
+ syntax-test.js \
+ syntax-test-noasserts.js \
+ type-conversion.js \
+ testsuite.js
+
+TESTS = \
+ argv.js \
+ array-gtype.js \
+ builtin-argument-length.js \
+ check-syntax.js \
+ closure-finalization.js \
+ compare.js \
+ constructor-args.js \
+ constructor-prototype.js \
+ enum.js \
+ everything.js \
+ fork.js \
+ function-info.js \
+ gdk-event.js \
+ gerror.js \
+ gobject-scope.js \
+ gvalue-argument.js \
+ include.js \
+ include-syntax.js \
+ introspect.js \
+ json-constructor.js \
+ json.js \
+ list-test.js \
+ modules.js \
+ native-closure-exception.js \
+ native-closure.js \
+ object-info.js \
+ out-test.js \
+ property-benchmark.js \
+ property-glib-exception.js \
+ quit.js \
+ sqlite.js \
+ syntax-test.js \
+ type-conversion.js
+
diff --git a/tests/javascript/Makefile.in b/tests/javascript/Makefile.in
new file mode 100644
index 0000000..86a9df5
--- /dev/null
+++ b/tests/javascript/Makefile.in
@@ -0,0 +1,819 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = tests/javascript
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = gtypes signals structs
+EXTRA_DIST = \
+ COPYING \
+ argv.js \
+ array-gtype.js \
+ builtin-argument-length.js \
+ check-syntax.js \
+ closure-finalization.js \
+ compare.js \
+ constructor-args.js \
+ constructor-prototype.js \
+ enum.js \
+ everything.js \
+ fork.js \
+ function-info.js \
+ gdk-event.js \
+ gerror.js \
+ gobject-scope.js \
+ gvalue-argument.js \
+ include.js \
+ include-syntax.js \
+ introspect.js \
+ json-constructor.js \
+ json.js \
+ list-test.js \
+ modules.js \
+ modules-noasserts.js \
+ native-closure-exception.js \
+ native-closure.js \
+ object-info.js \
+ out-test.js \
+ property-benchmark.js \
+ property-glib-exception.js \
+ quit.js \
+ sqlite.js \
+ syntax-test.js \
+ syntax-test-noasserts.js \
+ type-conversion.js \
+ testsuite.js
+
+TESTS = \
+ argv.js \
+ array-gtype.js \
+ builtin-argument-length.js \
+ check-syntax.js \
+ closure-finalization.js \
+ compare.js \
+ constructor-args.js \
+ constructor-prototype.js \
+ enum.js \
+ everything.js \
+ fork.js \
+ function-info.js \
+ gdk-event.js \
+ gerror.js \
+ gobject-scope.js \
+ gvalue-argument.js \
+ include.js \
+ include-syntax.js \
+ introspect.js \
+ json-constructor.js \
+ json.js \
+ list-test.js \
+ modules.js \
+ native-closure-exception.js \
+ native-closure.js \
+ object-info.js \
+ out-test.js \
+ property-benchmark.js \
+ property-glib-exception.js \
+ quit.js \
+ sqlite.js \
+ syntax-test.js \
+ type-conversion.js
+
+all: 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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/javascript/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/javascript/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
+ ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-TESTS check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive 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-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-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/tests/javascript/argv.js b/tests/javascript/argv.js
new file mode 100755
index 0000000..67c6930
--- /dev/null
+++ b/tests/javascript/argv.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env seed
+
+imports.testsuite.assert(Seed.argv[0] == "seed")
diff --git a/tests/javascript/array-gtype.js b/tests/javascript/array-gtype.js
new file mode 100755
index 0000000..969f711
--- /dev/null
+++ b/tests/javascript/array-gtype.js
@@ -0,0 +1,17 @@
+#!/usr/bin/env seed
+
+Gtk = imports.gi.Gtk;
+GObject = imports.gi.GObject;
+
+Gtk.init(Seed.argv);
+
+try
+{
+ list = new Gtk.ListStore();
+ list.set_column_types(2, [GObject.TYPE_STRING, GObject.TYPE_INT]);
+}
+catch(e)
+{
+ print(e)
+ imports.testsuite.unreachable()
+}
diff --git a/tests/javascript/builtin-argument-length.js b/tests/javascript/builtin-argument-length.js
new file mode 100755
index 0000000..ac6118a
--- /dev/null
+++ b/tests/javascript/builtin-argument-length.js
@@ -0,0 +1,52 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+
+function correctArgs(fs, a)
+{
+ try
+ {
+ eval(fs).apply(this, a)
+ }
+ catch(e)
+ {
+ if(e.name == "ArgumentError")
+ testsuite.unreachable(fs)
+ }
+}
+
+function wrongArgs(fs, a)
+{
+ try
+ {
+ eval(fs).apply(this, a)
+ testsuite.unreachable(fs)
+ }
+ catch(e)
+ {
+
+ }
+}
+
+wrongArgs("Seed.spawn", [])
+correctArgs("Seed.spawn", ["asdfasdfasdf"])
+
+wrongArgs("Seed.include", [])
+wrongArgs("Seed.include", [1])
+correctArgs("Seed.include", [""])
+wrongArgs("Seed.include", [1,2])
+wrongArgs("Seed.include", ["fail.js","another.js"])
+
+wrongArgs("print", [])
+wrongArgs("print", [1,2])
+wrongArgs("print", ["asdf",2])
+wrongArgs("print", [1,2,3])
+
+wrongArgs("Seed.introspect", [])
+correctArgs("Seed.introspect", [Seed])
+wrongArgs("Seed.introspect", [Seed, 5.23])
+
+wrongArgs("Seed.check_syntax", [])
+correctArgs("Seed.check_syntax", ["asdfasdf"])
+wrongArgs("Seed.check_syntax", ["5+5", "asdf"])
+
diff --git a/tests/javascript/check-syntax.js b/tests/javascript/check-syntax.js
new file mode 100755
index 0000000..007c8ae
--- /dev/null
+++ b/tests/javascript/check-syntax.js
@@ -0,0 +1,32 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+
+try
+{
+ Seed.check_syntax("5+5;")
+}
+catch(e)
+{
+ testsuite.unreachable("5+5; is not a syntax error")
+}
+
+try
+{
+ Seed.check_syntax("asdfasdf.jsdf()")
+}
+catch(e)
+{
+ testsuite.unreachable("asdfasdf.jsdf() is not a syntax error")
+}
+
+try
+{
+ Seed.check_syntax("one[)")
+ testsuite.unreachable("one[) should be a syntax error")
+}
+catch(e)
+{
+ testsuite.assert(e instanceof SyntaxError)
+}
+
diff --git a/tests/javascript/closure-finalization.js b/tests/javascript/closure-finalization.js
new file mode 100755
index 0000000..003946e
--- /dev/null
+++ b/tests/javascript/closure-finalization.js
@@ -0,0 +1,27 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite;
+Gtk = imports.gi.Gtk;
+
+Gtk.init(Seed.argv);
+
+w = new Gtk.Window();
+
+// Closure will always be GCed at end of signal.
+signal = function()
+{
+ widgets = []
+ w.foreach(function(widget){widgets.push(widget.toString())})
+ testsuite.assert(widgets[0] == ["[object GtkVBox]"])
+ testsuite.assert(widgets.length == 1)
+};
+
+vbox = new Gtk.VBox();
+
+w.add(vbox);
+
+w.signal.show.connect(signal);
+
+w.show_all();
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/compare.js b/tests/javascript/compare.js
new file mode 100755
index 0000000..6a4f59c
--- /dev/null
+++ b/tests/javascript/compare.js
@@ -0,0 +1,13 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+
+Gtk.init(Seed.argv);
+
+var a = new Gtk.Button();
+var b = new Gtk.Button();
+var c = a;
+
+testsuite.assert(a != b);
+testsuite.assert(c == a);
diff --git a/tests/javascript/constructor-args.js b/tests/javascript/constructor-args.js
new file mode 100755
index 0000000..efdfa94
--- /dev/null
+++ b/tests/javascript/constructor-args.js
@@ -0,0 +1,36 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+Gtk.init(Seed.argv);
+
+try
+{
+ w = new Gtk.Window();
+}
+catch (e)
+{
+ testsuite.unreachable()
+}
+
+try
+{
+ w = new Gtk.Window(1, 2);
+ testsuite.unreachable()
+}
+catch (e)
+{
+ testsuite.assert(e.name == "ArgumentError")
+}
+
+try
+{
+ w = new Gtk.Window("safA");
+ testsuite.unreachable()
+}
+catch (e)
+{
+ testsuite.assert(e.name == "ArgumentError")
+}
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/constructor-prototype.js b/tests/javascript/constructor-prototype.js
new file mode 100755
index 0000000..d45c193
--- /dev/null
+++ b/tests/javascript/constructor-prototype.js
@@ -0,0 +1,12 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+Gtk.Window.prototype.hello = "Hello World"
+
+a = new Gtk.Window()
+
+testsuite.assert(a.hello == "Hello World")
diff --git a/tests/javascript/enum.js b/tests/javascript/enum.js
new file mode 100755
index 0000000..b68a5a6
--- /dev/null
+++ b/tests/javascript/enum.js
@@ -0,0 +1,13 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+
+Gtk.init(Seed.argv);
+
+b = new Gtk.Button()
+b.relief = Gtk.ReliefStyle.NONE
+
+testsuite.assert(Gtk.ReliefStyle.NONE == 2)
+testsuite.assert(b.relief == 2)
+
diff --git a/tests/javascript/everything.js b/tests/javascript/everything.js
new file mode 100755
index 0000000..8a61b8f
--- /dev/null
+++ b/tests/javascript/everything.js
@@ -0,0 +1,71 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Everything = imports.gi.Everything
+GObject = imports.gi.GObject
+JSON = imports.JSON
+
+assert = testsuite.assert
+
+with(Everything)
+{
+assert(test_boolean(true) == true)
+assert(test_int8(-124) == -124)
+assert(test_uint8(129) == 129)
+assert(test_int16(-1235) == -1235)
+assert(test_uint16(1387) == 1387)
+assert(test_int32(-123435) == -123435)
+assert(test_uint32(133487) == 133487)
+assert(test_int64(-16323375) == -16323375)
+assert(test_uint64(13873737) == 13873737)
+assert(test_int(-16325) == -16325)
+assert(test_uint(33737) == 33737)
+assert(test_long(-16325) == -16325)
+assert(test_ulong(33737) == 33737)
+assert(test_ssize(12) == 12)
+assert(test_size(143) == 143)
+assert(test_float(-1853.12334) > (-1853.12334 - 0.001))
+assert(test_float(-1853.12334) < (-1853.12334 + 0.001))
+assert(test_double(-134543853.12334) > (-134543853.12334 - 0.001))
+assert(test_double(-134543853.12334) < (-134543853.12334 + 0.001))
+//assert(test_timet(1853) == 1853)
+assert(test_gtype(8) == 8)
+
+assert(test_filename_return()[0] == "åäö")
+assert(test_filename_return()[1] == "/etc/fstab")
+assert(test_glist_nothing_return()[0] == "1")
+assert(test_glist_nothing_return2()[1] == "2")
+assert(test_glist_container_return()[2] == "3")
+assert(test_glist_everything_return()[1] == "2")
+
+//test_glist_nothing_in([2, 3, 4])
+
+assert(test_strv_out().toString() == "thanks,for,all,the,fish")
+
+assert(test_closure(function () { return [GObject.TYPE_INT, 5] }) == 5)
+assert(test_closure_one_arg(function (a) { return [GObject.TYPE_INT, a] }) == 0)
+
+assert(test_value_return(123).get_int() == 123)
+
+assert(TestEnum.VALUE1 == 0)
+assert(TestEnum.VALUE2 == 1)
+assert(TestEnum.VALUE3 == 42)
+assert(TestFlags.FLAG1 == 1)
+assert(TestFlags.FLAG2 == 2)
+assert(TestFlags.FLAG3 == 4)
+
+TestStructA.some_int = 15
+assert(TestStructA.some_int == 15)
+TestStructA.some_int8 = 120
+assert(TestStructA.some_int8 == 120)
+TestStructA.some_double = 120.2357
+assert(TestStructA.some_double > (120.2357 - 0.001))
+assert(TestStructA.some_double < (120.2357 + 0.001))
+TestStructA.some_enum = TestEnum.VALUE3
+assert(TestStructA.some_enum == 42)
+
+TestStructB.some_int8 = 19
+assert(TestStructB.some_int8 == 19)
+//TestStructB.nested_a.some_double = 134.3455
+//print(TestStructB.nested_a.some_double)
+}
diff --git a/tests/javascript/fork.js b/tests/javascript/fork.js
new file mode 100755
index 0000000..ad87572
--- /dev/null
+++ b/tests/javascript/fork.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+os = imports.os
+
+a = os.fork()
+
+testsuite.assert(a >= 0)
diff --git a/tests/javascript/function-info.js b/tests/javascript/function-info.js
new file mode 100755
index 0000000..60c6a43
--- /dev/null
+++ b/tests/javascript/function-info.js
@@ -0,0 +1,9 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+GIRepository = imports.gi.GIRepository
+
+f = Gtk.Window.prototype.resize.info
+
+testsuite.assert(GIRepository.base_info_get_name(f) == "resize")
diff --git a/tests/javascript/gdk-event.js b/tests/javascript/gdk-event.js
new file mode 100755
index 0000000..e71c4ed
--- /dev/null
+++ b/tests/javascript/gdk-event.js
@@ -0,0 +1,27 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gdk = imports.gi.Gdk
+Gtk.init(Seed.argv)
+
+function paint(wdg, evt)
+{
+ testsuite.assert(evt.expose.window instanceof Gdk.Window)
+ testsuite.assert(wdg.window instanceof Gdk.Window)
+ testsuite.assert(evt.expose.window == wdg.window)
+ testsuite.assert(evt.expose.area.width == 200)
+
+ Gtk.main_quit()
+
+ return false
+}
+
+var win = new Gtk.Window()
+win.signal.expose_event.connect(paint)
+win.resize(200,200)
+win.show()
+
+Gtk.main()
+
+testsuite.checkAsserts(4)
diff --git a/tests/javascript/gerror.js b/tests/javascript/gerror.js
new file mode 100755
index 0000000..20690c0
--- /dev/null
+++ b/tests/javascript/gerror.js
@@ -0,0 +1,14 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gio = imports.gi.Gio
+
+try
+{
+ Gio.simple_write(".", "test")
+ testsuite.unreachable()
+}
+catch (e)
+{
+ testsuite.assert(e.name == "GIoError")
+}
diff --git a/tests/javascript/gobject-scope.js b/tests/javascript/gobject-scope.js
new file mode 100755
index 0000000..a510049
--- /dev/null
+++ b/tests/javascript/gobject-scope.js
@@ -0,0 +1,13 @@
+#!/usr/bin/env seed
+
+// TODO: this test doesn't actually test anything...
+
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+for(var i = 0; i < 100; i++)
+{
+ var button = new Gtk.Button({label: "Test!"})
+}
+
diff --git a/tests/javascript/gtypes/Makefile.am b/tests/javascript/gtypes/Makefile.am
new file mode 100644
index 0000000..9efebe1
--- /dev/null
+++ b/tests/javascript/gtypes/Makefile.am
@@ -0,0 +1,27 @@
+EXTRA_DIST = \
+ gtype-class-init-exception.js \
+ gtype-typerror.js \
+ gtype.js \
+ gtype-gtype.js \
+ gtype-signal-args.js \
+ gtype-property-construct.js \
+ gtype-property-nice.js \
+ gtype-self.js \
+ gtype-extraprop.js \
+ gtype-gtype-class-init.js \
+ gtype-signal.js \
+ testsuite.js
+
+TESTS = \
+ gtype-class-init-exception.js \
+ gtype-typerror.js \
+ gtype.js \
+ gtype-gtype.js \
+ gtype-signal-args.js \
+ gtype-property-construct.js \
+ gtype-property-nice.js \
+ gtype-self.js \
+ gtype-extraprop.js \
+ gtype-gtype-class-init.js \
+ gtype-signal.js
+
diff --git a/tests/javascript/gtypes/Makefile.in b/tests/javascript/gtypes/Makefile.in
new file mode 100644
index 0000000..c237709
--- /dev/null
+++ b/tests/javascript/gtypes/Makefile.in
@@ -0,0 +1,570 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = tests/javascript/gtypes
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ gtype-class-init-exception.js \
+ gtype-typerror.js \
+ gtype.js \
+ gtype-gtype.js \
+ gtype-signal-args.js \
+ gtype-property-construct.js \
+ gtype-property-nice.js \
+ gtype-self.js \
+ gtype-extraprop.js \
+ gtype-gtype-class-init.js \
+ gtype-signal.js \
+ testsuite.js
+
+TESTS = \
+ gtype-class-init-exception.js \
+ gtype-typerror.js \
+ gtype.js \
+ gtype-gtype.js \
+ gtype-signal-args.js \
+ gtype-property-construct.js \
+ gtype-property-nice.js \
+ gtype-self.js \
+ gtype-extraprop.js \
+ gtype-gtype-class-init.js \
+ gtype-signal.js
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/javascript/gtypes/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/javascript/gtypes/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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
+
+
+# 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/tests/javascript/gtypes/gtype-class-init-exception.js b/tests/javascript/gtypes/gtype-class-init-exception.js
new file mode 100755
index 0000000..86760d2
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-class-init-exception.js
@@ -0,0 +1,30 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindowType = {
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ class_init: function(klass, prototype)
+ {
+ prototype = notAVariable.notAProperty
+ },
+ init: function(klass)
+ {
+ }
+}
+
+try
+{
+ HelloWindow = new GType(HelloWindowType)
+ w = new HelloWindow()
+}
+catch(e)
+{
+ testsuite.assert(e instanceof ReferenceError)
+}
+
+testsuite.checkAsserts(1)
+
diff --git a/tests/javascript/gtypes/gtype-extraprop.js b/tests/javascript/gtypes/gtype-extraprop.js
new file mode 100755
index 0000000..5ecd17a
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-extraprop.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ init: function(self)
+ {
+ testsuite.assert(self.test == 2)
+ testsuite.assert(self.testAgain == "arst")
+ }
+})
+
+w = new HelloWindow({test: 2, testAgain: "arst"})
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/gtypes/gtype-gtype-class-init.js b/tests/javascript/gtypes/gtype-gtype-class-init.js
new file mode 100755
index 0000000..0523e0b
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-gtype-class-init.js
@@ -0,0 +1,30 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ init: function()
+ {
+ }
+})
+
+w = new HelloWindow()
+
+InheritedWindow = new GType({
+ parent: HelloWindow.type,
+ name: "InheritedWindow",
+ class_init: function(klass, prototype)
+ {
+ testsuite.assert(1)
+ },
+ init: function()
+ {
+ }
+})
+
+b = new InheritedWindow()
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/gtypes/gtype-gtype.js b/tests/javascript/gtypes/gtype-gtype.js
new file mode 100755
index 0000000..3bbe418
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-gtype.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ init: function(self)
+ {
+ self.id = 5
+ }
+})
+
+InheritedWindow = new GType({
+ parent: HelloWindow.type,
+ name: "InheritedWindow",
+ init: function(self)
+ {
+ self.id = 10
+ }
+})
+
+w = new HelloWindow()
+b = new InheritedWindow()
+
+testsuite.assert(w.id == 5)
+testsuite.assert(b.id == 10)
diff --git a/tests/javascript/gtypes/gtype-property-construct.js b/tests/javascript/gtypes/gtype-property-construct.js
new file mode 100755
index 0000000..f5460f0
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-property-construct.js
@@ -0,0 +1,41 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+GObject = imports.gi.GObject
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ properties: [
+ {
+ name: "test",
+ type: GObject.TYPE_BOOLEAN,
+ nick: "test property",
+ blurb: "A test property!",
+ default_value: false,
+ flags: (GObject.ParamFlags.CONSTRUCT | GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE)
+ }
+ ],
+
+ init: function()
+ {
+ testsuite.assert(this.test == true)
+ }
+})
+
+w = new HelloWindow({test: true})
+
+testsuite.assert(w.test == true)
+
+try
+{
+ w.test = "arst"
+}
+catch(e)
+{
+ testsuite.assert(e.name == "ConversionError")
+}
+
+testsuite.checkAsserts(3)
diff --git a/tests/javascript/gtypes/gtype-property-nice.js b/tests/javascript/gtypes/gtype-property-nice.js
new file mode 100755
index 0000000..ed0613d
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-property-nice.js
@@ -0,0 +1,30 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+GObject = imports.gi.GObject
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ properties: [{
+ name: "randomproperty",
+ type: GObject.TYPE_BOOLEAN,
+ nick: "randomproperty",
+ blurb: "longer blurb about property",
+ default_value: true,
+ flags: (GObject.ParamFlags.CONSTRUCT | GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE)}],
+ init: function(klass)
+ {
+
+ }
+})
+
+w = new HelloWindow()
+
+testsuite.assert(w.randomproperty == 1)
+w.randomproperty = 5
+testsuite.assert(w.randomproperty == 1)
+w.randomproperty = 0
+testsuite.assert(w.randomproperty == 0)
diff --git a/tests/javascript/gtypes/gtype-self.js b/tests/javascript/gtypes/gtype-self.js
new file mode 100755
index 0000000..256a7ae
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-self.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ init: function(self)
+ {
+ testsuite.assert(this == self)
+ }
+})
+
+w = new HelloWindow()
+
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/gtypes/gtype-signal-args.js b/tests/javascript/gtypes/gtype-signal-args.js
new file mode 100755
index 0000000..02853a5
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-signal-args.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+GObject = imports.gi.GObject
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ signals: [{name: "hello",
+ parameters: [GObject.TYPE_INT,
+ GObject.TYPE_STRING],
+ return_type: Gtk.Window.type}]
+})
+
+w = new HelloWindow()
+
+w.signal.hello.connect(function(object, number, string)
+{
+ var win = new Gtk.Window()
+ testsuite.assert(number == 2)
+ testsuite.assert(string == "Test")
+ return win
+})
+
+testsuite.assert(w.signal.hello.emit(2, "Test") instanceof Gtk.Window)
+
+testsuite.checkAsserts(3)
diff --git a/tests/javascript/gtypes/gtype-signal.js b/tests/javascript/gtypes/gtype-signal.js
new file mode 100755
index 0000000..1705f10
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-signal.js
@@ -0,0 +1,23 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+HelloWindowType = {
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ signals: [{name: "hello"}, {name: "goodbye"}]
+}
+
+HelloWindow = new GType(HelloWindowType)
+w = new HelloWindow()
+
+w.signal.hello.connect(function(){hello = 5})
+w.signal.goodbye.connect(function(){goodbye = 10})
+
+w.signal.hello.emit()
+w.signal.goodbye.emit()
+
+testsuite.assert(hello == 5)
+testsuite.assert(goodbye == 10)
diff --git a/tests/javascript/gtypes/gtype-typerror.js b/tests/javascript/gtypes/gtype-typerror.js
new file mode 100755
index 0000000..27ec47a
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-typerror.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+HelloWindowType = {
+ parent: "Mom",
+ name: "HelloWindow"
+}
+
+try
+{
+ HelloWindow = new GType(HelloWindowType)
+}
+catch (e)
+{
+ testsuite.assert(e.message == "GType constructor expected GType for parent")
+}
diff --git a/tests/javascript/gtypes/gtype.js b/tests/javascript/gtypes/gtype.js
new file mode 100755
index 0000000..0157b5b
--- /dev/null
+++ b/tests/javascript/gtypes/gtype.js
@@ -0,0 +1,33 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+HelloWindow = new GType({
+ parent: Gtk.Window.type,
+ name: "HelloWindow",
+ class_init: function(klass, prototype)
+ {
+ prototype.message = "Prototypes!"
+ },
+ init: function(self)
+ {
+ this.title = "Hello!"
+ }
+})
+
+w = new HelloWindow()
+
+testsuite.assert(w.message == "Prototypes!")
+
+w.signal.map.connect(
+ function(widget)
+ {
+ testsuite.assert(widget.title == "Hello!")
+ })
+
+w.show()
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/gtypes/testsuite.js b/tests/javascript/gtypes/testsuite.js
new file mode 100755
index 0000000..a4d845e
--- /dev/null
+++ b/tests/javascript/gtypes/testsuite.js
@@ -0,0 +1,32 @@
+assertCount = 0
+
+function assert(a, err)
+{
+ assertCount++
+
+ if(!a)
+ {
+ if(err)
+ print("Assertion " + assertCount + " failed: " + err + ".")
+ else
+ print("Assertion " + assertCount + " failed.")
+
+ Seed.quit(assertCount)
+ }
+}
+
+function unreachable(err)
+{
+ if(err)
+ print("Unreachable code reached: " + err.toString() + ".")
+ else
+ print("Unreachable code reached.")
+
+ Seed.quit(1)
+}
+
+function checkAsserts(n)
+{
+ if(assertCount != n)
+ assert(0, "Some assertions failed to run")
+}
diff --git a/tests/javascript/gvalue-argument.js b/tests/javascript/gvalue-argument.js
new file mode 100755
index 0000000..b3a6462
--- /dev/null
+++ b/tests/javascript/gvalue-argument.js
@@ -0,0 +1,14 @@
+#!/usr/bin/env seed
+
+Gtk = imports.gi.Gtk;
+GObject = imports.gi.GObject
+Gtk.init(Seed.argv);
+
+var s = new Gtk.ListStore();
+
+s.set_column_types(2, [GObject.TYPE_STRING, GObject.TYPE_INT]);
+var iter = new Gtk.TreeIter();
+
+s.append(iter);
+s.set_value(iter, 0, "Hi");
+s.set_value(iter, 1, [GObject.TYPE_INT, 10]);
diff --git a/tests/javascript/include-syntax.js b/tests/javascript/include-syntax.js
new file mode 100755
index 0000000..950d0c6
--- /dev/null
+++ b/tests/javascript/include-syntax.js
@@ -0,0 +1,16 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+
+try
+{
+ Seed.include("syntax-test-noasserts.js")
+ testsuite.unreachable()
+}
+catch(e)
+{
+ testsuite.assert(e instanceof SyntaxError)
+}
+
+testsuite.checkAsserts(1)
+
diff --git a/tests/javascript/include.js b/tests/javascript/include.js
new file mode 100755
index 0000000..ccc71de
--- /dev/null
+++ b/tests/javascript/include.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env seed
+
+Seed.include("json.js");
diff --git a/tests/javascript/introspect.js b/tests/javascript/introspect.js
new file mode 100755
index 0000000..b02f991
--- /dev/null
+++ b/tests/javascript/introspect.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+JSON = imports.JSON
+
+Gtk.init(Seed.argv)
+
+win = new Gtk.Window()
+
+info = Seed.introspect(win.set_opacity)
+
+testsuite.assert(info.name == "set_opacity")
+testsuite.assert(info.return_type == "void")
+testsuite.assert(info.args[0].type == "double")
diff --git a/tests/javascript/json-constructor.js b/tests/javascript/json-constructor.js
new file mode 100755
index 0000000..2c2a262
--- /dev/null
+++ b/tests/javascript/json-constructor.js
@@ -0,0 +1,12 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+GLib = imports.gi.GLib
+
+Gtk.init(Seed.argv)
+
+window = new Gtk.Window({title: "JSON Win!"})
+window.show_all()
+
+testsuite.assert(window.title == "JSON Win!")
diff --git a/tests/javascript/json.js b/tests/javascript/json.js
new file mode 100755
index 0000000..2035046
--- /dev/null
+++ b/tests/javascript/json.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite;
+JSON = imports.JSON;
+
+a = {test: 3,
+ hello: "Goodbye",
+ more: {a: "1", b: 2, c:"d"}}
+
+json = JSON.stringify(a)
+object = JSON.parse(json)
+json2 = JSON.stringify(object)
+
+testsuite.assert(json == json2)
+testsuite.assert(object.test == 3)
+testsuite.assert(object.hello == "Goodbye")
+testsuite.assert(object.more.a == "1")
+testsuite.assert(object.more.b == 2)
+testsuite.assert(object.more.c == "d")
+
diff --git a/tests/javascript/list-test.js b/tests/javascript/list-test.js
new file mode 100755
index 0000000..bfc1505
--- /dev/null
+++ b/tests/javascript/list-test.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+b1 = new Gtk.Button()
+b2 = new Gtk.Button()
+vbox = new Gtk.VBox()
+vbox.pack_start(b1)
+vbox.pack_start(b2)
+
+children = vbox.get_children()
+
+testsuite.assert(children[0] instanceof Gtk.Button)
+testsuite.assert(children[1] instanceof Gtk.Button)
+testsuite.assert(children[0] != children[1])
+testsuite.assert(children.length == 2)
+
diff --git a/tests/javascript/modules-noasserts.js b/tests/javascript/modules-noasserts.js
new file mode 100755
index 0000000..e421322
--- /dev/null
+++ b/tests/javascript/modules-noasserts.js
@@ -0,0 +1,25 @@
+#!/usr/bin/env seed
+
+// This test is merely to appease the coverage checker (calls init in each
+// module); it will also catch unresolved symbol errors in the modules.
+
+try
+{
+ cairo = imports.cairo;
+ canvas = imports.canvas;
+ dbus = imports.dbus;
+ example = imports.example;
+ gettext = imports.gettext;
+ gtkbuilder = imports.gtkbuilder;
+ libxml = imports.libxml;
+ mpfr = imports.mpfr;
+ Multiprocessing = imports.Multiprocessing;
+ os = imports.os;
+ readline = imports.readline;
+ sandbox = imports.sandbox;
+ sqlite = imports.sqlite;
+}
+catch(e)
+{
+
+}
diff --git a/tests/javascript/modules.js b/tests/javascript/modules.js
new file mode 100755
index 0000000..cfc4f5a
--- /dev/null
+++ b/tests/javascript/modules.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+
+input = Seed.spawn("/usr/bin/env seed modules-noasserts.js");
+
+testsuite.assert(input.stdout == "Hello Seed Module World\n")
+
diff --git a/tests/javascript/native-closure-exception.js b/tests/javascript/native-closure-exception.js
new file mode 100755
index 0000000..3820025
--- /dev/null
+++ b/tests/javascript/native-closure-exception.js
@@ -0,0 +1,28 @@
+#!/usr/bin/env seed
+
+// TODO: shouldn't the exception be passed back to the caller?
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+w = new Gtk.Window()
+vbox = new Gtk.VBox()
+
+closure = function(widget){a.a.a}
+w.add(vbox)
+
+vbox.pack_start(new Gtk.Label())
+
+try
+{
+ vbox.foreach(closure)
+ // ARST testsuite.unreachable()
+}
+catch(e)
+{
+ testsuite.assert(e instanceof ReferenceError)
+}
+
+//testsuite.checkAsserts
+print("This test doesn't work yet...")
diff --git a/tests/javascript/native-closure.js b/tests/javascript/native-closure.js
new file mode 100755
index 0000000..fdcebb3
--- /dev/null
+++ b/tests/javascript/native-closure.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+w = new Gtk.Window()
+vbox = new Gtk.VBox()
+
+closure = function(widget) {
+ testsuite.assert(widget instanceof Gtk.Label || widget instanceof Gtk.Button)
+}
+w.add(vbox)
+
+vbox.pack_start(new Gtk.Label())
+vbox.pack_start(new Gtk.Button())
+
+vbox.foreach(closure)
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/object-info.js b/tests/javascript/object-info.js
new file mode 100755
index 0000000..36b8c9d
--- /dev/null
+++ b/tests/javascript/object-info.js
@@ -0,0 +1,24 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+GIRepository = imports.gi.GIRepository
+
+gir = GIRepository.IRepository.get_default()
+
+info = gir.find_by_gtype(Gtk.Window.type)
+testsuite.assert(GIRepository.base_info_get_name(info) == "Window")
+
+n = GIRepository.object_info_get_n_interfaces(info)
+for (i = 0; i < n; i++)
+{
+ property = GIRepository.object_info_get_interface(info, i)
+ propertyname = GIRepository.base_info_get_name(property)
+ testsuite.assert(propertyname == "Buildable" ||
+ propertyname == "ImplementorIface")
+ GIRepository.base_info_unref(property)
+}
+
+GIRepository.base_info_unref(info)
+
+testsuite.checkAsserts(3)
diff --git a/tests/javascript/out-test.js b/tests/javascript/out-test.js
new file mode 100755
index 0000000..900b64d
--- /dev/null
+++ b/tests/javascript/out-test.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+w = new Gtk.Window({width_request: 5, height_request: 100})
+o1 = { }
+o2 = { }
+
+w.get_size_request(o1, o2)
+
+testsuite.assert(o1.value == 5)
+testsuite.assert(o2.value == 100)
diff --git a/tests/javascript/property-benchmark.js b/tests/javascript/property-benchmark.js
new file mode 100755
index 0000000..3a242ec
--- /dev/null
+++ b/tests/javascript/property-benchmark.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env seed
+
+// TODO: this test doesn't do anything
+
+Gtk = imports.gi.Gtk;
+Gtk.init(Seed.argv);
+
+window = new Gtk.Window();
+window.title="HI";
+window.name="HI";
+for (i = 0; i < 10000; i++)
+{
+ a = window.title;
+ b = window.name;
+}
diff --git a/tests/javascript/property-glib-exception.js b/tests/javascript/property-glib-exception.js
new file mode 100755
index 0000000..4c2b2cd
--- /dev/null
+++ b/tests/javascript/property-glib-exception.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+
+Gtk.init(Seed.argv)
+
+window = new Gtk.Window()
+
+try
+{
+ window.opacity = 3
+}
+catch(e)
+{
+ testsuite.assert(e.name == "PropertyError")
+ testsuite.assert(e.message == "value \"3.000000\" of type `gdouble' is invalid or out of range for property `opacity' of type `gdouble'")
+}
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/quit.js b/tests/javascript/quit.js
new file mode 100755
index 0000000..4103cc1
--- /dev/null
+++ b/tests/javascript/quit.js
@@ -0,0 +1,4 @@
+#!/usr/bin/env seed
+
+Seed.quit(0)
+imports.testsuite.unreachable()
diff --git a/tests/javascript/signals/Makefile.am b/tests/javascript/signals/Makefile.am
new file mode 100644
index 0000000..27f286d
--- /dev/null
+++ b/tests/javascript/signals/Makefile.am
@@ -0,0 +1,20 @@
+EXTRA_DIST = \
+ signal-connect.js \
+ signal-disconnect.js \
+ signal-exception.js \
+ signal-expects.js \
+ signal-invalid.js \
+ signal.js \
+ signal-nofunc.js \
+ signal-userdata.js \
+ testsuite.js
+
+TESTS = \
+ signal-connect.js \
+ signal-disconnect.js \
+ signal-exception.js \
+ signal-expects.js \
+ signal-invalid.js \
+ signal.js \
+ signal-nofunc.js \
+ signal-userdata.js
diff --git a/tests/javascript/signals/Makefile.in b/tests/javascript/signals/Makefile.in
new file mode 100644
index 0000000..d9707f0
--- /dev/null
+++ b/tests/javascript/signals/Makefile.in
@@ -0,0 +1,564 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = tests/javascript/signals
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ signal-connect.js \
+ signal-disconnect.js \
+ signal-exception.js \
+ signal-expects.js \
+ signal-invalid.js \
+ signal.js \
+ signal-nofunc.js \
+ signal-userdata.js \
+ testsuite.js
+
+TESTS = \
+ signal-connect.js \
+ signal-disconnect.js \
+ signal-exception.js \
+ signal-expects.js \
+ signal-invalid.js \
+ signal.js \
+ signal-nofunc.js \
+ signal-userdata.js
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/javascript/signals/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/javascript/signals/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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
+
+
+# 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/tests/javascript/signals/signal-connect.js b/tests/javascript/signals/signal-connect.js
new file mode 100755
index 0000000..38b717a
--- /dev/null
+++ b/tests/javascript/signals/signal-connect.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+function handle_opacity_change(obj, gobject, user_data)
+{
+ testsuite.assert(user_data instanceof Gtk.Button)
+ testsuite.assert(user_data === button)
+ testsuite.assert(obj.opacity == 0.5)
+}
+
+win = new Gtk.Window()
+button = new Gtk.Button()
+win.signal.connect("notify::opacity", handle_opacity_change, button)
+win.opacity = 0.5
+
+testsuite.checkAsserts(3)
diff --git a/tests/javascript/signals/signal-disconnect.js b/tests/javascript/signals/signal-disconnect.js
new file mode 100755
index 0000000..df81509
--- /dev/null
+++ b/tests/javascript/signals/signal-disconnect.js
@@ -0,0 +1,21 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+myglobal = 0
+
+function test()
+{
+ myglobal += 1234
+}
+
+w = new Gtk.Window()
+id = w.signal.map.connect(test)
+w.show_all()
+w.hide()
+w.signal.disconnect(id)
+w.show_all()
+
+testsuite.assert(myglobal == 1234)
diff --git a/tests/javascript/signals/signal-exception.js b/tests/javascript/signals/signal-exception.js
new file mode 100755
index 0000000..860f1a7
--- /dev/null
+++ b/tests/javascript/signals/signal-exception.js
@@ -0,0 +1,16 @@
+#!/usr/bin/env seed
+// Returns: 0
+// STDIN:
+// STDOUT:
+// STDERR:\n\*\* \(seed:[0-9]+\): WARNING \*\*: Exception in closure .*
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+Gtk.init(Seed.argv);
+
+w = new Gtk.Window();
+
+//w.signal.map.connect(function(){3 = undefined});
+//w.show();
+
+print("This is another one of those tests that probably doesn't chain right yet")
diff --git a/tests/javascript/signals/signal-expects.js b/tests/javascript/signals/signal-expects.js
new file mode 100755
index 0000000..56baa66
--- /dev/null
+++ b/tests/javascript/signals/signal-expects.js
@@ -0,0 +1,17 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+function expects_test(widget, user_data)
+{
+ testsuite.assert(widget == w)
+ testsuite.assert(user_data == null)
+}
+
+w = new Gtk.Window()
+w.signal.map.connect(expects_test)
+w.show()
+
+testsuite.checkAsserts(2)
diff --git a/tests/javascript/signals/signal-invalid.js b/tests/javascript/signals/signal-invalid.js
new file mode 100755
index 0000000..006fb1e
--- /dev/null
+++ b/tests/javascript/signals/signal-invalid.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+w = new Gtk.Window()
+
+try
+{
+ a = w.signal.notasignal;
+ testsuite.unreachable();
+}
+catch(e)
+{
+ testsuite.assert(e.message == "Failed to connect to notasignal. Invalid signal name.");
+}
+
diff --git a/tests/javascript/signals/signal-nofunc.js b/tests/javascript/signals/signal-nofunc.js
new file mode 100755
index 0000000..71ca071
--- /dev/null
+++ b/tests/javascript/signals/signal-nofunc.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+Gtk.init(Seed.argv);
+
+w = new Gtk.Window();
+
+try
+{
+ w.signal.map.connect(3);
+ testsuite.unreachable()
+}
+catch (e)
+{
+ testsuite.assert(e.message == "Signal connection requires a function as first argument")
+}
+
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/signals/signal-userdata.js b/tests/javascript/signals/signal-userdata.js
new file mode 100755
index 0000000..c18d717
--- /dev/null
+++ b/tests/javascript/signals/signal-userdata.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk;
+JSON = imports.JSON;
+
+Gtk.init(Seed.argv);
+
+function userdata_test(widget, user_data)
+{
+ testsuite.assert(user_data.Hello == "World")
+}
+
+w = new Gtk.Window();
+w.signal.map.connect(userdata_test, {Hello: "World"});
+w.show();
+
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/signals/signal.js b/tests/javascript/signals/signal.js
new file mode 100755
index 0000000..41b6fa3
--- /dev/null
+++ b/tests/javascript/signals/signal.js
@@ -0,0 +1,17 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+function mapped(window)
+{
+ testsuite.assert(window == w)
+}
+
+w = new Gtk.Window()
+w.signal.map.connect(mapped)
+
+w.show_all()
+
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/signals/testsuite.js b/tests/javascript/signals/testsuite.js
new file mode 100755
index 0000000..a4d845e
--- /dev/null
+++ b/tests/javascript/signals/testsuite.js
@@ -0,0 +1,32 @@
+assertCount = 0
+
+function assert(a, err)
+{
+ assertCount++
+
+ if(!a)
+ {
+ if(err)
+ print("Assertion " + assertCount + " failed: " + err + ".")
+ else
+ print("Assertion " + assertCount + " failed.")
+
+ Seed.quit(assertCount)
+ }
+}
+
+function unreachable(err)
+{
+ if(err)
+ print("Unreachable code reached: " + err.toString() + ".")
+ else
+ print("Unreachable code reached.")
+
+ Seed.quit(1)
+}
+
+function checkAsserts(n)
+{
+ if(assertCount != n)
+ assert(0, "Some assertions failed to run")
+}
diff --git a/tests/javascript/sqlite.js b/tests/javascript/sqlite.js
new file mode 100755
index 0000000..0d02392
--- /dev/null
+++ b/tests/javascript/sqlite.js
@@ -0,0 +1,32 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gio = imports.gi.Gio
+sqlite = imports.sqlite
+JSON = imports.JSON
+
+try
+{
+ Gio.file_new_for_path("/tmp/.seed_test.db")["delete"]()
+}
+catch(e)
+{
+ // We don't care if we fail to delete the (probably nonexistent) file...
+}
+
+d = new sqlite.Database("/tmp/.seed_test.db")
+
+d.exec("create table t1 (t1key INTEGER PRIMARY KEY,data TEXT,num double,timeEnter DATE)")
+d.exec("insert into t1 (data,num) values ('This is sample data',3)")
+d.exec("insert into t1 (data,num) values ('More sample data',6)")
+d.exec("insert into t1 (data,num) values ('And a little more',9)")
+
+d.exec("select * from t1 where num = 6", function(results) {
+ testsuite.assert(results.t1key == "2")
+ testsuite.assert(results.data == "More sample data")
+ testsuite.assert(results.num == 6.0)
+})
+
+d.close()
+
+testsuite.checkAsserts(3)
diff --git a/tests/javascript/structs/Makefile.am b/tests/javascript/structs/Makefile.am
new file mode 100644
index 0000000..79fefef
--- /dev/null
+++ b/tests/javascript/structs/Makefile.am
@@ -0,0 +1,21 @@
+EXTRA_DIST = \
+ struct-functions.js \
+ struct-set-member.js \
+ struct-constructor.js \
+ struct-nested-set.js \
+ struct-null.js \
+ struct-union-enumerate.js \
+ struct-enumerate.js \
+ struct-offsets.js \
+ testsuite.js
+
+TESTS = \
+ struct-functions.js \
+ struct-set-member.js \
+ struct-constructor.js \
+ struct-nested-set.js \
+ struct-null.js \
+ struct-union-enumerate.js \
+ struct-enumerate.js \
+ struct-offsets.js
+
diff --git a/tests/javascript/structs/Makefile.in b/tests/javascript/structs/Makefile.in
new file mode 100644
index 0000000..7327410
--- /dev/null
+++ b/tests/javascript/structs/Makefile.in
@@ -0,0 +1,564 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = tests/javascript/structs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CAIRO_MODULE = @BUILD_CAIRO_MODULE@
+BUILD_CANVAS_MODULE = @BUILD_CANVAS_MODULE@
+BUILD_DBUS_MODULE = @BUILD_DBUS_MODULE@
+BUILD_DYNAMICOBJECT_MODULE = @BUILD_DYNAMICOBJECT_MODULE@
+BUILD_EXAMPLE_MODULE = @BUILD_EXAMPLE_MODULE@
+BUILD_FFI_MODULE = @BUILD_FFI_MODULE@
+BUILD_GETTEXT_MODULE = @BUILD_GETTEXT_MODULE@
+BUILD_GTKBUILDER_MODULE = @BUILD_GTKBUILDER_MODULE@
+BUILD_LIBXML_MODULE = @BUILD_LIBXML_MODULE@
+BUILD_MPFR_MODULE = @BUILD_MPFR_MODULE@
+BUILD_MULTIPROCESSING_MODULE = @BUILD_MULTIPROCESSING_MODULE@
+BUILD_OS_MODULE = @BUILD_OS_MODULE@
+BUILD_READLINE_MODULE = @BUILD_READLINE_MODULE@
+BUILD_SQLITE_MODULE = @BUILD_SQLITE_MODULE@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LDFLAGS = @CAIRO_LDFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUSGLIB_CFLAGS = @DBUSGLIB_CFLAGS@
+DBUSGLIB_LDFLAGS = @DBUSGLIB_LDFLAGS@
+DBUSGLIB_LIBS = @DBUSGLIB_LIBS@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LDFLAGS = @DBUS_LDFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LDFLAGS = @FFI_LDFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GDK_CFLAGS = @GDK_CFLAGS@
+GDK_LDFLAGS = @GDK_LDFLAGS@
+GDK_LIBS = @GDK_LIBS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_JS_CFLAGS = @GNOME_JS_CFLAGS@
+GNOME_JS_DIR = @GNOME_JS_DIR@
+GNOME_JS_LIBS = @GNOME_JS_LIBS@
+GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@
+GOBJECT_INTROSPECTION_LDFLAGS = @GOBJECT_INTROSPECTION_LDFLAGS@
+GOBJECT_INTROSPECTION_LIBS = @GOBJECT_INTROSPECTION_LIBS@
+GOBJECT_INTROSPECTION_VERSION = @GOBJECT_INTROSPECTION_VERSION@
+GREP = @GREP@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LDFLAGS = @GTK_LDFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_CFLAGS = @LIBXML_CFLAGS@
+LIBXML_LDFLAGS = @LIBXML_LDFLAGS@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SEED_DEBUG_CFLAGS = @SEED_DEBUG_CFLAGS@
+SEED_GTK_VERSION = @SEED_GTK_VERSION@
+SEED_PROFILE_CFLAGS = @SEED_PROFILE_CFLAGS@
+SEED_PROFILE_LIBS = @SEED_PROFILE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SQLITE_CFLAGS = @SQLITE_CFLAGS@
+SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
+SQLITE_LIBS = @SQLITE_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WEBKIT_CFLAGS = @WEBKIT_CFLAGS@
+WEBKIT_LDFLAGS = @WEBKIT_LDFLAGS@
+WEBKIT_LIBS = @WEBKIT_LIBS@
+WEBKIT_PC = @WEBKIT_PC@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ struct-functions.js \
+ struct-set-member.js \
+ struct-constructor.js \
+ struct-nested-set.js \
+ struct-null.js \
+ struct-union-enumerate.js \
+ struct-enumerate.js \
+ struct-offsets.js \
+ testsuite.js
+
+TESTS = \
+ struct-functions.js \
+ struct-set-member.js \
+ struct-constructor.js \
+ struct-nested-set.js \
+ struct-null.js \
+ struct-union-enumerate.js \
+ struct-enumerate.js \
+ struct-offsets.js
+
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/javascript/structs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/javascript/structs/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
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$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
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS 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-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ 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
+
+
+# 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/tests/javascript/structs/struct-constructor.js b/tests/javascript/structs/struct-constructor.js
new file mode 100755
index 0000000..bff4f09
--- /dev/null
+++ b/tests/javascript/structs/struct-constructor.js
@@ -0,0 +1,10 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gdk = imports.gi.Gdk
+
+c = new Gdk.Color({red: 100})
+testsuite.assert(c.red == 100)
+c = new Gdk.Color({red: 90, blue: 80})
+testsuite.assert(c.red == 90)
+testsuite.assert(c.blue == 80)
diff --git a/tests/javascript/structs/struct-enumerate.js b/tests/javascript/structs/struct-enumerate.js
new file mode 100755
index 0000000..4ddc1c9
--- /dev/null
+++ b/tests/javascript/structs/struct-enumerate.js
@@ -0,0 +1,13 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gdk = imports.gi.Gdk
+
+r = new Gdk.Rectangle()
+for (prop in r)
+{
+ testsuite.assert(prop == "x" || prop == "y" || prop == "width" ||
+ prop == "height" || prop == "intersect" || prop == "union")
+}
+
+testsuite.checkAsserts(6)
diff --git a/tests/javascript/structs/struct-functions.js b/tests/javascript/structs/struct-functions.js
new file mode 100755
index 0000000..31fb769
--- /dev/null
+++ b/tests/javascript/structs/struct-functions.js
@@ -0,0 +1,10 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+GConf = imports.gi.GConf
+
+GConf.init(Seed.argv)
+
+client = GConf.Client.get_default()
+
+testsuite.assert(client != undefined)
diff --git a/tests/javascript/structs/struct-nested-set.js b/tests/javascript/structs/struct-nested-set.js
new file mode 100755
index 0000000..7787fe9
--- /dev/null
+++ b/tests/javascript/structs/struct-nested-set.js
@@ -0,0 +1,17 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gdk = imports.gi.Gdk
+
+e = new Gdk.Event()
+testsuite.assert(e.toString() == "[object seed_union]")
+
+e.type = Gdk.EventType.EXPOSE
+testsuite.assert(Gdk.EventType.EXPOSE == e.type)
+
+r = new Gdk.Rectangle()
+r.x = 300
+e.rectangle = r
+testsuite.assert(e.rectangle.x == 300)
+e.rectangle.x = 400
+testsuite.assert(e.rectangle.x == 400)
diff --git a/tests/javascript/structs/struct-null.js b/tests/javascript/structs/struct-null.js
new file mode 100755
index 0000000..7ffa4dc
--- /dev/null
+++ b/tests/javascript/structs/struct-null.js
@@ -0,0 +1,14 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite;
+Gtk = imports.gi.Gtk;
+
+Gtk.init(Seed.argv);
+
+var iconTheme = Gtk.IconTheme.get_default();
+
+// returns NULL if icon not found
+var iconInfo = iconTheme.lookup_icon("fake icon name", 32);
+
+testsuite.assert(iconInfo === null)
+
diff --git a/tests/javascript/structs/struct-offsets.js b/tests/javascript/structs/struct-offsets.js
new file mode 100755
index 0000000..4c8a8c7
--- /dev/null
+++ b/tests/javascript/structs/struct-offsets.js
@@ -0,0 +1,10 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Pango = imports.gi.Pango
+
+c = new Pango.Color()
+c.red = 17
+
+testsuite.assert(c.red == 17)
+testsuite.assert(c.blue == 0)
diff --git a/tests/javascript/structs/struct-set-member.js b/tests/javascript/structs/struct-set-member.js
new file mode 100755
index 0000000..d6ebb79
--- /dev/null
+++ b/tests/javascript/structs/struct-set-member.js
@@ -0,0 +1,9 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gdk = imports.gi.Gdk
+
+color = new Gdk.Color()
+testsuite.assert(color.red == 0)
+color.red = 200
+testsuite.assert(color.red == 200)
diff --git a/tests/javascript/structs/struct-union-enumerate.js b/tests/javascript/structs/struct-union-enumerate.js
new file mode 100755
index 0000000..81ab3cd
--- /dev/null
+++ b/tests/javascript/structs/struct-union-enumerate.js
@@ -0,0 +1,41 @@
+#!/usr/bin/env seed
+
+// The way this test stood, it didn't make any sense. It still doesn't, but
+// at least now it's not fragile based on Gdk version, and will still be
+// triggered by the only flaw this test has ever caught...
+
+testsuite = imports.testsuite
+Gdk = imports.gi.Gdk
+
+maxindent = 0
+propcount = 0
+
+function enum_structlike(indent, e)
+{
+ if(indent > maxindent)
+ maxindent = indent
+
+ for (prop in e)
+ {
+ propcount++
+
+ try
+ {
+ if (e[prop] && e[prop].toString() &&
+ (e[prop].toString().search("struct") > 0 ||
+ e[prop].toString().search("union") > 0))
+ enum_structlike(indent + 1, e[prop])
+ }
+ catch(e)
+ {
+
+ }
+ }
+}
+
+e = new Gdk.Event()
+
+enum_structlike(0, e)
+
+testsuite.assert(maxindent >= 2)
+testsuite.assert(propcount >= 50)
diff --git a/tests/javascript/structs/testsuite.js b/tests/javascript/structs/testsuite.js
new file mode 100755
index 0000000..a4d845e
--- /dev/null
+++ b/tests/javascript/structs/testsuite.js
@@ -0,0 +1,32 @@
+assertCount = 0
+
+function assert(a, err)
+{
+ assertCount++
+
+ if(!a)
+ {
+ if(err)
+ print("Assertion " + assertCount + " failed: " + err + ".")
+ else
+ print("Assertion " + assertCount + " failed.")
+
+ Seed.quit(assertCount)
+ }
+}
+
+function unreachable(err)
+{
+ if(err)
+ print("Unreachable code reached: " + err.toString() + ".")
+ else
+ print("Unreachable code reached.")
+
+ Seed.quit(1)
+}
+
+function checkAsserts(n)
+{
+ if(assertCount != n)
+ assert(0, "Some assertions failed to run")
+}
diff --git a/tests/javascript/syntax-test-noasserts.js b/tests/javascript/syntax-test-noasserts.js
new file mode 100755
index 0000000..a0e12f1
--- /dev/null
+++ b/tests/javascript/syntax-test-noasserts.js
@@ -0,0 +1 @@
+new = 3
diff --git a/tests/javascript/syntax-test.js b/tests/javascript/syntax-test.js
new file mode 100755
index 0000000..33dae46
--- /dev/null
+++ b/tests/javascript/syntax-test.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+
+try
+{
+ eval("new = 3")
+ testsuite.unreachable()
+}
+catch(e)
+{
+ testsuite.assert(e instanceof SyntaxError)
+}
+
+testsuite.checkAsserts(1)
diff --git a/tests/javascript/testsuite.js b/tests/javascript/testsuite.js
new file mode 100755
index 0000000..a4d845e
--- /dev/null
+++ b/tests/javascript/testsuite.js
@@ -0,0 +1,32 @@
+assertCount = 0
+
+function assert(a, err)
+{
+ assertCount++
+
+ if(!a)
+ {
+ if(err)
+ print("Assertion " + assertCount + " failed: " + err + ".")
+ else
+ print("Assertion " + assertCount + " failed.")
+
+ Seed.quit(assertCount)
+ }
+}
+
+function unreachable(err)
+{
+ if(err)
+ print("Unreachable code reached: " + err.toString() + ".")
+ else
+ print("Unreachable code reached.")
+
+ Seed.quit(1)
+}
+
+function checkAsserts(n)
+{
+ if(assertCount != n)
+ assert(0, "Some assertions failed to run")
+}
diff --git a/tests/javascript/type-conversion.js b/tests/javascript/type-conversion.js
new file mode 100755
index 0000000..3ed7d97
--- /dev/null
+++ b/tests/javascript/type-conversion.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+Gtk = imports.gi.Gtk
+Gtk.init(Seed.argv)
+
+actor = new Gtk.Window()
+
+try
+{
+ actor.accept_focus = 'hello'
+ testsuite.unreachable()
+}
+catch(e)
+{
+ testsuite.assert(e.message = "Can not convert Javascript value to boolean")
+}
+
+try
+{
+ actor.default_width = actor
+ testsuite.unreachable()
+}
+catch(e)
+{
+ testsuite.assert(e.message = "Can not convert Javascript value to int")
+}
+
+testsuite.checkAsserts(2)