[SCM] libmapper/master: Imported Upstream version 0.3~git+20140610

tiago at users.alioth.debian.org tiago at users.alioth.debian.org
Wed Jun 18 00:24:20 UTC 2014


The following commit has been merged in the master branch:
commit c203d3b2427fd7257a897a0debc548e2902310a9
Author: Tiago Bortoletto Vaz <tiago at debian.org>
Date:   Tue Jun 17 19:28:52 2014 -0400

    Imported Upstream version 0.3~git+20140610

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9417cbb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,73 @@
+*.o
+*.class
+*.a
+*.la
+*.lo
+*.so
+*.dylib
+*.dll
+*.pyc
+Makefile.in
+Makefile
+.deps
+.libs
+ChangeLog
+README
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+doc/doxygen-build.stamp
+doc/html/
+doc/latex/
+doc/libmapper.doxyfile
+examples/pwm_example
+examples/py_tk_gui/pwm.py
+examples/py_tk_gui/setup.py
+jni/Mapper/NativeLib.java
+jni/Mapper_Db_Signal.h
+jni/Mapper_Device.h
+jni/Mapper_Device_Signal.h
+jni/libmapper-0.jar
+libmapper-0.2.tar.gz
+libmapper-0.pc
+libmapper.pc
+m4/libtool.m4
+m4/ltoptions.m4
+m4/ltsugar.m4
+m4/ltversion.m4
+m4/lt~obsolete.m4
+src/config.h
+src/config.h.in
+src/stamp-h1
+swig/build/
+swig/installed_files.log
+swig/mapper.py
+swig/mapper_wrap.c
+swig/setup.py
+test/test
+test/testadmin
+test/testdb
+test/testdynamic
+test/testexpression
+test/testinstance
+test/testlinear
+test/testmany
+test/testmonitor
+test/testparams
+test/testparser
+test/testprops
+test/testquery
+test/testrecv
+test/testsend
+test/testvector
+
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 83aefec..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,7863 +0,0 @@
-commit 42a81ef14e302055509f5f37486e5e69bc186619
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:53:37 2013 +0200
-
-    Add libmapper.org to the README.
-
-commit 3e677c29ff8ddf7ec71cf329b3bc682eb7f533aa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:41:08 2013 +0200
-
-    Add the RtAudio readmes to the release tarball.
-
-commit 236896dfc6482afa6886d90e9396b3fe52a27db7
-Merge: cb35a26 708b894
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:33:47 2013 +0200
-
-    Merge remote-tracking branch 'malloch/master'
-
-commit cb35a26a8fea2d5c8f88ca04b29fffadde4912fb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:32:06 2013 +0200
-
-    Keep NEWS in a markdown format.
-
-commit 9e5515ef8f281cccf6bdc9c4620bfada8618b1a3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 11:52:48 2013 +0200
-
-    Add some release notes for upcoming 0.3 release.
-
-commit bc90cbcc9ed8f69e8254f751d183d1db0cee506f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:27:31 2013 +0200
-
-    Update AUTHORS.
-
-commit 9368db55bafe72dfed5c77971ec251554b4e2e8f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:19:42 2013 +0200
-
-    Update to RtAudio 4.0.12.
-
-commit 5cd67e197e076a8c53d3931297bba60a23c5e485
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 12:05:46 2013 +0200
-
-    Globally refer to "instance management events" as just "instance events".
-
-commit 708b8949098ef6920cafa4f9b42c071a9cf76f74
-Merge: deb3021 842430e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 25 22:40:43 2013 -0400
-
-    Merge branch 'doc'
-
-commit deb30219b545c4d493a06b44994a4fd3d741fbf2
-Merge: 58be09b 0092004
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 25 22:40:25 2013 -0400
-
-    Merge branch 'jni'
-
-commit 58be09b3c7d302e31278f8525135df7ef3c00513
-Merge: af20e50 c5b5fd9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 25 22:40:17 2013 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit af20e50f8ff766ec3f92bcce949b5520e47a5ab6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 25 22:39:19 2013 -0400
-
-    Do not send instance updates over network until parent device has a registered name (since the name hash is used as group id). Once the device is registered, replace NULL group id in id maps of instances that have already been locally activated.
-
-commit 761c5473efd7de5dc0c225ef13ffb4529b463cca
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 26 00:10:15 2013 +0200
-
-    Update EXTRA_DIST for tutorials and other documentation.
-
-commit c5b5fd9bbd790c5364e6df731c1da77f1e51705d
-Merge: ca7b2dd 32b680b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 23:38:57 2013 +0200
-
-    Merge branch 'jni'
-
-commit 32b680ba1a4ea8e8c9dfc3baed9852bb9b777977
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 23:33:19 2013 +0200
-
-    JNI: If an instance listener is registered, call instead of signal listener.
-
-commit 485288e8e9dc8e0366b7339026717f17ff39177e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 23:31:40 2013 +0200
-
-    JNI: Processing app, register instance listeners in instance event callback.
-
-commit 958221164691cde35645df7235071381a07a3136
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 23:30:36 2013 +0200
-
-    JNI: Processing app, wait for ready & set the window title to device name.
-
-commit baf42a2867e63811b5982e2b2217a257d9f7fb90
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 23:30:02 2013 +0200
-
-    JNI: Process app, decrease framerate.
-
-commit 00920043dc571745f32ea09c418ebb1f39802585
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 25 16:10:40 2013 -0400
-
-    Use jint for return type.
-
-commit da9e2cfb34769bd88f512be54d4d623960666240
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 18:31:39 2013 +0200
-
-    JNI: Set `genv' before msig_set_instance_data() since it triggers a callback.
-
-commit 38e45e5128029be09e8d227b52d9ddfbdb11b186
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Apr 25 18:31:22 2013 +0200
-
-    JNI: Fix some wrong uses of the `genv' global variable.
-
-commit ca7b2dd8059cf30d58100d1a9d56058702bac223
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 24 10:43:00 2013 -0400
-
-    Parse timetag properties as doubles in device_to_py()
-
-commit 842430e8c8dd5c51358175c01a3218e32117b947
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 24 10:31:28 2013 -0400
-
-    Added missing underscore.
-
-commit 1866e974d1d24210dd0ea5fbdee3181c96a146b7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 24 10:29:34 2013 -0400
-
-    Redraw testmonitor display periodically to view device sync timestamps.
-
-commit a62f69349f16435acfe3646fa77193ea58ece0a8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 24 14:09:45 2013 +0200
-
-    JNI: Create symlinks to the jar and .so from Processing's "code" directory.
-
-commit df5ac192e4d1a27972fef6d8b11fa0a7f1ccbbf9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 24 12:48:04 2013 +0200
-
-    JNI: A basic Processing project to test the JNI instances bindings.
-
-commit c74dcdcabff23c9272d6a27335f854b56e59f1d1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 24 13:29:24 2013 +0200
-
-    JNI: Target Java 1.5, for compatibility with Processing.
-
-commit 578fc369a5284bc5ad6452deb1bf3423bd1a7e72
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 24 00:28:12 2013 +0200
-
-    JNI: Switch to Device.Signal.set/get_instance_callback() instead.
-    
-    user_data is always treated as an InputListener.  User code will have
-    to instantiate an InputListener per instance.
-
-commit cdcf04af7281cf4b7f013b0627d3c23199a4b6a3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 24 00:16:55 2013 +0200
-
-    JNI: Add Device.Signal.instance_data() and set_instance_data().
-
-commit 06baad219e42eb3f6631fa3b8ac8843e61490c99
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:51:01 2013 +0200
-
-    JNI: Add Device.Signal.oldest/newest_active_instance().
-
-commit ea4f97a2dd7e4858670bb450f1da987d500fb706
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:38:58 2013 +0200
-
-    JNI: Add Device.Signal.num_connections().
-
-commit 4905b8fec12492d21d95ec14370a77fdd8c8cc30
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:58:49 2013 +0200
-
-    JNI: Make stealing mode constants static.
-
-commit da64e4ffabf56fb1b92605d18ca42d6c94a8f1c5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:55:13 2013 +0200
-
-    JNI: Add Device.Signal.instance_allocation_mode().
-
-commit 8e14894f93c1e462c3a2ddc5049bae2141b36252
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:32:03 2013 +0200
-
-    JNI: Add Device.Signal.reserve_instances().
-
-commit bd4e69c8cc4c627848a0854d49650803f515124d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:27:27 2013 +0200
-
-    JNI: in test.java, change input signal back to 'f' so onInput gets called.
-
-commit f255a1352b4cdc46106242a8432dad5dd8ab862f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:23:19 2013 +0200
-
-    JNI: Free objects associated with output signals too.
-
-commit 9a6de3e56f1a319711bcdcd522a252bf68a77e81
-Merge: 7fb3c00 3580968
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 23:18:58 2013 +0200
-
-    Merge branch 'master' into jni
-    
-    - Add timetag parameter to instance management callback.
-    - Remove Device.Signal.start_new_instance()
-
-commit 7fb3c00e39f439cb1b2e57c6ebf6ec61293c13ba
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 22:50:28 2013 +0200
-
-    JNI: Fix "unknown signal type" when value=null in input handler.
-
-commit 716987d7d4445064c1ff38b735649fe472eecffb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 22:42:29 2013 +0200
-
-    JNI: remove old set_callback() implementation.
-
-commit ae75b7b6e5801b1d129bc8c93cf78601698de568
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 19:11:52 2013 +0200
-
-    JNI: Create & pass in a TimeTag object during input handler.
-
-commit 5bba883e3a3a1505fe01aa84a74c2cf758e09c30
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 19:10:44 2013 +0200
-
-    JNI: Don't assume value!=0 in input handler.
-
-commit 2fba08aeca3f04b7d38aa89cf60e0aefb638799e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:42:29 2013 +0200
-
-    JNI: Add a check any time Device.Signal gets its mapper_signal pointer.
-
-commit 6c36c7bd090dabf6e86aaf58c98c844ef4168a12
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:36:21 2013 +0200
-
-    JNI: Add a test for the instance callback.
-
-commit 8622a61e3b531cdf9d6a9bdde3e5c25d7cd9a258
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:35:50 2013 +0200
-
-    JNI: rename Device.Signal.set_instance_event_callback() to set_instance_callback().
-
-commit 799db4f106e2d34eea9d4bd2df4c658ecc314217
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:35:16 2013 +0200
-
-    JNI: Fix InstanceEventListener.onEvent method signature lookup.
-
-commit 7bf590e723da68d0b04fd28f3809e36bde03c5cd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:24:07 2013 +0200
-
-    JNI: Ensure memory for output signal object refs are initialized to zero.
-
-commit 65c0a3967235bd31ce41724b56bd9b006e55dcb0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:11:53 2013 +0200
-
-    JNI: Declare instance event type flags static.
-
-commit 70be4b100e4ec63e984e88a4635769d4f46b46df
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 18:06:12 2013 +0200
-
-    JNI: Add Device.Signal.instance_value().
-
-commit 2507e020c937b4a13eca84628fb527cea50dc63b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 17:47:31 2013 +0200
-
-    JNI: Make TimeTag argument to Device.Signal.value() optional.
-
-commit 0d9911f3f70c328d44653e668d65e5c2d1a4a085
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 17:25:24 2013 +0200
-
-    JNI: Add Device.Signal.update_instance() for all data types.
-    
-    Note, as for Device.Signal.update(), we don't include `count'
-    parameter since it can be calculated from the array length and the
-    signal vector length.
-
-commit 2b0187e0f0edc14a950d49cb9df71fb88c0c4be5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 14:43:59 2013 +0200
-
-    JNI: Allow Device.Signal.release_instance() to be called with a default NOW timetag.
-
-commit b41a5a0c1b3c86d39f2d7ec4c8dbe2c78ea7b380
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 23 14:43:16 2013 +0200
-
-    JNI: Fix TimeTag object reference in Device.Signal.release_instance().
-
-commit 1d47d447a72aa8a4f2d2f8a3dc36a4da7bc52c0c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 22:55:43 2013 +0200
-
-    JNI: Add Device.Signal.match_instances().
-
-commit 88ad2d0b0387c8969d48a097750cbd61c67afe53
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 22:41:08 2013 +0200
-
-    JNI: Add several instances-related functions.
-    
-      - Device.Signal.start_new_instance
-      - Device.Signal.release_instance
-      - Device.Signal.num_active_instances
-      - Device.Signal.num_reserved_instances
-      - Device.Signal.active_instance_id
-      - Device.Signal.set_instance_allocation_mode
-
-commit bd60d879b0f50adaebcfebca3dfd224e2f2e16c6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 22:30:36 2013 +0200
-
-    JNI: Add Signal.set_callback().
-
-commit d469e3d96197af0b1bebedd79f8a59daa62a8c52
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 22:13:45 2013 +0200
-
-    JNI: Add Device.Signal.set_instance_event_callback().
-
-commit 33791e9780eabd971569843112115cbec7345904
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 22:01:22 2013 +0200
-
-    JNI: Remove obsolete msig_set_query_callback() stub.
-
-commit 1153b6d16fbccbecd2a571b37a323b0845977077
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 18:13:28 2013 +0200
-
-    JNI: Provide a complete set of arguments to the input handler.
-    
-    Still need to construct a valid TimeTag object however.
-
-commit f06bb8d6d91e8ffeb0259ccc6042040233c0a661
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 17:19:59 2013 +0200
-
-    JNI: Keep a reference to a Signal object for each signal.
-    
-    This is so that the Signal object can be passed to the InputListener
-    as an argument without creating a new one every time it is called.
-    Device.add_input() and add_output() are now completely native.
-
-commit 44e7ab39e2c82d36510e9dfb5d6b03b751ef0c10
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 15:41:43 2013 +0200
-
-    JNI: Rename TimeTag.IMMEDIATE to TimeTag.NOW.
-
-commit 358096853ad12b913e4c9e7c83ae8ca92216f210
-Merge: 5a782eb 5e25080
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 22 13:08:20 2013 +0200
-
-    Merge remote-tracking branch 'malloch/master'
-
-commit 5e25080e76e21a5781109104492c3361de08c63c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 21 15:03:11 2013 -0400
-
-    Use uint32 for device name hashes throughout; added property and functions for storing/retrieving timestamp of last device sync from db_device, can be used to watch for unresponsive/crashed devices.
-
-commit 1b800b33418680f52377bdc118f25d907a07aefe
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 21 08:17:05 2013 -0400
-
-    In testsend program, wait for device to be ready before proceeding.
-
-commit b6275df58b2683055eaaab3e92ac0caba13f99ff
-Merge: 7033bed e392af0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 21 08:07:38 2013 -0400
-
-    Merge remote-tracking branch 'steve/customtransport'
-
-commit 7033beda051ebf95ced18f1d8d290449821acf88
-Merge: 5849511 3afa5e0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 21 08:07:12 2013 -0400
-
-    Merge remote-tracking branch 'steve/customtransport'
-    
-    Conflicts:
-    	src/receiver.c
-    	src/router.c
-    	src/signal.c
-    	src/types_internal.h
-    	test/Makefile.am
-
-commit e392af01668d3084f182b0fa5a1f9671abe20102
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Apr 21 00:52:19 2013 +0200
-
-    Use ioctl to set non-blocking mode.
-    
-    For better cross-platform compatibility.
-
-commit 584951126b881c95352d69aeafcaad6ef60953da
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 20 17:32:06 2013 -0400
-
-    Update testexpression and testqueue to use monitors for creating connections, use blocking mdev_poll() instead of usleep().
-
-commit 1f2fdfaeb231159222c4645e16a1d25b0665541e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 20 17:30:22 2013 -0400
-
-    Start a device server immediately whether or not the device owns inputs signals. This greatly simplifies later use of queries or reversed connections. Also added @srcPort and @destPort properties to links, fixed receiver initialization.
-
-commit 5bb7ab1feaf4cf1913f9ff5f261060d6ce4b721c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 20 17:17:44 2013 -0400
-
-    Do not send empty bundles on input signal update.
-
-commit 3234c6ee0aff31d767493c5685664e19614c4c9d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 20 17:16:42 2013 -0400
-
-    Get file descriptors for destination device.
-
-commit 43b3dfb60d5bec9c950a4f387ee4281d4dbfde19
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 18 11:36:53 2013 -0400
-
-    Call instance management handler on new instance if registered.
-
-commit 8399e1000f738dda79f58959cff41b48cc769dd1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 18 10:32:26 2013 -0400
-
-    Add option timetag argument to swig bindings for instance release and queries.
-
-commit 94d482bf073abfdc4505c4e3243f8abe8481e63d
-Merge: 13cebab 5a782eb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 18:54:40 2013 +0200
-
-    Merge branch 'master' into jni
-    
-    - Removes Signal.msig_get_rate() and replaces it with the signal
-      properties interface.
-
-commit 5a782ebed10ce91296a02e962df0ac03b71bcf39
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 18:39:32 2013 +0200
-
-    Remove pointless msig_get_rate() and use signal props interface instead.
-
-commit 13cebabb9ec3a6959d8d91285d5269323a6dd321
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 17:51:58 2013 +0200
-
-    JNI: Add Signal.set_rate() and Signal.rate().
-
-commit 49f760cebb7caa892ab7201fdfef713f5c86f4b0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 17:41:45 2013 +0200
-
-    JNI: Add optional timetag argument to Signal.query_remotes().
-
-commit 57c6dd56d065d1fdcc61cba428896d2ca584fe6c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 15:29:52 2013 +0200
-
-    JNI: Add support for msig_value().
-    
-    User must call Signal.value() with a valid array of the correct size,
-    and optionally a valid TimeTag object.  The function returns a boolean
-    indicating whether the signal has a value.
-
-commit 7f45588a867881cb9d723fcd65502f46b905fb2c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 15:28:34 2013 +0200
-
-    JNI: Add optional timetag support to Signal.update().
-
-commit d820f071d6943922dee5f57d1541b941827efbcc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 15:23:30 2013 +0200
-
-    JNI: Add an initializer for TimeTag supporting sec/frac pair.
-
-commit 147fc09c701aea51f35a26b2244c335123ab2f07
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 15:20:15 2013 +0200
-
-    Update documentation for msig_update() with regards to timetag value.
-
-commit e640a6f9fb574af11a3442d46fbf0483853ee615
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 17 14:46:27 2013 +0200
-
-    Include the other JNI-generated headers, and fix some detected function prototype problems.
-
-commit ad9147dafeca483b6863de17ef77a62465a6c478
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 16 13:47:19 2013 -0400
-
-    Working on MaxMSP tutorial, replaced ascii art with screenshot links.
-
-commit ec8c19d2183d32227633cbd73566a3086a11ea67
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 16 10:49:27 2013 -0400
-
-    Fixed typo.
-
-commit 69d6d3467af482fd0744522491589e638ebe6210
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 16 10:48:56 2013 -0400
-
-    Added sections on timetags and instances to C tutorial.
-
-commit 232ba96190b6594d4185533e2365e710dd8e37e2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 15 16:59:50 2013 -0400
-
-    Small change to avoid problem in device-less testprops scenario.
-
-commit db92baa28d4c83a25fca948bf73b95ff1c697f94
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 15 16:59:14 2013 -0400
-
-    When freeing device: first release instances, then routers/receivers, to avoid illegal memory access problems and segfaults in swig bindings.
-
-commit 3a39645bb492f52594debed95ab47caa1a682147
-Merge: a597d46 6d75225
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 15 12:45:55 2013 -0400
-
-    Merge branch 'instances4'
-    
-    Conflicts:
-    	src/router.c
-
-commit a597d460b5e32b303b103b5eb2a452be0ae553d2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 14 19:27:18 2013 -0400
-
-    Clean up signal update functions, add optional timetag to signal instance update.
-
-commit 0df8ede7d04dc337d75bfa3079317de1d4134631
-Merge: e04af5e 88eaef6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 14 12:20:42 2013 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit e04af5ee8ae5866ccdaadc7de9cf3f17ffb58d5c
-Merge: a1cd894 2f6e2fd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 14 12:12:15 2013 -0400
-
-    Merge branch 'master' into refactor-clipping
-
-commit cfe1ceb24bcee041c5caeb8704eae70fe0742cd4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Apr 14 14:26:42 2013 +0200
-
-    Add some missing mdev calls to JNI bindings.
-    
-    The following functions were added:
-    
-    - mdev_num_links_in
-    - mdev_num_links_out
-    - mdev_num_connections_in
-    - mdev_num_connections_out
-    - mdev_id
-    - mdev_start_queue
-    - mdev_send_queue
-    
-    A rudimentary, non-functional TimeTag.java class has been added for
-    the last two functions, but needs work.
-
-commit 88eaef613eb3b278d32a72ef525ffa9555614cb9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Apr 14 14:01:18 2013 +0200
-
-    Add support for use of select() or poll() for waiting on multiple devices.
-
-commit 2f6e2fd7f113478e39962b56d0b36e99f30e0557
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 13 14:25:23 2013 -0400
-
-    Remove db callbacks when freeing monitor -- also fixes segfault on monitor destructor in Python bindings.
-
-commit 9a51813765259e1544046201176da77fd17e07e3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Apr 13 13:20:06 2013 +0200
-
-    Change bug report email address to the mailing list, add http:// to URL.
-
-commit 6d752257950177c01c3ff4290f2e32494a0d5af4
-Merge: 28ba2ac 6c427ba
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 12 20:27:23 2013 -0400
-
-    Merge branch 'master' into instances4
-    
-    Conflicts:
-    	src/device.c
-    	src/receiver.c
-
-commit a1cd894a1ed08296493d057f711bd40f5fc4bea6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 12 19:51:06 2013 -0400
-
-    Refactor test programs.
-
-commit 4ec2317339c834dcf92e0f4b7f1ca72d25e4f43e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 12 19:17:40 2013 -0400
-
-    Refactor clipping -> boundary for swig bindings
-
-commit 87da2117ff0f75d9e6a64e481d68f4e132593c1b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 12 19:06:04 2013 -0400
-
-    Refactoring clip/clipping -> boundary
-
-commit 6c427ba48c8e5badf6748d52cc947124e719afea
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 12 12:14:23 2013 -0400
-
-    Added @libVersion to device properties, value is generated by autoconf and git.
-
-commit ec3f34a1ee6d68d256537677a2f81b1253723a4c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 11 20:44:05 2013 -0400
-
-    Fixed erroneous length for devdb_table and condb_table.
-
-commit 82ec0ff22b1ce1eb811f67e57a8d71f2d3d49464
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 11 20:38:29 2013 -0400
-
-    Remove processing of obsolete n_connections property.
-
-commit 4500412019f40bf7e58e50e21449a742c1c5d4d2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 11 10:33:38 2013 -0400
-
-    Fix monitor batch request bug resulting from protocol change in commit c7cf756.
-
-commit c9cd40ff69b8cd06220af23939f2404036d5a02c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 10 12:38:58 2013 -0400
-
-    Use real timetags for all messages; disable libmapper clock offset updates for now.
-
-commit f2d04ee537f174a8978dcd765d2e2ccd7c498352
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 10 11:01:19 2013 -0400
-
-    More memory leak fixes - Valgrind now reports 0 bytes lost when running test.c
-
-commit 9346496ce1242dea1d175a9ad6aa9405cb923863
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 9 22:03:22 2013 -0400
-
-    Reduced memory leaks by approx 1KB according to Valgrind.
-
-commit e7c48bcfcedaf02f112562d1b074156885eef1cf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 9 22:01:43 2013 -0400
-
-    Rename mapper_db_remove_device() to mapper_db_remove_device_by_name() to match API.
-
-commit 9d754006e181ca95f3d52e0a6e313c945a36c80c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 9 18:22:06 2013 -0400
-
-    Fixed illegal memory access bug.
-
-commit ddeb221d993b6c208e7958e0f88f8aeeb4decda7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 9 18:21:33 2013 -0400
-
-    Fixed bug freeing routers and receivers.
-
-commit c0da70ff98e36d83bade69ea8e5aabaedd326519
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 9 17:38:09 2013 -0400
-
-    Free unused connection and link_signal memory.
-
-commit 3afa5e01eb1801fa865935218009e4cc0d9e35cd
-Merge: 539740d 58a3684
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 9 13:18:49 2013 +0200
-
-    Merge branch 'connectcb' into customtransport
-
-commit 58a3684c769189d9f10b424c3f3734dd9d7c246d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 8 12:38:20 2013 -0400
-
-    Refactoring callback names.
-
-commit df1487362db7f693ccc64911c649d5e144b797a3
-Merge: e5e8faf 873504c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 8 12:30:08 2013 -0400
-
-    Merge branch 'master' into connectcb
-
-commit 873504ca68d493ef8c347875bd6878ca7d39a837
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Apr 8 12:29:47 2013 -0400
-
-    Refactoring callback names.
-
-commit 539740db62d44ed9e45c9af7ce667475562d582b
-Merge: c192e71 e5e8faf
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 8 16:15:37 2013 +0200
-
-    Merge branch 'connectcb' into customtransport
-
-commit c192e717b0490fe37be99eddaca477c99dc63718
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 28 13:08:14 2013 -0400
-
-    Implement a custom transport mediated by signal/connection properties.
-    
-    On connection, this program establishes a TCP connection during the
-    connection callback and uses it instead of msig_update().
-    
-    Therefore, in this case libmapper is used only to determine the
-    destination IP and to establish the connection, but it performs no
-    data transformation or transmission.  Rather, the program specifies
-    this itself, determined by specifying a custom transport in the signal
-    properties which are copied to the /connectTo message.
-
-commit e5e8faffdd8680d9f9f04b220bd146a995e64451
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 18:46:10 2013 -0400
-
-    Add local device name to device-stored link properties since we are now using link props in callbacks.
-
-commit eaccdac2ccf1c80cb9806e34f6198f2d979c7656
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 17:35:44 2013 -0400
-
-    Always add destination type and length to /connectTo message.
-
-commit 6d5145069a59fc68a603ddb538dc45bbedfbe4dc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 15:01:48 2013 -0400
-
-    Added function for getting the number of connections attached to a specific signal.
-
-commit 058b999c331a6ccc27c0e5c36a9b10b358ffd86f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 15:01:06 2013 -0400
-
-    Call link/connection callbacks for inputs (receivers) also.
-
-commit c11155bb49145dc2cd8acc39201ec48665bbbc4a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 14:59:14 2013 -0400
-
-    Added user_data argument to device-side link/connection callbacks; added signal pointer to connection callback.
-
-commit b04cc8303e0102c5c374b37c3afc41a65e16f195
-Merge: 6097733 1c66a5b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Apr 7 09:04:28 2013 -0400
-
-    Merge branch 'master' into connectcb
-
-commit 1c66a5bfadc2804d99ae4f17f11ba156beb7af4c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Apr 6 20:03:38 2013 -0400
-
-    Added monitor function for getting properties for a specific device.
-
-commit a9753c5cd4eef62ff7a3ba0d67d876ba48ded0ec
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 5 21:51:13 2013 -0400
-
-    Update python bindings with monitor API changes.
-
-commit 578c50195a67b637c7ef665f714ca77fadc5c224
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 5 21:50:36 2013 -0400
-
-    Clarify monitor request function names, add functions for requesting only input or only output signals, or only incoming or only outgaing links or connections.
-
-commit 28ba2aceb708851be6e3e7d51bb3959ceb9093f4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 4 12:41:19 2013 -0400
-
-    Don't check id map until needed.
-
-commit 6097733db056f4feff66c13ce1a90f48b9a2ca49
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 28 13:06:46 2013 -0400
-
-    Add callbacks to the local device when links or connections are made or destroyed.
-    
-    Had to move the definition of struct _mapper_device to
-    mapper_internal.h in order to make reference to function typedefs from
-    mapper.h.
-
-commit abd96cc320c3461a035d375e99d863c4261435ff
-Merge: 499165e 1957f00
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 28 11:54:52 2013 -0400
-
-    Merge branch 'swig2'
-    
-    Conflicts:
-    	src/table.c
-
-commit 25f917a939ed2d533ee78b31b2951228cde8c96a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Mar 16 18:33:20 2013 -0400
-
-    Debugging instance id_map synchronization with multiple mapped signals and remote releases.
-
-commit 34dc6c17eb4118677b4e2b3a56d86365a28fae70
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Mar 9 08:15:17 2013 -0500
-
-    Fixed bugs in instance id_map reference counting.
-
-commit 005cbf794dad1c6f7e3bd5610d6be0f0802cc76e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 5 20:07:48 2013 -0500
-
-    Fixed bug where new  instance could be activated by downstream release request.
-
-commit a334f7763ecf266beec904073506c23baa63d5ef
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 5 20:06:36 2013 -0500
-
-    Corrected remote instance release request message format.
-
-commit 4490ef0db055d7132f58e928f4e59c986db305c9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 5 20:05:46 2013 -0500
-
-    Use incrementing public instance ids.
-
-commit 3a2c16b0cb6bd9b51f25dfe8eee0e467a64a696d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Mar 2 20:41:07 2013 -0500
-
-    Release active instances when signal is freed.
-
-commit 1d44c0799be325ca4e5e6c01c62625c70cb7df6f
-Merge: e39f304 499165e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 1 18:43:06 2013 -0500
-
-    Merge branch 'master' into instances4
-
-commit 499165e472402d2eecd972c35951ca3c47cbb5d0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 1 14:29:57 2013 -0500
-
-    Moved tutorials to own folder in /doc, added versions for python and maxmsp.
-
-commit fe1463bd2c80a9b2c08b63b71058eba0cfeee572
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 1 14:28:19 2013 -0500
-
-    Fixed function documentation for msig_update(); fixed some formatting, etc.
-
-commit 32abaabe0bf169ed5646ebd01b262d9bb5850f7c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 1 13:46:45 2013 -0500
-
-    Use doubles for timetags in Python bindings.
-
-commit 1b788d1915ca575e723585a2527e34574ab6dc27
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 1 12:38:18 2013 -0500
-
-    Fixed error in function documentation.
-
-commit e39f304e2faf8ad22031d7e6a41c87a6b981851a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 28 22:30:49 2013 -0500
-
-    Fix send_as_instance property on new connections.
-
-commit 63fbf67bb2e8bb068c4c84b2e25ff1cc7af97ca2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 25 10:07:43 2013 -0500
-
-    Added function for getting signal allocation mode.
-
-commit 82c6bea25de50ec48ea2e93c41ba098248e650e3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Feb 20 18:02:26 2013 -0500
-
-    Remove bitflags for obsolete instance properties.
-
-commit 1a6bb3fc845079d20ce025fbb96a980a431e938c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 19 22:05:09 2013 -0500
-
-    Fixed segfault when removing connections.
-
-commit 8f99d3e400d7263ff5d70cb621555357e781a685
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 19 22:04:36 2013 -0500
-
-    Use maps with zero remote refcount (might be new map)).
-
-commit 6e37ef456f871804069aaa60a87d11ee3c111681
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 19 22:03:18 2013 -0500
-
-    Connections should default to using instances if either endpoint signal has multiple instances.
-
-commit d205632469d7959b57f3237fa220b5a63b33cd05
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 19 22:02:10 2013 -0500
-
-    Use real timetags throughout; added timetag argument to instance_get functions in case instance stealing results.
-
-commit 8ca7d8689cfea01c306e118db9f326a89b5880f3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 15 14:56:34 2013 -0500
-
-    Adding signal.update() functions with timetag arguments.
-
-commit 385b67ea7aff8314e29640acd0c1efb3493b151f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 15 14:55:37 2013 -0500
-
-    Cleaning up timetag and clock functions.
-
-commit 581f264186fcc8e227a610a80a5501d7525c4909
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 14 14:36:20 2013 -0500
-
-    Added timetag to instance management handler parameters (Python bindings).
-
-commit 8beffe4dfeadd8b27e8f0b2b092e057801ec56f5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 14 14:35:48 2013 -0500
-
-    Added timetag to instance management handler parameters.
-
-commit 258e7532e4ce679f00e47afc36946db328374368
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 14 14:19:33 2013 -0500
-
-    Call instance management handler (if defined) when upstream release messages are processed by the instance handler.
-
-commit 3abed09772766335cbbc1086fbac0dab62d4e804
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Feb 13 17:59:57 2013 -0500
-
-    Fixed email address in AUTHORS.
-
-commit dcd8855c55c00d521d6195839e61a37d241d54e2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Feb 13 16:46:54 2013 -0500
-
-    Add instance management callback to python bindings.
-
-commit af727081f88ca4537485c69d5151825d72a6ce67
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 11 16:57:00 2013 -0500
-
-    Use automatic instance stealing, but keep explicit user-code release of receiver-side instances. Instance management handler registered with the IN_OVERFLOW flag will take precedence over instance allocation mode.
-
-commit 991deb03baf98dbff9acab22cccc3351bd005953
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Feb 9 11:23:24 2013 -0500
-
-    Free link_signals if corresponding input/output signal has been removed from device.
-
-commit 5d81b681a6e7b5bd7ba29a8b55048f9904a5ad79
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 8 21:10:54 2013 -0500
-
-    Revert to freeing signals first in mdev_free, but make sure not to reference freed signal when freeing connections.
-
-commit 1d84a940cf28cb9395f3b9bea8b3c4486a06b34b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 8 20:32:51 2013 -0500
-
-    Fixed flag arguments calling msig_get_instance_with_local_id(), leaning up TODOs.
-
-commit 4b6951096ec69005163882d3d00f129f63881208
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 8 19:42:08 2013 -0500
-
-    Renamed instance id record to index to better reflect its usage; fixed potential overflow bug in msig_reserve_instances().
-
-commit 683267366fbdbc1d9e01447debe458fbd71007fd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Feb 3 18:28:29 2013 -0500
-
-    Fixed bugs setting id_map release flags, memory freeing when freeing device, pointer bug.
-
-commit 50d6dd1165b2c396f09a9278dbee89d3bd68d648
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 1 10:15:15 2013 -0500
-
-    Fixed typos and signal handler arguments in tutorial.
-
-commit ef75d69b7b4421f24c93a5d9f2359e8da741fd33
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jan 31 22:39:13 2013 -0500
-
-    Update testinstance for new instance management approach.
-
-commit 9719ecf4553384d9563ed6ce7be6d37584be3909
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jan 30 22:50:14 2013 -0500
-
-    Removed functions for declaring new instances and for setting instance stealing logic, added functions for user-code to discover oldest or newest active instance. Fixed various bugs in new signal-side id_map scheme, though tracking map status is still buggy.
-
-commit 047f23b457c4b898fbeba1283736b1e279ae39d1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jan 26 21:12:08 2013 -0500
-
-    Reworking handling of active instances to enable unsynchronized instance lifetimes.
-
-commit c5e9982b4d3e2788a7063f9caf08e33bdcd45739
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jan 22 14:28:14 2013 -0500
-
-    Added new db functions to DLL export list, realphabetized.
-
-commit a49f65401ce181a3ce9ec7ffde642d3a62067cbd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jan 21 14:40:51 2013 -0500
-
-    Free memory used by mapper_connection
-
-commit 324d6d1e041af32ecf479cc675db5478fe2f4016
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jan 21 13:44:25 2013 -0500
-
-    Added missing db functions to python bindings.
-
-commit 6ced24176ea72f7b5e0fbe02151b3ecc57d517cb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jan 20 16:29:11 2013 -0500
-
-    Restore testmonitor screen clearing.
-
-commit 797f1584d480bffcadb30f1b7dc784ff032ba8b0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jan 20 16:28:26 2013 -0500
-
-    Modified db update functions to return the number of parameters added or modified. Use this information to only call handlers with MDB_MODIFY if params have actually changed.
-
-commit dbc32d51b54fdd8272dedc2089c9063892432769
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jan 20 14:23:38 2013 -0500
-
-    Added db functions for retrieving exact signals from database; restored substring-matching to cmp_match_signal_device_name().
-
-commit c53f3b4f3639e0626764f9f024d05f72d30ecf96
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jan 20 13:34:03 2013 -0500
-
-    Fixed bug in signal history reallocation; initialize to zero.
-
-commit 16be7a4aef14f6eee5ebdfc2929343dbb0cec5d5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 18 16:06:32 2013 -0500
-
-    Added benchmark for expression engine.
-
-commit 57eab4814be6b2362ec9acbf9326cc1c4ef6d735
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jan 17 09:28:22 2013 -0500
-
-    Use strcmp() instead of strstr() when trying to match signal names in monitor - this was preventing monitors from registerings new signals if their name was a substring of an existing signal.
-
-commit 467f24a920f543b15db598b9e23445be3cd5703a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jan 1 13:18:46 2013 -0500
-
-    If input signal is released locally, send release request upstream but do not release instance.
-
-commit 6e0ccd3edca78b4604af784eca0e5bd3371f8203
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 26 13:11:19 2012 -0500
-
-    Revision of instance release/release_request logic: devices must pass release messages downstream regardless of whether they are the originating device/instance owner. Release request messages will only be used when sending to instance originator.
-
-commit d0ff32eb0cbd60f15bebaf0c87541fcdd36f18fb
-Merge: 91cb68f 9390417
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Dec 22 17:21:33 2012 -0500
-
-    Merge remote-tracking branch 'steve/master'
-
-commit 91cb68f7c8f6c0b9f7a1be988e4efa156b8cc561
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 19 17:59:25 2012 -0500
-
-    Renamed MAPPER_TIMETAG_NOW to MAPPER_NOW; also redefined it internally as {0L,1L} to avoid accidental usage - this does not imply anything about immediate dispatch however, since there is no concept of TT_IMMEDIATE in libmapper and all bundles will have real timetags.
-
-commit 9390417bffcf327406ea07574073286b49de395d
-Author: Stephen Sinclair <stephen at momentfactory.com>
-Date:   Tue Dec 18 14:12:39 2012 -0500
-
-    Add msig_set_instance_management_callback() to DLL export list.
-
-commit 30d202c1d46390e91c73943e0e312cd7809b137c
-Author: Stephen Sinclair <stephen at momentfactory.com>
-Date:   Mon Nov 19 10:19:33 2012 -0500
-
-    Add instance-related functions to Windows DLL exports.
-
-commit 408515d76ede4739be229a4e300dab39d3466a84
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Dec 17 21:49:28 2012 -0500
-
-    Split bundles of reported signals or connections into multiples of 20 messages to prevent bundle from growing too large.
-
-commit 353eb97d4f5a883e0876903d2438ebe6d0127d32
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Dec 11 21:40:50 2012 -0500
-
-    Use bulleted lists.
-
-commit 91164b2074b1ea9914ca1171fd8493a08c2c6a3e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Dec 11 21:31:58 2012 -0500
-
-    Added expression syntax description to documentation.
-
-commit f9dcccb09fc19c2b21be800545ec7b377d9b4e44
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 7 13:02:47 2012 -0500
-
-    Print incoming message as vector in testrate.
-
-commit c7cf756274414f2f4bfbc7c230bddfb5d2d6e944
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 7 12:56:33 2012 -0500
-
-    Track incoming and outgoing links and connections separately.
-
-commit 914399e490e981f1935a3fd0d301a0150634aaff
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 7 12:12:37 2012 -0500
-
-    Fix bug setting default connection @sendAsInstance property.
-
-commit de7b13aee762e64ba13f336bde0ae0212ac75693
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Dec 6 13:41:19 2012 -0500
-
-    Protocol change: adding handlers for /<device>/links/in/get, /<device>/links/out/get, /<device>/connections/in/get, /<device>/connections/out/get.
-
-commit 9e4cab6b84983776d58d4a8649ea4cc14d7843b8
-Merge: ecaf88b 7c013bc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Dec 6 11:58:02 2012 -0500
-
-    Merge branch 'master' into receivers
-    
-    Conflicts:
-    	src/router.c
-    	src/signal.c
-
-commit 7c013bc37748deff561c6302c71038491caf2f8f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 5 18:28:48 2012 -0500
-
-    Use uint32_t for incrementing network instance IDs since that is how they are sent.
-
-commit df57b1fd4c6e269bbb2cf446138c6c110caaaf87
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 5 17:44:41 2012 -0500
-
-    Check for functions exp() and exp2() in expression parser - these were being treated as malformed exponential notation since they start with an e.
-
-commit 2e370fb67bc7e76dbb2095deaddfdeeda933806a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 5 17:36:55 2012 -0500
-
-    Allow positive exponential notation.
-
-commit c5b8479773fb9024bf40faa4b61611b1b1aa830e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Dec 4 12:27:04 2012 -0500
-
-    Added property @sendAsInstance to connections. This allows over-riding default instance behaviour, e.g. choosing whether a single-instance signal should update all active instances at the destination or should be treated as a unique instance.
-
-commit ecaf88b970bd21beaf27ab7c36332d47fdca093d
-Merge: 1cacb56 db70a09
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Dec 1 12:03:31 2012 -0500
-
-    Merge branch 'master' into receivers
-
-commit 1cacb563d7e753293fce8fbf5ef3f56dc329ebd8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Nov 30 18:33:00 2012 -0500
-
-    Restored query functionality in java bindings.
-
-commit 2d58d2007cdda17188cdf46710fd20198eeec8b3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Nov 30 18:26:56 2012 -0500
-
-    Restored query functionality in swig/python bindings.
-
-commit 6838219c9bfa4a0d5999fe545991e8a33b7b005a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Nov 30 16:13:55 2012 -0500
-
-    Re-added query functionality while keeping reverse connections; re-added testquery.c; alphabetized test program names in makefile.
-
-commit 1957f00b88d9a1196137563160783ec239c1e127
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 21 17:23:49 2012 -0500
-
-    swig: Change naming of extended struct to comply with how SWIG 2.x handles structs.
-
-commit 7a825602b9687a65d90e4c37d68360567ff46cc4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 21 17:13:13 2012 -0500
-
-    swig bindings: Remove extra scope around temporary sigval.
-    
-    In SWIG 2.x, (and maybe 1.3?) this extra level of scope causes the
-    sigval to be destroyed even though a pointer to it is retained and
-    used shortly after, causing a crash.
-
-commit b2853039aca8ba663ee4a203d9037642a836406c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 21 16:47:15 2012 -0500
-
-    Replace a use of strcpy with memcpy, fixing a crash due to inlining.
-    
-    On Linux, a use of strcpy caused a crash for unknown reasons when
-    inlined by -O2, but memcpy does not crash in the same place.
-
-commit db70a09b2353296b9810b86b190c2fc93a8da6a4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 15 20:02:16 2012 -0500
-
-    Add a function to get access to a device's underlying lo_server.
-
-commit 7420e1a0218ecf3e597e63f12f6901c08c92bc56
-Author: Stephen Sinclair <stephen at momentfactory.com>
-Date:   Tue Nov 13 14:32:43 2012 -0500
-
-    Update list of DLL-exported functions for Windows build.
-
-commit 6a89e440c6cbc60a4e581dd93fbf0821ce020214
-Merge: e9d3558 396e8e5
-Author: Stephen Sinclair <stephen at momentfactory.com>
-Date:   Tue Nov 13 14:43:11 2012 -0500
-
-    Merge remote-tracking branch 'malloch/master'
-
-commit 396e8e55896faf3f0607b126c847d9a04db7faa8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 13 11:06:59 2012 -0500
-
-    Fixed typo in function name.
-
-commit f3159b1eab85f9da1a3ae5d4b26bc6447e49823d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Nov 10 20:29:04 2012 -0500
-
-    jni bindings for reverse-connections (untested).
-
-commit afdf36fd945624620148761e1bea4a04386b8af8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Nov 10 20:09:31 2012 -0500
-
-    Swig/Python bindings for reverse-connections.
-
-commit 57bd87a073e571472be69b0b1e3aa227e3beb323
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Nov 10 19:45:47 2012 -0500
-
-    Implementation of reverse-connections for transporting remote updates of connected input signals. This technique is meant to replace the previous query-response method for acquiring state of remote inputs used for supervised implicit mapping approaches. To make it clear that reverse connections are transporting destination (input signal) _state_ rather than inverting the mapping connection, reverse connections are accessed as a connection mode and thus cannot be used at the same time as e.g. linear scaling or expressions. Replaced testquery program with testreverse.
-
-commit e9d35580b84d8ee58777ec4ad498cbe16ed7f7f8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 8 11:50:27 2012 -0500
-
-    Revert "Changes for compatibility with swig 2.x"
-    
-    This reverts commit e6929d24f73dfdf810dee45a308b70ba2d706209.
-    
-    Although the fix for SWIG 2.x made the project compile successfully,
-    it did not function, complaining about problems with constructors and
-    destructors.  More work is needed to support SWIG 2.x.
-
-commit 45400e6089050319ddef73d9fd4cc1eeecc19d90
-Merge: af80a53 5dc1aea
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 8 09:21:35 2012 -0500
-
-    Merge remote-tracking branch 'malloch/master'
-
-commit ef179ed04e680b5e3a57b9f92390d8430843aab1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Nov 7 19:02:37 2012 -0500
-
-    Re-allow instance management callbacks for input signals, update testinstance.
-
-commit 964c69b23ab81e061689784934f3cd76c385152b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 30 22:36:45 2012 -0400
-
-    Properly register release request handlers; use lo_send_message_from() for sending /linked message since the receiver needs to know sender's IP and port.
-
-commit 5dc1aeaef6278c650787d58fcf857561065ebf3d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 30 13:45:57 2012 -0400
-
-    Add new metadata from repeated linkTo messages; use monitor to create links and connections in test.c
-
-commit c35430d3576bf881ec3a1965bf7a6a5fa589ba4f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 30 13:36:03 2012 -0400
-
-    Remove obsolete function mdev_send_signal().
-
-commit 3649eae279e80660f73853903e98fea69648544d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 30 13:34:06 2012 -0400
-
-    Added remote instance release request functionality: when an instance of an input signal is released locally (with a call to msig_release_instance), a release request message is sent to all upstream connected signal belonging to a link scoped for the instance. Output signals can optionally register an instance_management_handler (as before) but now a third argument specifies the type of events to call the handler for.
-
-commit 76a9ec705fac6568d6561ec3f591a71d103fcd23
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 28 20:12:55 2012 -0400
-
-    Properly release orphaned instances on unlink or disconnect; added scopes to receiver structure.
-
-commit 66b95d9234fff332c594e01952e0130616d1c54b
-Merge: d9909a8 265bcb5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 28 17:22:52 2012 -0400
-
-    Merge branch 'master' into receivers
-    
-    Conflicts:
-    	src/types_internal.h
-
-commit 265bcb57c871418c87a11ea3f9bab37be3a0cf2f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 28 16:51:39 2012 -0400
-
-    Fix for problem with out-of-order packets and instance releases: id maps are not removed until reference count is 0 AND a timeout from last relevant remote release message has been received. During this timeout period remote messages matching the id map will not be processed.
-
-commit d9909a8afde911b352a5edf3b85be56e770bcdb0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 26 20:01:46 2012 -0400
-
-    Finished basic integration of mapper_receiver data structure and functionality, including release of remotely-owned instances on scope removal or unlink. Also streamlined freeing of router structures.
-
-commit 267f5cb132ea3e82bf57b2bbc84a9afaf4f85925
-Merge: 01b4231 219b82e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 25 15:15:47 2012 -0400
-
-    Merge branch 'master' into merge
-    
-    Conflicts:
-    	src/admin.c
-
-commit 01b42319aeea3a48ef3a6944338e8f14101f786d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 25 15:12:03 2012 -0400
-
-    Added receiver functions.
-
-commit 219b82e0ef0035ad26502aac064c2f359c8307ff
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 25 15:01:37 2012 -0400
-
-    Update ID map reference count when calling msig_match_instances().
-
-commit 0fe5e9cd00c91651ee75a5dbac93b96bbba32b99
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 25 10:51:14 2012 -0400
-
-    Do not remove unscoped links.
-
-commit af80a53afaf221cc5027f4496aaaa5fc9ad1ed2b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 24 22:23:54 2012 -0400
-
-    Add a check for lo_bundle_count() to build against older versions of liblo.
-
-commit 58bdec7adc9807718c3b1186fa263ffdf0ca780b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 24 20:07:18 2012 -0400
-
-    Added receiver data structure, which sits at the destination of a link and mirrors the router at the sending side. For now this object is intended for holding metadata on the link source and connections, information which is needed for sending remote instance release requests. In the future the receiver object could also help recover mapping state after a source crash, and may have an active role in processing datastreams and combining many-to-one connections.
-
-commit b95ce883627c98837278824298d11ac60c091069
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 23 17:03:50 2012 -0400
-
-    Do not send empty bundles.
-
-commit f1081b3ab4f7cc54d3683f0f2034e1b3eb7d2390
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 22 22:38:57 2012 -0400
-
-    Bundle query responses and return with timestamp from query message.
-
-commit 12aa9dded1027ffa60fcd0c5a52808dc26d2bbf0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 22 17:54:59 2012 -0400
-
-    Send batch-requested signals and connections in OSC bundles.
-
-commit dd7033301f74f957d15c72257c16514765c919a9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 22 17:39:22 2012 -0400
-
-    Fixed monitor bug for autorequesting large numbers of signals or connections - since e62872b @ID has not been an extra parameter, so the functions on_signal_continue_batch_request() and on_connection_continue_batch_request() could not retrieve IDs.
-
-commit bc2491cce756d582e18d6b7a04ae3c604ec4f29b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 18 14:18:48 2012 -0400
-
-    Disable liblo message queueing on admin and signal update servers; use timetagged bundle to transport /sync messages instead of including timetag in message; use double instead of float to represent elapsed time in /sync message.
-
-commit 86ab6764012d37a1103591028275eba53b548655
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 18 11:36:47 2012 -0400
-
-    Renamed flags for filtering admin output (avoiding multiple responses per polling-step).
-
-commit 1ee500b1036984b85fe2a6e8e78e3b820ebdf847
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 18 09:18:17 2012 -0400
-
-    Cleaning up documentation in header files.
-
-commit ce0bd4e15d44d8546c6f8b1ff4c3e9f29cba935d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 17 16:08:04 2012 -0400
-
-    Moved #include <assert.h> from signal.c to params.c - it is used by a function moved in an earlier commit.
-
-commit 1d911b5123db14f972ab76b1e875b80085a9dc32
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 16 18:54:56 2012 -0400
-
-    Send bundles with timetag LO_TT_IMMEDIATE for now while debugging.
-
-commit b9de307b429b42b13220b44da46c510ac08c99f7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 16 17:16:24 2012 -0400
-
-    remove check for instance; don't calculate tt if adding 0.
-
-commit f1d87d3b895772ea98e04017ec3cb2f30ffe8de6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 16 10:39:52 2012 -0400
-
-    pwm_example: Check if signal has value in signal callback.
-
-commit 7ccc12af9918faafbc4367c98baa4149d3276bce
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 14 09:20:12 2012 -0400
-
-    Pass local index ids to signal callback in non-instance handler; check for device in timetag/queue funcitons.
-
-commit c75d48012df1f9126f5e5daf72507ee1160d919b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 19:35:42 2012 -0400
-
-    Fixed bug in signal handler.
-
-commit 81a7cee76bae291f3e8e7e2f1b03b0f607c5a55f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 18:24:13 2012 -0400
-
-    Modified examples to match new API changes.
-
-commit d61b7c7b761d8c926c6f2567f76f8667c0c0497a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 18:23:50 2012 -0400
-
-    Modified java bindings to match new API changes.
-
-commit 41d610aef4844b9edb63446b3d91a52aa70e126f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 16:33:09 2012 -0400
-
-    Modified python bindings to match new API changes.
-
-commit 242afe9146ae8bf470b310d445779ede074c26d5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 16:05:02 2012 -0400
-
-    Fixed typo in function name.
-
-commit 6665999dd8f6141130ba9b714353f22efe04ab29
-Merge: 6ca1f3c 0c4bafe
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 13 14:41:48 2012 -0400
-
-    Merge branch 'master' into refactor-instances
-    
-    Conflicts:
-    	include/mapper/mapper.h
-
-commit 6ca1f3c38cc15b35121738f0fed7a471e20f08b7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 12 13:29:31 2012 -0400
-
-    Update all active instances on receipt of non-instance update.
-
-commit fe52be244bfb86f729ef4675a555eaf5e7fc3349
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 11 17:02:48 2012 -0400
-
-    Use OSC blobs to send vector updates - this avoids type-string confusion between instance and non-instance messages, as well as avoiding inclusion of ridiculously long type-strings with large vector updates (libmapper vectors are homogenous anyway...). This required adding a count variable to the signal callback, while I was changing API anyway I also adapted msig_update and handlers to be more alike.
-
-commit 5ef6d86fdeeecd102f958e663dea55cd8d8432f1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 11 10:46:28 2012 -0400
-
-    Iterate over vector value updates as necessary - testrate now behaves correctly.
-
-commit a7ac3784c7453d32e56d45cbc7693a666f023007
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 10 21:06:01 2012 -0400
-
-    Fixed allocation and freeing of instance signal histories in router data structures; moved n_connections records to ratour also.
-
-commit b154465e10dcd9cfd3ce0d82eac2b1b8af523b7b
-Merge: 0bc33e2 3022a42
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 10 17:04:54 2012 -0400
-
-    Merge branch 'global-sync' into refactor-instances
-    
-    Conflicts:
-    	src/device.c
-
-commit 0bc33e23c744fc6c54d41a5b6c0d7241d99af7be
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 10 16:49:47 2012 -0400
-
-    Working on a major reorganization of the router structure, in order to restore modularity of devices and routers with the new instances functionality. Since I am already rewriting large parts of the router I decided to try to reconcile the timetag/queue functionality with the rate/count changes, and to finish adding timetags to the API as needed. In future commits I will finish working out the rate stuff, this commit focuses on moving signal processing memory from the signal data structure to the router. The routers' conception of a mapped signal has been renamed from mapper_signal_connection to mapper_router_signal; as before this structure contains the connections for a given signal, but now it also contains the signal instance input histories if required by the defined expression.
-    
-    In order to handle passing vectors of signals to the msig_update() functions and still allow queueing, it will be necessary to build the message bundles in the routers as we go rather than queueing a list of updated signal instances, since we need to pass a pointer to the vector to the device/routers. For this reason, I have modified the timetagging/queueing API such that the user simply passes a timetag with each update/release/query message; this timetag will be passed with the message when sent and the message will be sent immediately unless the use first calls mdev_start_queue() with the same timetag. Queues are now indexed only by timetag, and an arbitrary number of queues can be built simultaneously.
-
-commit 0c4bafe01b3547fe999f89fa24d9fcbb190b6260
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 6 20:56:49 2012 -0400
-
-    Removed placeholders for old queue/timetag API proposal.
-
-commit 593fcae5cbe3609fe9f8513fdc9659ebc184c5a4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Oct 6 20:56:22 2012 -0400
-
-    Add queue argument to release_instance function in python bindings.
-
-commit a2348327ae654f2b6740d42702e71ff6cab0e6d4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 17:38:20 2012 -0400
-
-    Removed whitespace.
-
-commit 6302f45542df02ef9fdf50309539ae932e006666
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 17:33:57 2012 -0400
-
-    Reorganization and refactoring of the signal functions in header files and signal.c; removed some old unused functions.
-
-commit bb175e9d40d1b3bf3b4834d93257e55f11f95cb4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 14:22:57 2012 -0400
-
-    Allow instance releases to be queued also.
-
-commit e9f988bb3883d96f27f3f1cfdb77181e6c03d3d7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 14:12:33 2012 -0400
-
-    Cleaned up instance managment handler stuff.
-
-commit 67512fe3f80e0190e6851c05050a2b3514c9db12
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 13:25:52 2012 -0400
-
-    Alphabetized mapper_msg_params
-
-commit c7aee5358adf11454fac91c0b992a50d7ea7b1b7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 12:34:50 2012 -0400
-
-    API simplification: added optional mapper_queue argument to msig_update() and msig_update_instance() functions instead of using separate functions for queued output.
-
-commit 430bdc2b5c313e298af02f6dcc2b1ed03c66502c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 5 12:33:26 2012 -0400
-
-    Reserve instances for devices in testinstance.py
-
-commit d4d6d4f15a504b5b18acedbbec153ac3825cf950
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 4 15:46:44 2012 -0400
-
-    Removed extraneous variable
-
-commit 8322e0bd938eafc02a6bf7dfa4a566990d574261
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 4 13:57:23 2012 -0400
-
-    Removed obsolete num_instances argument in python signal declaration functions.
-
-commit c80992c235336a98904f468a79c72edeafce2338
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 4 13:56:27 2012 -0400
-
-    Removed infinite loop in query handler.
-
-commit e6929d24f73dfdf810dee45a308b70ba2d706209
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 4 13:22:41 2012 -0400
-
-    Changes for compatibility with swig 2.x
-
-commit fa7f43a4d001b08e44e7cce8b647ee51f9e3c7b6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Oct 4 13:21:49 2012 -0400
-
-    Fixed crash when requesting signal info - rate property was being read as double instead of float; also fixed placement of AT_RATE in mapper_msg_param_t enum.
-
-commit 3022a42e1c57381c8a9e535db7dc63b2f5af018f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Oct 3 16:48:09 2012 -0400
-
-    Added standard deviation of clock offsets to testsync display output; added function mapper_timetag_get_double()
-
-commit d64e7161590c11d2c9e0371fa9c9c09e5be1a6c2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 26 16:47:54 2012 -0400
-
-    Fixed weighting of future timetags when adjusting clock.
-
-commit 7058743eccbb2bc98326043671712507d5d1b4f9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 26 14:15:24 2012 -0400
-
-    Fixed CPU usage in testsync program.
-
-commit 5ceb95e739b9f5a4237eb3a94e7396ba90156e41
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 26 13:40:11 2012 -0400
-
-    Added testsync program to tests.
-
-commit 3cd6d52d2bd7b0fe4894563846d3d8072b06c4b0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 26 13:39:35 2012 -0400
-
-    Fixed some pointer bugs
-
-commit a1e783f2c4f27c56f7b61948cc4c6b8e9acd812f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 25 13:38:53 2012 -0400
-
-    Bug fixes.
-
-commit 4e1c5be88721428f57335c31837442f26361dd97
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 24 17:38:32 2012 -0400
-
-    Distributed network time synchronization based loosely on concepts from PTP. Devices occasionally send /sync messages; some of these messages are stamped with arrival time by other peers and cached for inclusion in future /sync messages.
-
-commit 03b3f10471386ba7019dbca6740042150e7aecfd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 20 18:37:55 2012 -0400
-
-    Rearranged location of some processing, since the earlier instances-master merge broke sending of NULL values (used for releasing instances), which need to bypass the expression and clipping stages. While I was moving things around, I tried to clarify the semantics of what was going on: mdev_route_instance() now simply iterates through the connection_instances belonging to a given signal_instance; the router function it calls is now renamed from mapper_router_receive_instance() to mapper_router_process_instance(); lastly, the functions mapper_router_send_signal() and mapper_router_send_new_instance() no longer actually send anything, since their output may be queued for bundled output and the new function mapper_router_send() actually does the sending. They have been renamed mapper_router_add_message() and mapper_router_add_new_instance_message().
-
-commit 619b60b5b2658458c8b712b34dd5e56e2791d9ea
-Merge: d5d9ea6 f50cbcb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 20 16:41:08 2012 -0400
-
-    Merge branch 'reserve-stack' into merge-temp
-    
-    Conflicts:
-    	src/signal.c
-
-commit d5d9ea6844c40f9e11f31c567e48ee90374442e5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 20 16:32:17 2012 -0400
-
-    Updates for compatibility with instances and timetags merges.
-
-commit def29eec4a7ae724fe0e9516f8dfbc1614c53388
-Merge: f03328c 48316f3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 20 15:34:13 2012 -0400
-
-    Merge branch 'instances3' into merge-temp
-
-commit f50cbcb377d7b73334a80be55bb61a4392b9f95f
-Merge: 0aa2365 48316f3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 20 15:25:39 2012 -0400
-
-    Merge branch 'instances3' into reserve-stack
-
-commit f03328c3148f813502cb7b920fb0d130980e90de
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 18:28:01 2012 -0400
-
-    Update queue functionality to handle instances.
-
-commit 272ffc0a333bdff7967ecc2d6ceb1534265a1cb8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 14:09:38 2012 -0400
-
-    Add jni.h search paths for OpenJDK 7.
-
-commit 42001e6da69e1dc788e1740e7799331cb0b0c31c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 13:44:05 2012 -0400
-
-    Set count parameter to 0 in SWIG and JNI bindings.
-
-commit 35dc7c711c9a55f18167aecf3bbf8423244380c6
-Merge: c1a200d 0ab9ec8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 12:52:15 2012 -0400
-
-    Merge branch 'ttags'
-    
-    Leaves queues broken, since the enqueue/send queue operations need to
-    be updated to support instances.
-    
-    Conflicts:
-    	include/mapper/mapper.h
-    	src/device.c
-    	src/mapper_internal.h
-    	src/router.c
-    	src/signal.c
-    	test/Makefile.am
-
-commit c1a200de8be522203cbde5830c4b257a94d67af1
-Merge: baa82ed 1b141ee
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 12:37:56 2012 -0400
-
-    Merge branch 'rate'
-    
-    Conflicts:
-    	src/admin.c
-    	src/params.c
-    	src/signal.c
-    	test/Makefile.am
-
-commit baa82ed53692728f08f05f157c03434a42d9ccb1
-Merge: 1432679 eb2bb77
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Sep 17 12:26:42 2012 -0400
-
-    Merge branch 'instances3'
-
-commit eb2bb7789fb333030b6e4110b06f2ee04baa4e85
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Sep 16 11:30:14 2012 -0400
-
-    Reestablish roles between signal/device/router for updating instance values.
-    
-    This patch may seem a bit arbitrary, so some explanation is warranted.
-    For example, it moves `msig_send_instance` into device.c, naming it
-    `mdev_route_instance`, in which the passed-in device pointer is not
-    even used.
-    
-    Previously, we had a structure where signals, when updated, requested
-    that the device send out their new values to the routers:
-    
-               Device
-              /      \
-           Signal   Router
-           (Input)    |
-                    Sig Conn
-                      |
-                    Connection
-                    (Output)
-    
-    In the instances branch, some data per-instance, per-signal,
-    per-connection is required because the output history of expressions
-    may differ between connections for the same signal, on a per-instance
-    basis.  We now have something more like,
-    
-               Device
-              /      \
-           Signal   Router
-              |         \
-           Sig Inst   Sig Conn
-           (Input)        \
-              |            \
-           Conn Inst --> Connection
-           (Output)
-    
-    Ideally, the signal shouldn't know anything about links or
-    connections, but since history information is per-signal and
-    per-connection, it was most convenient and efficient to point directly
-    to the connection-specific data from the signal.
-    
-    Unfortunately, I believe that this odd loop in the data structures,
-    besides breaking some principles of opaqueness and separation of
-    concerns, will almost certainly lead to problems in the future if we
-    want to support the idea of remote routers.
-    
-    So this patch splits up handling of per-connection data processing
-    into a service provided by the device, which hands off processing to
-    the concerned routers.  However, no look-up in the device or router
-    structures is needed, because the signal already has this information.
-    
-    Therefore it may seem arbitrary since the device and router are not
-    really needed except for the final transport layer, however I think
-    `mapper_connection_instance` should eventually be made opaque to code
-    in `signal.c`, where signal transformation and handling of
-    `mapper_connection_instance` should be performed entirely in
-    `router.c`.
-    
-    Mainly this change is to help in performing the merge with more recent
-    code in other branches, since it is difficult to understand the merge
-    conflicts when core functions, also modified by other branches, have
-    been eliminated and concentrated in `signal.c`.
-
-commit 0ab9ec879c6a00faf3f72a2b147022de08748e26
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Sep 16 12:32:00 2012 -0400
-
-    Handle bundle mechanics implicitly in the router.
-    
-    Makes sense for device to just tell router to simply receive new
-    signal values, and when to dispatch received messages together.
-    Therefore instead of passing it a bundle explicitly, router builds up
-    the bundle as necessary if it hasn't yet received a "send"
-    instruction. This is of course more stateful and less friendly to
-    concurrency, but, I think, cleaner, as the device doesn't need to
-    worry about allocating resources at the transport layer.
-
-commit dae7dead036adde1bc8bdbb8d52bca755b6814c3
-Author: Gautam Bhattacharya <gautam.bhattacharya at mail.mcgill.ca>
-Date:   Thu Sep 13 17:40:23 2012 -0400
-
-    Add a queue struct for accumulating signal updates, so they can be bundled before sending.
-
-commit 48316f35fe5230c5b91eb056ff6629efc864d0b3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 16 19:23:10 2012 -0400
-
-    Send instance release messages as appropriate when removing connections.
-
-commit c6076657ec3acd13022cb5a6d3379d93679f6098
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 16 17:41:42 2012 -0400
-
-    Report results separately for different instance allocation schemes.
-
-commit f0be3b902b46063542feded7ea54ef901c6f0c2d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 16 17:41:10 2012 -0400
-
-    Call instance management handler even if instance is not new.
-
-commit d345ecd528125cf40297be0651bf46f0f4775925
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 16 15:53:13 2012 -0400
-
-    Rename a couple of functions to match standard naming scheme.
-
-commit 99fe6fa4aa71f58b5c981d36a488cbe8661ff42a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 16 15:52:35 2012 -0400
-
-    Merged instance overflow and management callbacks.
-
-commit 440a4c43bd237c978a44d1b65848ce6c36632df0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Sep 16 11:29:08 2012 -0400
-
-    Fix unused variable warning.
-
-commit 7183a5107c5a609376bea53ef5c4cb8f7732c961
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Sep 13 17:36:29 2012 -0400
-
-    Move mapper_timetag_t definition so it can eventually be used in db structures.
-
-commit 1b141eeb5bb7e8cde7f3a5b03f1a5d6b7e9aac59
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 11 20:19:27 2012 -0400
-
-    Add a test for rate feature.
-
-commit dc56233be207c05e612f8e9646fa67eb40acc060
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 11 20:19:04 2012 -0400
-
-    Announce the "rate" parameter for signals on admin bus.
-
-commit c9a3a01d55180a76afdb1912dabe786b283897a1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 11 19:21:28 2012 -0400
-
-    Add basic API for specifying the rate of a signal.
-    
-    After rate is set, assumes that user will provide every sample as a
-    stream, possibly provided in blocks.  Therefore, the signal becomes
-    "logically timed" according to the specified rate.
-
-commit 14326792350334427a27d898e65aa6ab38b2e59c
-Merge: 524bb8b 1824072
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 11 14:09:26 2012 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit 0aa236551a6145bb59676d8fa6e0df0df8b15f12
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 11 12:52:10 2012 -0400
-
-    Moved signal instances back into separate active and reserve linked-lists. This should allow faster insance look-up in scenarios with many inactive instances.
-
-commit a7b792b4782f8d25662194409f658caeeaf06a1f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Sep 8 14:43:27 2012 -0400
-
-    Move instance id maps to active and reserved lists, avoid runtime memory allocation.
-
-commit 228bc65f46a50af9a9f3d10d88d6ab299731f9e8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 6 13:54:41 2012 -0400
-
-    Was erroneously setting instance->is_active before checking if new_instance message should be sent to remotes.
-
-commit c5d70bf3edc66e51447b505d0ff88f7b0dac99d0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 5 19:01:33 2012 -0400
-
-    Fixed bugs in id_map management.
-
-commit fce381ad74fbada122936f92c002d1d196c906ae
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 4 23:03:38 2012 -0400
-
-    Store reference to device id_map in signal instance data structure.
-
-commit 1824072dfb6db44efbad23626b66dbf65a133a7b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 4 11:57:02 2012 -0400
-
-    Update RtAudio to version 4.0.11.
-
-commit 1cc834412ba1fbc920efd9b2e027bf2bbeda0acb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 4 11:55:40 2012 -0400
-
-    Fix Python native module file extension.  It's apparently .so even on OS X.
-
-commit 3fe0e823c8833667c1f0e1852a2d314dc8474fd4
-Merge: 4c658d6 524bb8b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 3 16:36:33 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	test/Makefile.am
-    	test/testspeed.c
-
-commit 4c658d665905a8502c8056fc4f35dfe30ba2977f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Sep 1 09:37:15 2012 -0400
-
-    Fixed bug in reporting best times.
-
-commit 5b316116910808d3e8760ae24d8f31d1f2da19e2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 31 17:26:13 2012 -0400
-
-    Tweaking testspeed program.
-
-commit 524bb8b28cc305e3e8c1be0412b53537200b8952
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 31 16:51:54 2012 -0400
-
-    Added testspeed to tests.
-
-commit 037f1f65ba6ad576f35ee519c54a5f4f997f7d06
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 31 15:24:37 2012 -0400
-
-    Alphabetized function enum and table.
-
-commit cfee69f21a205265254ec0a170d546394109052f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 31 14:04:22 2012 -0400
-
-    Fixed bug in expression parser - was not always checking stack properly for variable or random function references. This meant that e.g. y=round(uniform(100)) would be evaluated immediately instead of on signal updates.
-
-commit b312595c8794a5ab65bb1c89ed077d91a1e6cc90
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 28 18:34:36 2012 -0400
-
-    Send bundles instead of bare signal value messages.
-    
-    This is to prepare for handing timestamps and larger message bundles.
-
-commit 07a45ece6797429d49dda5e13bf546aefc991bb6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 28 14:34:47 2012 -0400
-
-    Added uniform() function to expression parser.
-
-commit 2fedd86c5a7efa5335e86cb893cb034e0ec4547b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 24 14:37:41 2012 -0400
-
-    Rename token_t to mapper_token_t to avoid errors when using XCode 4.
-
-commit 373ce79fee50dc73c9b69ce79af474eefb07535d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 28 14:15:44 2012 -0400
-
-    Go back to referring to router destination as dest instead of remote.
-
-commit 9678199a45aaa429de45dbcb4abc0fed219f652d
-Merge: b7186f2 789d197
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 28 13:06:54 2012 -0400
-
-    Merge branch 'instances3' of github.com:malloch/libmapper into instances3
-
-commit 789d19796359b610e233b7bdd21f7f5ee1f6dc33
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 26 21:16:18 2012 -0400
-
-    Fixed trace messages.
-
-commit 097db41d27643495863a24fae0e0586b29e390c0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 24 22:00:58 2012 -0400
-
-    Fixed pointer bug in mapper_router_remove_scope()
-
-commit b7186f28f3f47940bba693549b62c36c8176beb8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 23 20:11:23 2012 -0400
-
-    Go back to referring to router destination as dest instead of remote.
-
-commit 5844e03f8c594d07146f3ca8251c35c644649907
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 23 18:19:57 2012 -0400
-
-    Release instances when removing them or removing signal.
-
-commit f7d02784c08fe5b78a9f0fd4579d435eb75384ad
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 23 17:49:09 2012 -0400
-
-    Added function for synchronizing instance id maps between signals.
-
-commit 0454b8f66104fb69e08bd7e1451c7158efa1e6d1
-Merge: bbbb1ef 98e96ff
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 21 09:31:00 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	include/mapper/mapper.h
-    	src/mapper_internal.h
-
-commit bbbb1ef79918db8c467f396829a769322d85b86f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 19 20:37:24 2012 -0400
-
-    Moved release of orphaned instances to /disconnected and /unlinked handlers in a effort to avoid releasing before the source device has stopped sending updates. This is not entirely successful - probably we will need to use a receiver data structure and unlink from both ends to ensure proper release of orphaned instances.
-
-commit 26154cb134d179bb26683f4d93fc8582e51bb0ad
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 19 19:27:24 2012 -0400
-
-    Removed admin handlers for link_add_scope and link_remove_scope - for now we will just do this with the link & unlink handlers. Removed >2-device linking. Moved release of orphaned instances from admin to device.c
-
-commit 72f1233e41be7b8cec51f42232a0218fb944c272
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 19 12:14:26 2012 -0400
-
-    Fixed bug when adding scope to link.
-
-commit 3335fe0d1ac7ddda03dd2c738bdb93212babb5dd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 16:59:05 2012 -0400
-
-    Release orphaned instances on /disconnect or /unlink.
-
-commit c28f11b755095cade7ecabccab697b1db11cabfc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 16:56:39 2012 -0400
-
-    Check hash instead of port.
-
-commit 8eee09b612646bb398a2cff791d8a2a5f2aa6dcd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 15:25:20 2012 -0400
-
-    Added link properties to swig/python bindings.
-
-commit 0b05c03fc2c6d47e4e7cbccdc265b2fbd85efb7a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 15:22:58 2012 -0400
-
-    Add scope hashes to link property types.
-
-commit b4c8d14fb16a4dcefd8b02c90c53e21cfe8c0bfc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 15:20:26 2012 -0400
-
-    Ensure query response callbacks are property registered.
-
-commit d9059c18e923226a792d93d03791ade40144345e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 18 09:51:33 2012 -0400
-
-    Tweak hash-collision based allocation scheme to make it compatible with previous library versions.
-
-commit 3507a787ba4d3e508b804c519bdd690af3e3aa49
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 22:51:44 2012 -0400
-
-    Specify link scopes as strings (device names) instead of IDs. Since we are now using CRC-32 hashes of these names for the instance group ID we can recalculate them as needed.
-
-commit 1b37b1e8fb61db4da151e00610f4a971333894ff
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 21:53:56 2012 -0400
-
-    Handle port suggestion, only report port in device metadata if has been bound.
-
-commit 254286c5dfa6ecf8f1a42b0bc6c51cae83ea562f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 21:53:05 2012 -0400
-
-    Check for zlib in configure.
-
-commit 6d26dc6c3b8c5edbd9afa2dc95450fbd75fa6d4c
-Merge: 2f76ccc 83b3316
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 20:41:01 2012 -0400
-
-    Merge branch 'instances3' into crc-32
-    
-    Conflicts:
-    	src/admin.c
-    	src/device.c
-
-commit 83b3316feead6944713917f855899373b4e1665e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 20:21:04 2012 -0400
-
-    Restore port argument to mdev_new()
-
-commit 98e96ff58c37e01631708e896b663b1a55e82f5b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 19:20:36 2012 -0400
-
-    Documentation update: fixed some mistakes, added param references.
-
-commit 28e8df90a6ccffdfa9eb87ae63d156a2ef77467a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 18:37:06 2012 -0400
-
-    Refactoring: changed some mapper_db functions to refer to connection sources and destinations instead of (misused) inputs and outputs.
-
-commit 2f76cccdc5a43d00d8ea4be71b868b487eb96470
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 17:03:14 2012 -0400
-
-    Switching to allocation scheme which checks CRC-32 hashes of device name + ordinal instead of allocating ordinal alone. This will ensure that device name hashes are unique in the mapping network and can safely be used for identifying signal instance ownership.
-
-commit cc68c6d2354d0a7fce04ac45017db6412731c3d4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 12:28:41 2012 -0400
-
-    Release associated receiver instances on /disconnect message.
-
-commit bdcd9519f97bd1aa1eb67babefc2d41d7db5d2f2
-Merge: 0bae6e6 8881fb8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 17 11:27:07 2012 -0400
-
-    Merge branch 'instances3' into instance-management
-    
-    Conflicts:
-    	src/signal.c
-
-commit 8881fb840a813ca2f00f80d6c1ec31412bad51c6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 14 18:32:37 2012 -0400
-
-    Use ID instead of port in msig functions.
-
-commit e91439613dcb11192e687e82244138eabdb44471
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 14 18:32:02 2012 -0400
-
-    Add properties to mapper_monitor_link().
-
-commit fffadf7649a01c3ec84f843b3137c5e3f6aff59f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 14 00:46:03 2012 -0400
-
-    Update test files with API changes.
-
-commit fdbd87155313c260ad7df9e66308a23400799f5b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 14 00:45:06 2012 -0400
-
-    Allocate ports internally, device IDs using allocation scheme.
-
-commit c41e9cb4d0dbfefc25d0e68f5d3bbde109cb4ad9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 23:16:12 2012 -0400
-
-    Fixed crash when replacing expression with malformed string at runtime.
-
-commit f072d433e5a65f56779bb18b81d32e806a4942ac
-Merge: 3b93b61 26fa707
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 18:08:03 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	src/admin.c
-    	src/connection.c
-    	src/db.c
-    	src/mapper_internal.h
-    	src/router.c
-    	src/types_internal.h
-
-commit 3b93b6171c9c0d03ab4b0fdf88d1a54e8bdf8189
-Merge: a5df281 7704091
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 17:15:32 2012 -0400
-
-    Merge branch 'link-scope' into instances3
-
-commit 26fa707ed18de27a63d9f489aea5b1670c6c072d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 16:14:58 2012 -0400
-
-    Store and report extra link properties.
-
-commit 54119adf397726bcb2478a984619f954239e9261
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 15:48:34 2012 -0400
-
-    Store and output extra connection properties.
-
-commit 92240667a43e7df0ab75a106543c8bc46d65dc86
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 14:36:35 2012 -0400
-
-    Use mapper_db_link struct to store props in router.
-
-commit b18e3103216fbffe142b4feb103a0825b1c9103f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 13:51:40 2012 -0400
-
-    Forgot closing brace.
-
-commit 60f1a22aadbeb02e63bceb071a927fb726f03fe3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 13:49:02 2012 -0400
-
-    Fixed bug in mapper_monitor_connection_modify - can't use props in NULL.
-
-commit 7704091219d101c4bb0c39b31734760d0024414f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 13 12:01:51 2012 -0400
-
-    User local ID for link scope if scope property not included in /linkTo message.
-
-commit a5df281ca6637bde7a91045b31e6063a6f038a3a
-Merge: 59b26a0 e556c15
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 12 00:28:33 2012 -0400
-
-    Merge branch 'group-id' into instances3
-    
-    Conflicts:
-    	src/router.c
-
-commit f53648804eb773af8709e4235972f520343ad10a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 10 17:40:10 2012 -0400
-
-    Removed whitespace.
-
-commit 09ab347aa638645590d1f75c45a0b2fc0424fc6b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 10 17:39:42 2012 -0400
-
-    Added handlers for multi-device unlink, link/addScope, link/removeScope.
-
-commit 594c8d6500cb171b754807a64dafc02a21d63752
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 9 18:15:48 2012 -0400
-
-    Add link scopes to /linked messages and routers, use for instance routing.
-
-commit 6290187c9ddf745251be7efb330a4665b970230d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 9 13:10:57 2012 -0400
-
-    Fixed bug in /link handler.
-
-commit bbd8b6467d0e08b3cf6baaf488c1f51e62ed15cc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jul 8 17:47:30 2012 -0400
-
-    Adding link scopes, ability to process /link messages with >2 devices.
-
-commit 0bae6e628a7945298806a10374609d0978b2a7dc
-Merge: 9dd80de e556c15
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:39:22 2012 -0400
-
-    Merge branch 'group-id' into instance-management
-
-commit e556c15348b206d22776179b219b3a583931c14b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:38:30 2012 -0400
-
-    Finished merge.
-
-commit 59b26a000116d49f800648b182d9a12b83fbf605
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:37:21 2012 -0400
-
-    Finished merge.
-
-commit 7d26f049bb9f9df87ee925f7c05e49dc280dd6a5
-Merge: 860788f 3ebe72a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:34:26 2012 -0400
-
-    Merge branch 'sync-instances' into group-id
-    
-    Conflicts:
-    	src/device.c
-    	src/router.c
-
-commit 3ebe72a5338b0a29ec7b3cef999fc99c671f1aac
-Merge: 731a4f1 bd4853c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:30:39 2012 -0400
-
-    Merge branch 'instances3' into sync-instances
-    
-    Conflicts:
-    	src/router.c
-
-commit bd4853c131fc976a6e52598133213c88c2af0633
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:25:24 2012 -0400
-
-    Finish merging master into instances3.
-
-commit ce70748b0521ea2f5e285dddf458fbf94a786870
-Merge: 320296d 3b6385c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 16:15:37 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	include/mapper/mapper.h
-    	src/admin.c
-    	src/device.c
-    	src/mapper_internal.h
-    	swig/mapper.i
-    	test/Makefile.am
-
-commit 3b6385c2a63c5faf51c0799e75fdd89f1cc687a4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 4 08:26:15 2012 -0400
-
-    Set handler and user_data after adding/removing query response callback in device.
-
-commit 2d28aeab2490c5ac36c9a951ca0b921cf9b150c0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 19:46:01 2012 -0400
-
-    Coerce query response values at query originator instead.
-
-commit ff269e7df15e28655425dd9059ecb164e0f84295
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 18:04:01 2012 -0400
-
-    Add java testquery program.
-
-commit 7a64e3b9d310fe88ee20bfd80233f19f0217b3f3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 18:03:21 2012 -0400
-
-    Update java bindings for new query API.
-
-commit bb4bf76ad2f53ec55253fa958b42c22078a59929
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 18:02:33 2012 -0400
-
-    Use different signal types in testquery program.
-
-commit cdae39f47b018fb68dc2100b9b8cff75263451cb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 18:02:00 2012 -0400
-
-    Pass signal type in query message, coerce types in response.
-
-commit c5b0c8f6fdd51491a81f2721829592188fe0c980
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 16:56:29 2012 -0400
-
-    Fixed pointer and memory allocation bugs in mapper_router_send_query().
-
-commit 662db13ef257bf0261faf225ef249eec7ff97e49
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 14:27:59 2012 -0400
-
-    Update swig/python bindings.
-
-commit 709befdfd1e4f0cd32724cf5c127c34f968784ee
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 2 10:52:30 2012 -0400
-
-    Use existing handler field for pointer to query response callback; set user_data for query response callbacks.
-
-commit 860ffefb5a623f5b165902d84bb8bb2103ca18da
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jul 1 14:50:27 2012 -0400
-
-    Send query response string pre-formed for reverse compatibility.
-
-commit 1d6e4f39cf08b81e128e62d99f5ab0b20b56185c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jul 1 01:05:09 2012 -0400
-
-    Need to poll server if device has query callback even if it has no input signals.
-
-commit e2208ca05c2c178522fdb51d5e3cc01a9149b7d6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jun 30 13:45:21 2012 -0400
-
-    Fixed problems with query response callbacks, response still not working.
-
-commit 17fa86eb326e8df6d16773ceaf916686e0d6c90b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 18:28:18 2012 -0400
-
-    Burying signal query functionality in library internals, should make more user-friendly.
-
-commit 7e34553ed9f5c83c371d3a61a3b75af53893f646
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 15:44:07 2012 -0400
-
-    Fixed bug in expression parser for handling floating-point constants > 0 without preceeding 0.
-
-commit c8e04ea758d30599f35099663e0daf5c4f035422
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:26:50 2012 -0400
-
-    Fix for java hidden signals, switch to boolean for hidden property
-
-commit 0368282416dc3a88216ce38c308e592b65af0ff4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:07:35 2012 -0400
-
-    Update testquery.c with new hidden signal API.
-
-commit 7b41d514a4fac210bd59c19e0b37471479aa70da
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:06:59 2012 -0400
-
-    Update swig/python bindings with new hidden signal API.
-
-commit a902958652b8b51105468e1aff6021348b654d50
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:06:17 2012 -0400
-
-    Update java bindings with new hidden signal API.
-
-commit 267f6f55c9ef07b0dc4880f2efe7c75005b17c01
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:04:23 2012 -0400
-
-    Cleaning up hidden signal code: use settable property instead of separate creation function.
-
-commit 5987c14291d23b2676c4dc82722f717358b4b52e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 29 14:01:40 2012 -0400
-
-    Removed references to dummy test program testdynamic.
-
-commit 9dd80de7d1bf316b65345937a9e2e987d9197670
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 28 17:40:58 2012 -0400
-
-    Added callbacks for remote instance kill requests, instance management.
-
-commit 860788f080ac57ca02960ec40cb41b39140e68a1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 28 15:00:44 2012 -0400
-
-    Added explicit msig_start_new_instance() function; ensure local instance stealing at sender only occurs if instance is new.
-
-commit e713419daa4354489592ee1365ddc2e0598f7de4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 26 17:40:41 2012 -0400
-
-    Corrected unlink handler response.
-
-commit ffab26527cf6a514dd6b1b7df8d85a4f48e56d5c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 22 17:58:40 2012 -0400
-
-    Set active=0 when releasing slave instance.
-
-commit 847683bac0fca532e0029527f0aff5965aaff675
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jun 20 12:44:42 2012 -0400
-
-    Parse ordinal from end of device name string instead of beginning.
-
-commit b6b875117203a5907c15eb80fb454aaa94ce9b02
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jun 16 22:11:29 2012 -0400
-
-    Use existing instance id map if possible.
-
-commit fa6da7a82394c2b8216ccd15d36da3e47734a24f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jun 16 20:32:08 2012 -0400
-
-    Added test program for benchmarking speed or message processing.
-
-commit 70cf0c0d7ba8690db464d6654a9a5a46605900fd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jun 16 19:01:20 2012 -0400
-
-    Use first instance on stack instead of seaching in non-instance handler.
-
-commit 5978b3771349bbd581c481a574b3fc5e5de3d302
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 15 17:42:21 2012 -0400
-
-    Use existing instance id map when activating or stealing instances.
-
-commit 9a5f8b4a1261304ccf61c9c42f8b84ef4c2034c2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 14 17:33:42 2012 -0400
-
-    Fixed memory allocation and pointer bugs, to not mark instances as active on local init.
-
-commit 20366734f45aeb8bab621c5f0fe26f2bbcec2723
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 14 17:04:31 2012 -0400
-
-    Store instance id maps within signal_instance struct also - we need this information to update or release an instance in case the global map is rewritten by another signal.
-
-commit e252d0cee4021c1a5678aa7a1d4d1903b4d7b62f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jun 13 12:37:19 2012 -0400
-
-    Removed default bidirectional linking - this is no longer necessary since we are using instance group ids to indicate ownership of instances.
-
-commit 19d4e4aee4bc48cee82f85144364d23799ca361a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 20:22:01 2012 -0400
-
-    Changed TRUE to 1
-
-commit d5d1227d97a77f7a3cf0986f1f46f2a997bff5e3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 20:18:23 2012 -0400
-
-    Complex commit: switched to signle linked-list for storing instances; refinement of instance id synchronization approach; use instance id mapping at sender side also.
-
-commit 6963f194724a9aaafb27e1ea9f63f8978ed3435b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 20:15:44 2012 -0400
-
-    Adapt instance handler and add liblo methods for new instance message.
-
-commit b06df1ce7f32f6a5f6b99f5609fe14003a931fb3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 20:10:29 2012 -0400
-
-    Clean up handler.
-
-commit 9e58f6fafcfa0a68ef8f42362828c9158d031f61
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 19:54:52 2012 -0400
-
-    Added function mapper_router_send_new_instance(). We need to explicitly send a message indicating that a new instance has been created in order to properly handle voice-stealing when srcInstances > destInstances.
-
-commit c0555af35763be196477756cee571edbc64e6054
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jun 12 19:49:20 2012 -0400
-
-    Added placeholder function for looking up router-groups.
-
-commit 9f3f93fd44a9b88a8b35e313ca6d46a050701c11
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jun 11 14:15:18 2012 -0400
-
-    Only store local map if remote map does not exist.
-
-commit 5f5046de4c39f8814fc4010f5cee0915d209c3fe
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 18:11:23 2012 -0400
-
-    Added locally-activated instances to id map.
-
-commit 8edec6e0237d979bf247952c8519c94b33027aef
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 17:14:32 2012 -0400
-
-    Add locally-activated instances to id map to prevent remote hijacking (not complete).
-
-commit fd6e7063357086e0a4d16f3c32c800e17d8d7c90
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 16:00:02 2012 -0400
-
-    Renamed devices in testinstance program.
-
-commit fb552579d56b82313508b28a15fb4c99aad30643
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 15:59:19 2012 -0400
-
-    Fix pointer bug when freeing instance map.
-
-commit da3945fd1b3e3be83b45f5ce684d50961d9e6a7b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 15:56:03 2012 -0400
-
-    Fix value index in handler_signal_instance; Don't activate new instance if value is NULL.
-
-commit e4c0b42786df7b1318ea940756bb213b72584417
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jun 8 15:54:11 2012 -0400
-
-    Set group ID on outgoing message.
-
-commit 82d9afa390ab223362f154d5519931aebedffd8d
-Merge: e62872b 731a4f1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 7 18:30:47 2012 -0400
-
-    Merge branch 'sync-instances' into group-id
-
-commit 731a4f16804caea487af1369630fff190b0b1740
-Merge: 8181f3a 320296d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 7 18:29:29 2012 -0400
-
-    Merge branch 'instances3' into sync-instances
-
-commit 320296d06d22e560da032aa1150da8ed142de118
-Merge: 8ff9de4 8f36349
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 7 18:26:55 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	src/expression.c
-
-commit e62872b9b12ebc6f08f4e2f1132394853c25296b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jun 7 18:13:36 2012 -0400
-
-    Use combination of group id and remote instance id in instance id map; Generate unique id for every device to be used as group id by masters. Using port allocation for unique id for now.
-
-commit 8181f3a41152d9ee1ef682c62efa680eea31bc19
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jun 6 17:37:12 2012 -0400
-
-    Check if sig exists in msig_release_instance()
-
-commit 3f2ec4e5abbbc2ce9cffc681d6a1a2563ca112d6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon May 28 16:38:14 2012 -0400
-
-    Unmap instance ids associated with freed routers.
-
-commit 5bf1c9ee516bf30af2a309692b299f8f38626e6a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon May 28 16:30:25 2012 -0400
-
-    Unlink from destination-side.
-
-commit 3fd03f1b7adf7eb0ecb053b18aa9c946f84567be
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun May 27 18:56:58 2012 -0400
-
-    Pass pointer to router object in mdev_get_local_instance_map().
-
-commit eed498c26ea76f18981ff6b2faa90672a1e383f0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun May 27 13:20:08 2012 -0400
-
-    Specify if message is to be sent with instance id (internal functions); ensure non-instance messages bypass instance id map.
-
-commit 846a9274b3a617e2e459f09e6944ef02099ed060
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun May 27 00:42:37 2012 -0400
-
-    Moved instance id map to device, compiles and tests ok.
-
-commit 22b501dc7992969f196f3d5b271930f93b208ca3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun May 27 00:41:23 2012 -0400
-
-    Corrected linkFrom/linkTo logic.
-
-commit f57ed7f36de51c32073fb164245feea516e0192b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat May 26 09:28:30 2012 -0400
-
-    Bugfix; added more print statements.
-
-commit 936556e43f9f3b360eb40aeac15c2eeaa931f296
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri May 25 11:57:12 2012 -0400
-
-    Implementing instance id mapping.
-
-commit 8e44e56ae53c4a4c1c253e6a309af50a88851bd5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri May 25 00:50:41 2012 -0400
-
-    Adding functions for mapping and remapping instance ids; use lo_address to store remote device context for now.
-
-commit b1f64513f751ccdd34d00119cceee06a70b33665
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 17:33:25 2012 -0400
-
-    Added hostname and port to get/find instance functions, instance overflow handler.
-
-commit 53bee7b15fb92b0f74b2e24867e10e85f719c382
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 16:15:11 2012 -0400
-
-    Delay between link and connect.
-
-commit 33abbaf5db95e13cef45e28a0d9a2e6db592ab14
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 16:14:38 2012 -0400
-
-    Added linkFrom message and handler; create router object at receiver side on link.
-
-commit 6e49bdb6522ea46c56e14936e9e71fa937f2e744
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 16:11:58 2012 -0400
-
-    Refactoring for bidirectional links.
-
-commit fc79ad5cdc4aa2d8a1d4dbeadb7f0d561a6f0d8d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 11:38:38 2012 -0400
-
-    Added instance map struct.
-
-commit 6cec7ade34c305d0ba9fb56315d304b1ada8ec0f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 11:36:19 2012 -0400
-
-    Refactoring in preparation for bidirectional links.
-
-commit 8d070ec7b8b80958af67be0546b2c56747d96468
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 11:20:00 2012 -0400
-
-    Refactoring in preparation for bidirectional links.
-
-commit f0767e0a692c5d6868757e9ab9dabf9820f83a38
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 24 11:12:26 2012 -0400
-
-    Added @syncInstances property.
-
-commit 8ff9de4a1045e44dca8e4095a4e55718cc23c0e0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu May 17 18:48:48 2012 -0400
-
-    Handle instance id-mapping on receiver side: can now properly map and steal instances when multiple sources are mapped to the same destination.
-
-commit ed942c83a4df19aa0d3ca2a744f6ae9def418fb9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 27 19:02:12 2012 -0400
-
-    Removed instances from signal creation function arguments for similarity with C functions.
-
-commit 80ccde99ced421303bbf393c2475523cda99b471
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 27 18:56:40 2012 -0400
-
-    Fixed argument order.
-
-commit c083f9b8371bd7e66afc80b07ce1bad21c483766
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 26 11:37:36 2012 -0400
-
-    Removed references to IN_ADD_INSTANCE stealing mode.
-
-commit 66fa282a1cd0510a64bbeddbbaa1ecbdf03b6ede
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 26 11:32:40 2012 -0400
-
-    Fixed signal reference; expect failure on first sub-test.
-
-commit 78b8a16a13c2c80531229524c35642f25483ee3d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 26 10:50:13 2012 -0400
-
-    Call instance_overflow_handler on sender side also.
-
-commit 8f36349103e36222b4fec31ae9842aa7da0e9fee
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 23 16:15:53 2012 -0400
-
-    Expression vector size should be 1, since it is applied element-wise.
-
-commit a291f11e1442df951b0698a62b94b4ea97147c48
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 16 22:11:25 2012 -0400
-
-    Missing include <time.h> in testmany.c.
-
-commit 41dcd323e51a772a67fb2649ad3eceef842c274e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 16 22:07:59 2012 -0400
-
-    Add missing include for pthread.h.
-
-commit d16238af788c1166acf9f8111688f87baf69af8d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 5 11:29:33 2012 -0400
-
-    Updated lambda expressions to include instance id and timetag.
-
-commit fb3969bed0243e53c5d810ff73e2676fd8576260
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 5 11:16:24 2012 -0400
-
-    Updated signal handlers for pwm_example
-
-commit 6672c04be3623c1f3bbc9559796c9884d8c82039
-Merge: 7579965 22f8788
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 5 11:11:30 2012 -0400
-
-    Merge branch 'master' into instances3
-    
-    Conflicts:
-    	swig/mapper.i
-
-commit 22f87888a583fdd72910788db19ea2e9e6ab457d
-Merge: 0cc37d9 9a4607d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 5 11:05:36 2012 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit 75799656f53b47ff8b8f9fd5b0725b2ef031f7e6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Apr 5 11:04:23 2012 -0400
-
-    Added timetag argument to signal handlers in examples.
-
-commit 0cc37d9ad7c10a4e3aa6d598d7d1c601ba1d10be
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 3 13:52:42 2012 -0400
-
-    Added example pwm synth using pyo.
-
-commit 9a4607d659471fe61c8590298ac9d2f4b601c2dc
-Merge: 1c7718f 451b944
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 20 10:14:24 2012 -0700
-
-    Merge pull request #3 from fundamental/master
-    
-    Clang 3.0 Compile Fix
-
-commit 1c7718f19363fad88ceeb7e19c0e518ab987049c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 20 12:11:02 2012 -0400
-
-    Update input handler function signatures in pwm_example.
-
-commit 451b944ecab81854249796737e7ec55ea8434bca
-Author: fundamental <mark.d.mccurry at gmail.com>
-Date:   Tue Mar 20 11:02:57 2012 -0400
-
-    Adding missing #include for snprintf
-
-commit 5d5909bb0f9cb9435bebdf400827c20f842eadea
-Author: fundamental <mark.d.mccurry at gmail.com>
-Date:   Tue Mar 20 10:53:32 2012 -0400
-
-    Changed struct offset code to offsetof()
-    
-    - Previous to this commit clang 3.0 falied to compile with:
-      error: initializer element is not a compile-time constant
-
-commit 2bb7d06ce8d8eb198ce917a18b29d7a9fc7c3597
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 15 16:08:52 2012 -0400
-
-    Removed whitespace.
-
-commit b590a140287c7b37db71651ec6bf69a12dfa666e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 15 16:08:33 2012 -0400
-
-    Added signal instance overflow callback.
-
-commit a70ab078bf4393cdb85973060c504b316e8257c9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 15 16:05:38 2012 -0400
-
-    Added timetags to python signal handler.
-
-commit f36317180c15b8b49e32b0ac97ee0e86a59b5984
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 13 16:45:45 2012 -0400
-
-    Update test programs with instances API change.
-
-commit 1d43c4b7062469b1b7feb3b4670ad16c57926c99
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 13 16:45:11 2012 -0400
-
-    Update python bindings for experimental API change.
-
-commit 3d81001e48d6d287a7a026a60831de19c64cd67d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 13 16:44:37 2012 -0400
-
-    Update java bindings.
-
-commit 9fa08cbe4b4263266805c9f2eb627d843dbc27fb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 13 16:43:59 2012 -0400
-
-    Switch to unified callback handler for instances and non-instances; initialize signals with reserved instance.
-
-commit 415b05af78722035835900849a2c4e0bc8be1de9
-Merge: ca11a28 1c500d8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 13 10:25:02 2012 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit 1e8b455b35b1c46bfeeed77013b09f956d50446f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 12 17:21:58 2012 -0400
-
-    Reverted to msig_reserve_instances() without user_data argument, adapted python bindings and testinstance.py
-
-commit c5df7a1139c343e9945f94e2ce975948101f5bcf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 5 18:00:50 2012 -0500
-
-    Cast to appropriate types to reduce warnings when building swig bindings.
-    
-    Conflicts:
-    
-    	swig/mapper.i
-
-commit 1f8fb1e701ebc890bb50b38cbd33f9682a58919c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 12 13:46:29 2012 -0400
-
-    Remove special treatment for first instance 0.
-
-commit 389e27b53f022328344b95d5fe633ed7228ed04f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 12 13:45:40 2012 -0400
-
-    Fixed bug in error-checking.
-
-commit 08e4c612db7a5e171790df8ccdb6eeaa4f564082
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 12 13:28:33 2012 -0400
-
-    Switched to mdev_add_signal_with_instances().
-
-commit 45259fc847afa7f35d5bca02ae75306a26d5507b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 17:11:19 2012 -0500
-
-    Add functions for adding signals with instances.
-
-commit a59dcb76a7774c91c218f95369e1baab78393135
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 14:02:48 2012 -0500
-
-    Include user_data in msig_reserve_instances(), and do not reset it in msig_instance_init().
-
-commit 728f31a92212dd4ae38e9281343d85311d5917b5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 14:00:57 2012 -0500
-
-    All signals have at least one instance; enforce maximum instances.
-
-commit 08200b8357f0b6dd63adab01d2daf3cd43154810
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 13:55:15 2012 -0500
-
-    Added allocation mode selection to swig bindings.
-
-commit bcef11bfed7e133eb32dae0f40b5fd130d0c8948
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 13:54:29 2012 -0500
-
-    Added id to python instance callback.
-
-commit 7b96aaaa315a8a45f1652ab7298ee7d1b7cb8610
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 8 13:53:04 2012 -0500
-
-    Was updating wrong signal in testinstance.py
-
-commit 889087581366242b7476d9f36368ade5c81a8a38
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 6 19:08:07 2012 -0500
-
-    Added rough version of testinstance.py
-
-commit ca11a28b9513c467fe11f34f766d2165e81ff7cd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 6 18:28:55 2012 -0500
-
-    Shorten run loop in testquery script.
-
-commit 76e8e2173eee4687a7386453e03681543f0ca3d2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 5 18:05:39 2012 -0500
-
-    Added handler and functions for instances to swig bindings.
-
-commit 2bcbd3a93b0a827eb67b0dc0fb007239b53ccd7a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 5 18:00:50 2012 -0500
-
-    Cast to appropriate types to reduce warnings when building swig bindings.
-
-commit 6d20a8f5b5c57d80b6dc4b0a38b1ff9fbf535749
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Mar 4 08:09:25 2012 -0500
-
-    Add extensible properties to /link handler.
-
-commit 66d0da9356fee8bc04b53217c5f2d340f7487843
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Mar 4 08:08:31 2012 -0500
-
-    Include extra params in mapper_msg_prepare_params().
-
-commit 58a73286613b969577a31caf0b160a5d85e64021
-Merge: 51d09d6 33daef9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 27 01:23:28 2012 -0500
-
-    Merge branch 'master' into instances2
-
-commit 51d09d6b68d370b45e87d5383040f4106a3b460a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 27 01:23:16 2012 -0500
-
-    Use int instead of mapper_instance_id.
-
-commit 1c500d82d030bd86501b92aa05f6859804e78b14
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Feb 23 16:26:12 2012 -0500
-
-    Mention 'autogen.sh' in the build instructions.
-
-commit e914e3367574e3887bbd1200882c26157cd3efc9
-Merge: 68c5ae7 33daef9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Feb 23 15:43:50 2012 -0500
-
-    Merge remote branch 'malloch/master'
-
-commit 68c5ae764256f1f87830690dec9ee774bde7489a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Feb 23 12:56:02 2012 -0500
-
-    Add a .gitignore file.
-
-commit 33daef933c9694aaa24df2670cc31930a36d466b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 20 13:08:56 2012 -0500
-
-    Fixed a few typos in documentation.
-
-commit f503f932aee7c6553eb6430386021929b5aacfc1
-Merge: 00f5d0a fab748a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 20 12:51:09 2012 -0500
-
-    Merge remote-tracking branch 'steve/master'
-
-commit fab748a2b9798e3ad7ced206908d9c570b25835b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 18 14:30:48 2012 -0500
-
-    Move the tutorial to "doc" and rename it so github recognizes it as markdown.
-
-commit eb6c7e87dcd60877a75d186f09cc7533e08a26a5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 18 14:29:12 2012 -0500
-
-    Documentation on building and testing libmapper.
-
-commit 92e17eb620072908857666656dabdea05a0db070
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Feb 17 18:23:24 2012 -0500
-
-    Return error code from osc_prefix_cmp() if input string doesn't start with '/'.
-
-commit 00f5d0abb8ab0a0e292f12522750f120ebaf1d2a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 17 13:00:40 2012 -0500
-
-    Removed unnecessary mapper_signal reference.
-
-commit 6377922d9388a7638c489c3d0cc00051d05b665f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Feb 15 13:14:41 2012 -0500
-
-    jni: Add internal class files to jar.
-
-commit f1a8394aa27775bb39964dc8230d3b921f042ce4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 13 17:15:53 2012 -0500
-
-    Moved n_links/n_connections tracking into add/remove functions.
-
-commit 31ac770b5a5f1e1b3917440d245f7984a9fee795
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 13 17:14:22 2012 -0500
-
-    Remove associated connections before freeing router.
-
-commit 01f2b95bc0882b5ddce7da1dc8dd59c330a768a0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Feb 12 23:23:44 2012 -0500
-
-    Free router in mdev_remove_router().
-
-commit 16eb804513603bbeb5cf2bcb194d647ef1f87ce3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jan 24 16:25:30 2012 -0500
-
-    Moved mapper_msg_add_osc_value_table() from table.c to params.c; switched to calling msg_add_lo_arg() instead of lo_message_add() - fix for bug when sending extra params in /connectTo messages.
-
-commit 39da44880b57c657647e915dc3a862834fc2f773
-Merge: 6f6ab47 84e9343
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Mon Jan 23 16:17:30 2012 -0500
-
-    Merge branch 'throttle-metadata'
-
-commit 84e9343757ea837023711cef51601f8237f62e4e
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Mon Jan 23 16:07:07 2012 -0500
-
-    Added members to mapper_db_device struct and devdb for n_links and n_connections; fixed order of keys in devdb_table, allocate extra tables for connections and links.
-
-commit 6f6ab47cb4468ae3da90aea49c2459f3a3bc7a2c
-Merge: 9bf5ffc 01c01af
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Jan 22 22:29:13 2012 -0500
-
-    Merge remote branch 'malloch/throttle-metadata'
-
-commit 9bf5ffce433dd651b8e48561ae3c4a96109df303
-Merge: 5e93f10 563eb79
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Jan 22 22:26:01 2012 -0500
-
-    Merge remote branch 'malloch/monitor_update'
-
-commit 5e93f108bd8d2b58dd8fc623cec1c43fe099051c
-Merge: 79f67e8 aab8f31
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Jan 22 17:18:52 2012 -0500
-
-    Merge remote branch 'malloch/python-update'
-
-commit 79f67e8164d5c3ec768474694fba3414fb9b3808
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Nov 25 18:27:17 2011 -0500
-
-    Initial work on "How to build on Windows" documentation.
-
-commit 6b89352cfa7039905abf8d922a56669c7e9fbb5f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 26 12:10:25 2011 -0500
-
-    Fix clean files to satisfy distcheck.
-
-commit 01c01af2cee8a2a9d7ef9487f6675bf0c37f9b5f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jan 19 17:33:01 2012 -0500
-
-    Added functions for querying properties of links and connections; finished adding throttling to connection requests.
-
-commit 563eb797d2b47a170862e8e2fe5a44e07678b739
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jan 18 12:10:32 2012 -0500
-
-    Added arguments for setting admin and enable_autorequest to mapper_monitor_new(). Added own_admin member to monitor data structure to track admin ownership and free admin if appropriate in mapper_monitor_free. Updated swig bindings and testmonitor program.
-
-commit 50005adbe66e2c9799fc6561962240793b719d21
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jan 14 12:50:56 2012 -0500
-
-    Include types for ID property in call to mapper_admin_send_osc().
-
-commit 7f1adcf819533615e6cca9140db3b110c966f297
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 13 20:57:53 2012 -0500
-
-    Fix for freeing callback after batch signal request.
-
-commit b3a0f91ddcc1d342c06ceb9a6b6872a109f6042e
-Merge: b0693c9 d8690d8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 13 17:11:26 2012 -0500
-
-    Merge branch 'master' into throttle-metadata
-
-commit b0693c9361c530899a9518f55637275a9961907a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 13 16:13:29 2012 -0500
-
-    Added batch request capabilities to monitor.
-
-commit d8690d87b34e7c0fee455e0f2cac779a037dfbaa
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 13 12:11:42 2012 -0500
-
-    Added n_inputs, n_outputs, version to mapper_db_device data structure; now stores these properties in devie db record. Fixed bug in mapper_db_property_lookup() - was searching sigdb_table instead of table passed as argument.
-
-commit aab8f3130c42699946ed34d14028b03196c478cb
-Merge: 38fe1ff 7f25c3a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jan 10 15:42:42 2012 -0500
-
-    Merge branch 'master' into python-update
-
-commit eabc10ffa2b7c2834a89700ed7ded631631ba78c
-Merge: a762d0e 7f25c3a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jan 10 15:41:47 2012 -0500
-
-    Merged remote branch master.
-
-commit 38fe1ff572eabb4806b8df96d7a9cc75e36d5982
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Dec 14 12:44:02 2011 -0500
-
-    Added python binding for mapper_monitor_autorequest().
-
-commit a762d0e73f7b2e4250f4f89ea26a3ce5e93d2283
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Dec 11 16:54:08 2011 -0500
-
-    Add user-data to instance; fail if received instance id not understood.
-
-commit 7472172a7014e60c0776be7a4727bce28ffe7841
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 26 21:09:56 2011 -0500
-
-    Print the active ID instances during testinstances.
-
-commit 395a7672b90510dfd578a2534e773269f9aeb06a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 26 23:58:04 2011 -0500
-
-    First instance gets the original id=0 instance, and restore it on last release.
-
-commit 62924c1eb4a21be70ebb8a09f384457ca2dfe7b8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 26 18:05:21 2011 -0500
-
-    Proposal for alternative instances API.
-    
-    Uses same implementation internally, but instead of exposing a
-    user-facing mapper_signal_instance data type, it allows user to
-    specify an external ID, and attach an optional data pointer.
-    
-    Allows for consistency in instance IDs across several signals, so that
-    user software can interpret this as representative of an "object"
-    formed of a collection of signal instances.
-
-commit 6357f91717bf80769406d6778146f0ea3e7d7bd2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 26 12:09:45 2011 -0500
-
-    Fix paths for javac and Python distutils to make VPATH build successful.
-
-commit e37c5d061a03b1ac6aef63bc1cc012917cb7e550
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Nov 25 14:18:08 2011 -0800
-
-    Make Python SWIG module compile correctly on Windows.
-    
-    For this to work, distutils.cfg must be configured for mingw32, and
-    the path to swig.exe must be specified to configure in the variable
-    SWIG.
-
-commit 7f25c3acff7f5b28b0ac5e62f04f05271ba46435
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 24 15:51:17 2011 -0500
-
-    If @IP is not provided in /device, take it from the UDP source IP.
-
-commit 5f81715b021c1ceb054379f4826990b0518ca5bb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 23 12:22:50 2011 -0500
-
-    Problematic type names and header files for building SWIG extension on Windows.
-
-commit e1ded6e2bdd7e45d75888b7621c2774d96d6bf03
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 22 21:45:03 2011 -0500
-
-    Add support for exponent (scientific notation) to float lexer.
-
-commit da109b78eb762205fce87c57f19aa1c11f3af23c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 22 21:44:41 2011 -0500
-
-    Remove extraneous call to snprintf.
-
-commit a0fd1a908d46ca33a7c7750a167adc2e32f896c9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 22 21:05:58 2011 -0500
-
-    Don't switch to linear mode if the expression did not successfully compile.
-    
-    Certain float values can generate expressions incompatible with the
-    parser.  Will fix scientific notation support, but this might remain
-    true for NaN or Inf, for example.
-
-commit 5961032d2a527329f84d4c4c765b09cd99d43c83
-Merge: 63f8d5c 27e6323
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 22 16:55:38 2011 -0500
-
-    Merge remote branch 'malloch/master'
-
-commit 45784b43cf5017dc9b3d7883a42ff1d5c76bab57
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 22 14:09:28 2011 -0500
-
-    Don't reallocate signal memory for signals with no expression (ie. direct).
-
-commit 4c25ca3ea3d55655bd62fedc2908447db7fca07f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 14 18:49:30 2011 -0500
-
-    Fixed freeing of connection_instances when connections are removed.
-
-commit a1d542064cb92d0ffa9e18f29632dae9d2fbaeb0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 7 14:08:13 2011 -0500
-
-    Removed some whitespace.
-
-commit 73446d3dfec217252a4a61491206eae0566b0ff2
-Merge: 1be25a1 27e6323
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 7 10:09:32 2011 -0500
-
-    Merge branch 'master' into instances
-
-commit 27e632323d8357ad7337f758826003017c21b368
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Nov 4 14:02:58 2011 -0400
-
-    Added capability to process requests for subsets of connection data.
-
-commit 1be25a199af43a790be5a052ff31dd9c6e9d3844
-Merge: f55bb75 f940ad3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 1 14:39:26 2011 -0400
-
-    Merge branch 'master' into instances
-
-commit f55bb75ced88a9e0731fc63e57974559b1ae537c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 25 11:10:18 2011 -0400
-
-    Fixed indexing bug and removed reference to input_vector in mapper_expr_evaluate().
-
-commit 6a059d10936dfb016c3f5ebc8fcf0f992bbf62df
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Oct 25 11:09:17 2011 -0400
-
-    Moved expression data structures back into expression.c. Added functions for retrieving history sizes from an expr object.
-
-commit 0cbea450bdad094817b62326a6a187bb0906e93f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 24 18:42:36 2011 -0400
-
-    Pass input and output vector sizes back from expression generator for use in reallocating instance memory. Pull out signal_history reallocation into function mhist_realloc, and switch to using realloc() when possible.
-
-commit 1a5ca136eeac3e8d1fe8bc82b0fc78aa1d3ed1db
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 31 12:09:30 2011 -0400
-
-    Adapted /<device>/signals/get messages to permit requests for subsets of namespace by index. This is a work-around to address lost UDP packets when reporting very large namespaces.
-
-commit a1cefa45ca5947eed841b8ba4d4a898d87e9f823
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 28 18:05:31 2011 -0400
-
-    Added query support.
-
-commit 56814a951391469798244fcfa5fc4f4d4d751208
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 28 16:37:54 2011 -0400
-
-    Updated signal addition methods in python bindings to match arguments in C API.
-
-commit f940ad374515a80d6045247bdc2ed214e55996d4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 1 13:38:11 2011 -0400
-
-    Fixed bug in db storage of range data.
-
-commit 1894bbd73d5239a02a81bf6709bac9d7f62c46a0
-Merge: 29d6d45 d7b1831
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 1 13:32:54 2011 -0400
-
-    Merge remote-tracking branch 'steve/master' into fix_merge
-
-commit 29d6d4558d851cfc3fc996c33a48b66d8c2e853f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 1 13:28:14 2011 -0400
-
-    Removed reference to network topology limitation, since client-server is actually a subset of possible libmapper topologies.
-
-commit 63f8d5c6fea595cbf958bdfa7259dd5fc3434900
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Oct 14 16:36:59 2011 -0400
-
-    Remove hostname information from /device and /linkTo messages.
-    
-    The handler still parses out the @ip property in case it is provided.
-    Not only for backward compatibility -- perhaps there could be devices
-    which really do need to provide it.  However, if not provided, it is
-    extracted from the UDP sender info via liblo.
-
-commit 3d13660f1d8c4b53d1ac6ad77f09736478beaede
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Oct 14 16:16:17 2011 -0400
-
-    In /linkTo handler, ignore provided hostname and use UDP sender info instead.
-
-commit d7b1831fa84450be8e88488143f8e1c04e9c9e15
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Oct 14 15:02:11 2011 -0400
-
-    Seed the random number generator.
-
-commit 1e47f4c3102337ce9c3eaca4e46e4aa9017c61dc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 2 15:16:49 2011 -0400
-
-    Updated query handler to handle instances, signal_history data structure.
-
-commit c48cb7bf8e49e7a872ee56a42fcb924a0b2e7c17
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 2 13:43:35 2011 -0400
-
-    Added functions for retrieving a list of active or reserved instances owned by a signal, and iterating through the list.
-
-commit 4bca6d29930f5b5c3d4e8e8201566757781c3d80
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Oct 2 13:24:37 2011 -0400
-
-    Renamed sig->input to sig->active; renamed msig_set_stealing_mode to msig_set_instance_allocation_mode; added msig_num_active_instances.
-
-commit 768261ca09835be74c68867e52a9b2ea960d78c0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 30 17:44:27 2011 -0400
-
-    Renamed stealing_type to mapper_instance_allocation_type.
-
-commit 3017c9cce127cb59da3c8ad26ab9356f008703c3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 30 14:07:00 2011 -0400
-
-    Added functions for getting number of reserved instances and for setting a signal's voice-stealing mode.
-
-commit b8a590a73ab2d4c14fcf70d1bd6577dcb672666e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 30 13:47:06 2011 -0400
-
-    Added number of instances to stored/reported signal properties.
-
-commit 5a88a1ad96f06a80e7b0fb7fd21f4ac8e699c55f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 30 11:36:47 2011 -0400
-
-    Simplifying instances API according to discussion on email list.
-
-commit 985af780b9f7f8a0dcca6d975eddc5c7e55755c9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 28 16:08:21 2011 -0400
-
-    Fixed index in instance handler.
-
-commit 6bd80b52b20fb36fd72e46f3764990c364877c3e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 28 13:16:41 2011 -0400
-
-    Now using mapper_signal_value_t only in expression evaluator. All tests run successfully.
-
-commit 93a89e8aa9b61bd8f6f3635a83be855492d12036
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 27 23:11:11 2011 -0400
-
-    Fixed vector indexing in handler functions.
-
-commit f4a40eeaab7663b2b57e2baf726725b7c161585c
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 27 22:26:12 2011 -0400
-
-    Fixed instance memory allocation bug.
-
-commit 7b602f0714d591857ea3faa00a1020b28935375a
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 27 21:43:11 2011 -0400
-
-    Initialize length property; don't free unallocated memory.
-
-commit 0093047e855b4d84702a75198fcf962f5b7d2723
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 27 16:45:53 2011 -0400
-
-    Finished converting internal values to mapper_signal_value_t. Moved vector processing iteration to connection and expression evaluators.
-
-commit 42dfec1f779a6f1686f5da4d0f64f88ae1e1d597
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 27 07:35:59 2011 -0400
-
-    Switching internal representation of signal values to mapper_signal_value_t union (not finished).
-
-commit 40063a3ca0e5d5c0880e84c0f648814cbf1f6fe3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 25 11:17:59 2011 -0400
-
-    Added function for finding the current value of an instance; fixed some value indexing bugs.
-
-commit 6135f92320e28c64362994dfb6be91a050e8ef22
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 25 09:57:22 2011 -0400
-
-    Added function for returning containing signal of a signal_instance; added comment on copying output history on expression change.
-
-commit 70fe08609864c092ac939efdd124e670aad36837
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 23 00:19:07 2011 -0400
-
-    Copy old history values into new arrays when reallocating instance histories.
-
-commit 1708fc1ef47c05d09678b41b4344a41a0a7e203a
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 22 21:41:55 2011 -0400
-
-    Simple integration of optional voice-stealing when fetching reserved instances.
-
-commit 5853c8d35bfc12a9a8c712fa306149bca806e469
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 20 17:58:45 2011 -0400
-
-    Updated roadmap
-
-commit b3f04b0060c445a2084a3cb567f52294ca7e407a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 19 18:16:49 2011 -0400
-
-    Fixed and added some documentation.
-
-commit d1bbe8524d67d67d9ab6c19d64815958779c696c
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 15 22:46:20 2011 -0400
-
-    Fixed bugs when freeing memory.
-
-commit 271e4eece44ff211d568702d1402b937a423ad22
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 15 17:09:34 2011 -0400
-
-    Rearranged some of API: added msig_fetch_reserved_instance, msig_get_instance_by_id, msig_get_instance_id; rewrote msig_resume_instance. Added is_active flag to signal instances.
-
-commit 3dfa0eb9ee0ab2d6665523ead5b9541c0d8dbadd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 15 09:36:00 2011 -0400
-
-    Added function msig_update_instance_by_id.
-
-commit d475986ecc09369f8f5c1222a026694ebf0c90bb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 14 17:27:07 2011 -0400
-
-    Set history_size for signal when reallocating history arrays.
-
-commit e4f57ee483c7721e30906f4789a5443d7bb786d5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 14 14:57:57 2011 -0400
-
-    Call msig_reallocate_instances when expression is modified after mode change.
-
-commit 01ce3650b14f82a9c074390d1a2917e9fc3fd092
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 14 14:32:52 2011 -0400
-
-    Removed stray debug printf
-
-commit ab7981711002e89d9e88ea1d9414832c84348dcf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 14 14:23:40 2011 -0400
-
-    Call signal handler if signal instance handler doesn't exist; delete instance and query methods from lo_server when a signal is removed.
-
-commit 1b15a2907eb33072699faa5dc160b79a15bc9b2a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 14 14:22:03 2011 -0400
-
-    Was copying timetags into incorrect memory location; try iniating all instances with proper id.
-
-commit 2372211299193c3de6a35eb09acd5e3452edfcbd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 13 23:31:16 2011 -0400
-
-    Track input and output history vector lengths separately in expression parser and allocate instance history arrays correspondingly.
-
-commit 45d645957994b84a92e97dcd8ddfca04740137d0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 13 23:25:12 2011 -0400
-
-    Reallocate instance history vectors AFTER changing connection type to MO_EXPRESSION.
-
-commit 6c8f044ab830d5c1d343464b1088d8ed6e444260
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 12 18:27:34 2011 -0400
-
-    Added message counting and success/failure message.
-
-commit 81392e26e32c0842bd08c8142e7a8742d1c919b1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 12 18:12:23 2011 -0400
-
-    Rewrote most of msig_reallocate_instances.
-
-commit 9d44c3fb38e05b3b87e06428bc3862da93faf8f9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 12 12:09:43 2011 -0400
-
-    Fixed segfault on removal of connections.
-
-commit f8644eccefd0a3f0e5f0ebb1042fb84d5a17f5c4
-Merge: b55dfa8 2a0e4f8
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Sat Sep 10 00:52:24 2011 -0400
-
-    Merge branch 'master' into instances
-
-commit b55dfa8d6a96a974cf8fa76c34c15e927a6c2ea1
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 9 23:18:30 2011 -0400
-
-    Removed some commented code; fixed notes.
-
-commit 9d89e76962ff11cb89e8094c3f39c4f3b568986c
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 9 23:03:20 2011 -0400
-
-    Renamed mapper_connection_free_instance to msig_free_connection_instance
-
-commit f1e3e0db0cf4bae81850f75536a8b8306e653bfd
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 9 23:01:17 2011 -0400
-
-    updated calls to mval_add_to_message to use new arguments.
-
-commit 2b1fe0c375f016f24514af8ad7b38a5516d94518
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 9 22:40:15 2011 -0400
-
-    Fixed pointer bug in msig_suspend_instance; removed debug statements.
-
-commit 801087358b1515363ead5278cd92b670e0ada267
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 9 17:27:36 2011 -0400
-
-    Corrected passing of pointer to signal instances to expression evaluator; debugging signal instance linked-lists.
-
-commit e60b0b08f8a5326c32afa3cbb5c770e3eb7fe9bf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 8 22:20:26 2011 -0400
-
-    Fixed sending of NULL signals (for terminating instances). Store handler pointer on creation of instances.
-
-commit 4bf1d69782c3f1395cc3154181e42277fb9fb596
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 8 17:02:31 2011 -0400
-
-    Debugging instance handlers.
-
-commit 9d6a1644e198a72ab5b8f4be67483d085b0f3dc1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 8 09:42:34 2011 -0400
-
-    Adjusting instance handlers.
-
-commit 04490746bf9a648074da66427bca5e7d57d54930
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 7 23:08:06 2011 -0400
-
-    Added function msig_reserve_instances; update creation time when instance is created or resumed; handle void instance updates.
-
-commit 1903932a34147a991b3e2367879b937bf2b8ae2a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Sep 7 16:07:47 2011 -0400
-
-    Work on main loop in testinstance.
-
-commit cd4d21bbb928e0e4b5ebceff46f9a130904ec0fd
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 6 18:19:02 2011 -0400
-
-    Working out usage of instance handlers, added data type for voice-stealing strategies.
-
-commit 73b6c7cfc0222421e3b824056f14dbc525e883eb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 6 12:09:37 2011 -0400
-
-    Adding instance handlers; cleaning instance ids; simplified mval_add_to_message function; adapted mapper_router_send_signal for sending connection instances.
-
-commit 071cfadbee70cac20b56a2351fdc9316feec8378
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 6 12:06:59 2011 -0400
-
-    Adapting testinstance.
-
-commit 635ef600fc79201f89b0c2462e276ddf44e736ed
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 17:58:56 2011 -0400
-
-    Renamed unused file testdynamic.c to testinstance.c - will adapt for testing signal instances/polyphony.
-
-commit 47a81aaf0fa455993e64c953d4c7bbcec7068270
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 17:19:57 2011 -0400
-
-    When reallocating instance history, make sure size is at least 1.
-
-commit 8f5188ace4ad90ec2ba41b3a7afd4d4412db1dfe
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 13:31:00 2011 -0400
-
-    Made history vector size minimum 1 instead of 0; fix for indexing history vector.
-
-commit ee47f8e2b825ee6d017fd7a0e769894d61a44748
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 10:41:11 2011 -0400
-
-    Renamed msig_send_signal to msig_send_instance. Simplified signal update functions.
-
-commit 9bd0aa19596297207661790bb267bfef1f80c7a5
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 10:39:39 2011 -0400
-
-    Update instance input vector before calling mapper_expr_evaluate - test now computes correct output.
-
-commit f3dc2ca2bc9740df783fe1c4cee21fd2e9f697f8
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 10:35:53 2011 -0400
-
-    Added notes on changes to be made after full vector support.
-
-commit d344796cb9e09d1b0b5dbaa1f5f4e2d6355898f7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 09:29:30 2011 -0400
-
-    Adapted testparser for instances.
-
-commit bd5b2409e5ee2f866119576537abadc7009c40b0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 2 09:29:00 2011 -0400
-
-    Fixing connection and expression bugs.
-
-commit a7ffae2b0b98e36e5c59ef226acc8e13e3147b84
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 1 12:07:13 2011 -0400
-
-    Moved some expression data structure declarations to header file; added reallocation of instance histories to msig_reallocate_instances. Compiles except for testparser.
-
-commit 5ce948a1aaa9561f41f193e183afd4031eac710e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Aug 31 08:55:03 2011 -0400
-
-    Revised some function calls for handling instances instead of signals; removed unused routing function mdev_route_signal; added contents of msig_update_instance function.
-
-commit 1c83d36b1e3e5a22cc36834cf96bfc03c4923ee8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 29 09:16:47 2011 -0400
-
-    Rearranging structure of signal flow.
-
-commit eede68f465b2db5a43a10b45378240bcc1ffc57a
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 26 18:44:43 2011 -0400
-
-    Working on expressions.
-
-commit f31b5e569355e06e7c53881e26a2772c24537996
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Thu Aug 25 17:35:06 2011 -0400
-
-    Split instance data structure into signal instances and connection instances, moved value history valiables and data into struct. Not yet working.
-
-commit 2dbf394c8ed78e6d2f96be6e7657a451d5cf4176
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Aug 17 15:40:39 2011 -0400
-
-    Fix for msig_kill_instance()
-
-commit ae0a16ba1a29eb5cd60036124523e4f1cb92212d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 12 18:06:39 2011 -0400
-
-    Preliminary work on adding support for instances/polyphonic mappings.
-
-commit 2a0e4f8a5db3d53549bde21e2269c750bccc05e3
-Author: Joseph Malloch <joseph.malloch at mcgill.ca>
-Date:   Sat Jun 25 22:53:57 2011 -0400
-
-    Fixed bug in clipping function producing wrong output when range minimum > maximum.
-
-commit cdf9b3cf0840e282f33c39b5f589580bc95b3771
-Merge: 3094964 bc6e4aa
-Author: Joseph Malloch <joseph.malloch at mcgill.ca>
-Date:   Fri Jun 17 15:22:56 2011 -0400
-
-    Merge remote-tracking branch 'steve/master'
-
-commit bc6e4aa197af65cf11d5253897673350f36c14d4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 18:32:50 2011 -0400
-
-    Bump version to 0.2.
-
-commit ba56e6a5b02d8c8266ee47b77e3bf8e9e50ba745
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri May 27 16:05:54 2011 -0400
-
-    Specify pkg-config path when building binaries.
-
-commit 70e0aa51ac704294a198198f4f9957da8b73852d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri May 27 15:07:30 2011 -0400
-
-    Fix some warnings about undeclared functions and uninitialized variables.
-
-commit 8bbd5096d7a19cc460f14079b51d17efb9e69048
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri May 27 12:16:45 2011 -0400
-
-    Don't use 'find' to look for Python extensions during binary build.
-
-commit 30949645f54e25bd3aa088c932dd85dfeb8900ce
-Merge: b5c7747 97baf94
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri May 27 09:59:56 2011 -0400
-
-    Merge branch 'master' of github.com:malloch/libmapper
-
-commit b5c7747942ed7e1f9300d1760d61585100997d65
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri May 27 09:59:35 2011 -0400
-
-    Fixed messy arrowhead in icon omnigraffle file.
-
-commit 8febcb8dbdd282a58612cd3df9a08cc3460c0941
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 22:35:28 2011 -0400
-
-    Change all instances of the noun "mapping" to "connection."
-    
-    After much deliberation, the decision was made that the word
-    "connection" is less confusing and more consistent for representing
-    the relationship between a single output and a single input.  The noun
-    "mapping" is now reserved for refering to a _set_ of particular
-    connections and their associated properties.
-
-commit ad27b5697e17717dbe50f96c3180562fcfa02096
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 18:57:19 2011 -0400
-
-    Ensure install_name_tool succeeds.
-
-commit b19460e93b34f0ea4f46005cb677b8a5076ea248
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 18:37:31 2011 -0400
-
-    JNI bindings: fix a bad return type.
-
-commit 6c186215f07b4cb879eb37eb717eac46f823ea13
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed May 18 08:01:11 2011 -0400
-
-    Changed unit conversion macro names: midi2hz -> midiToHz, hz2midi -> hzToMidi.
-
-commit 6c9b19ae86f8a0e04201a2bf89e61fda0e344ce6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 17:15:53 2011 -0400
-
-    JNI bindings: add .java and .h files to dist.
-    
-    Ensure .class dependencies don't get messed up by '$' in the filename,
-    by keeping these in a separate list.
-
-commit d530f32433e362115247c28bd4fade23002b26c7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 16:20:57 2011 -0400
-
-    JNI bindings: detect JDK paths correctly on Linux and OS X.
-
-commit fe7eabf5c8ba3a4bc83f911a25baafeb1e99e0ab
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 16:09:19 2011 -0400
-
-    SWIG bindings: Use configured version in setup.py.
-
-commit c1eb6cffdcd37ab5a792a9df5663162d89e495fb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu May 26 15:12:23 2011 -0400
-
-    JNI bindings: Pass value array to input handler.
-
-commit 97baf94f1381a6eacbf2b2944035b8d7218ca486
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed May 18 08:01:11 2011 -0400
-
-    Changed unit conversion macro names: midi2hz -> midiToHz, hz2midi -> hzToMidi.
-
-commit dfecb0a551ea3bc2f059c50e9be3d1c81c2b7057
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri May 6 16:41:13 2011 -0400
-
-    SWIG bindings: input handler's 'tt' parameter should be a pointer.
-
-commit e1e6de271e0192bc4616eccf2f723e91dc2e4e97
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri May 6 16:17:27 2011 -0400
-
-    SWIG bindings: return None in input handler if value is null.
-
-commit 722516ef7602553e6df6f183e6f77d805527232c
-Merge: 7882a5b 04918f5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue May 3 17:06:53 2011 -0400
-
-    Merge branch 'mingw'
-
-commit 04918f5fedc39a143c4d7da65f3d3be106ce9996
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue May 3 11:35:29 2011 -0700
-
-    If library compiled as Windows DLL, link tests to object files directly.
-    
-    The tests refer to the internal API which is not exported by the DLL,
-    so this is the only way to compile the tests in this case.
-
-commit 7882a5b70db113115d5a67690c394ab32e4a61a2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue May 3 11:39:28 2011 -0400
-
-    Added functions midi2hz() and hz2midi() to expression parser.
-
-commit 1b661f38129b174df38c9508baac4c91be2313a9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue May 3 10:21:27 2011 -0400
-
-    Added modulus operator to expression parser/evaluator.
-
-commit 2ac73235c02e6d506c723174b970134f9c73a737
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon May 2 17:25:35 2011 -0400
-
-    Add a Windows DLL .def file to list library exports.
-
-commit 613ca67b4a9ed95a41a58ecdc098c7189be9ad4c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon May 2 15:51:49 2011 -0700
-
-    On Windows, look only at valid adapters.
-
-commit b5be5d1ab03c3cca78cf6a77d5903f3171ae383b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon May 2 15:51:31 2011 -0700
-
-    On Windows, use Sleep() instead of usleep().
-
-commit 93a59083c5e0d51b33b8ce93321fa71609e8d415
-Author: Stephen Sinclair <sinclair at music.mcgill.ca>
-Date:   Fri Apr 29 11:00:50 2011 -0400
-
-    Remove the hack for pkg-config, we'll use it actually.
-
-commit 072be04efd234e2be3b10d64bd73a61dd792490c
-Author: Stephen Sinclair <sinclair at music.mcgill.ca>
-Date:   Thu Apr 28 23:07:38 2011 -0400
-
-    Detect Windows libraries and compile successfully using autotools cross-compilation.
-    
-    Notable changes:
-      - pkg-config is not used when cross-compiling
-      - audio example is disabled properly when audio system not found
-      - could not use a field called "interface" due to something in
-        Windows headers, so admin struct field was changed to
-        "interface_name"
-      - reimplementation of get_interface_addr() in admin.c using
-        GetAdaptersAddresses
-      - windows compilation currently only works if JNI and SWIG are
-        explictly disabled
-    
-    TODO: test doesn't run, "cannot find free port"
-          replace gettimeofday()
-
-commit af4bf044e7e96d7210f267eec2d8d9ea07f85d73
-Merge: bcb9151 ab09baf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 27 14:28:59 2011 -0400
-
-    Merge remote branch 'steve/master'
-
-commit bcb91514c44eddbb1f9b62bc93fec238c2303ee6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Apr 19 17:14:25 2011 -0400
-
-    Check if msig_new fails before proceeding.
-
-commit a5d6005a3b78a3e6440f2a69c160c89bb904f264
-Author: Joseph Malloch <joseph.malloch at mcgill.ca>
-Date:   Tue Apr 19 16:29:07 2011 -0400
-
-    Added some vector signals to test.c
-
-commit a1894c48bb05170de0cbb08af5cbc7745fa57a37
-Author: Joseph Malloch <joseph.malloch at mcgill.ca>
-Date:   Mon Apr 18 15:14:01 2011 -0400
-
-    update signal length property in db record
-
-commit ab09baf8642fa6ac9f5824595a08539fad493145
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Apr 15 20:44:21 2011 -0400
-
-    Check for non-existent router or mapping in handler_signal_disconnect().
-
-commit 3cf727cb1f31c15ac031d86d78db49558f1619b7
-Merge: 1aa6f65 6ddd534
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Apr 13 12:50:22 2011 -0400
-
-    Merge remote branch 'steve/master'
-
-commit 6ddd534ff9a9efe835fd612f8a640cc7dcad2b4e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 13 11:09:46 2011 -0400
-
-    SWIG bindings: Default properties are null for mapper.connect.
-
-commit 065e12b7794fed3303869e3226c0dbbd7662c82a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 12 15:45:10 2011 -0400
-
-    Include src_type, dest_type, src_length and dest_length in /connected messages.
-
-commit 8ae46c5674fc3467394dcfc1b1996a7c050e99c5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 12 15:48:03 2011 -0400
-
-    SWIG bindings: Apparently need to add mapper_wrap.c as dependency for install hook.
-
-commit 1aa6f652618f20721dbca340c6b70fcdf921ccf4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 8 13:22:00 2011 -0400
-
-    Added units to signal properties sent over admin bus; added example units to test.c
-
-commit b21aa37f146e161df09644e512c9de5d65c6778e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 5 17:49:12 2011 -0400
-
-    Add API function stubs to deal with timetag sending and receiving.
-
-commit 78589b653c5828157a2d1056b82e0163dfc6ade4
-Merge: a4968a3 2d657fa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Apr 6 16:25:45 2011 -0400
-
-    Merge remote branch 'malloch/master' into timetags
-
-commit a4968a3062f1d0e951b6ff2716fc97ca373a0dc7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 5 11:04:59 2011 -0400
-
-    Explicitly link to the math library.
-
-commit c276da2901b0a639f3dbaccf8545f32831cc6d39
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 5 10:54:39 2011 -0400
-
-    Add a libtool macro to check for the math library.
-
-commit 5e1994e54b1e4a3499502a15c993ff41e4c92e82
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Apr 5 10:52:02 2011 -0400
-
-    SWIG bindings: Perform Python's install step on "make install".
-
-commit 9cf0c1e3b298df31e393bd4255affb6cb84f8325
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Apr 4 16:12:49 2011 -0400
-
-    SWIG bindings: use longs instead of ints to store opaque pointers.
-    
-    Was crashing on 64-bit systems.
-
-commit c1721bae14c0d1d7f0e8710427a209f2ddc9e507
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Mar 30 15:04:29 2011 -0400
-
-    SWIG bindings: Add a required header for OS X.
-    
-    Apparently not including arpa/inet.h leads to a segfault if
-    inet_ntoa() is called.  (Probably was passing bad data into it too,
-    since wrong data type was being passed as argument.)
-
-commit 2d657fa00f625832c5b1ebfece2deeb447fbd0d8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 30 15:27:44 2011 -0400
-
-    Fixed bug when trying to calibrate with integer-typed source signal.
-
-commit 90cf88c76cd7619723ed63cab61c3a49bab7fbe1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 29 22:02:29 2011 -0400
-
-    Integrated device's update flag into bit flags.
-
-commit 90bffe389ec5641a7438c48f6650677f5f617462
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 25 16:00:59 2011 -0400
-
-    Moved paragraph on state queries and implicit mapping from known-limitations section to advantages-of-libmapper section.
-
-commit db077aa00533f81a2c6059ca733bf656de0f52bf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 25 12:06:43 2011 -0400
-
-    Only respond once to identical information requests in a given polling step (e.g. from multiple monitors on the network).
-
-commit e94b0c02dcdbac654047264f56169b098a169575
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 23 15:50:50 2011 -0400
-
-    Added check for null router return in handler_device_linkTo.
-
-commit f4bb3bf3eef00456106c68617858f0ab7fca3990
-Merge: 4b76192 4c718ea
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 23 15:45:23 2011 -0400
-
-    Merge branch 'null-signals'
-
-commit 4b76192d26fc1754beee180094920ed185114296
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 21 17:35:10 2011 -0400
-
-    Changed second argument of msig_query_remote from void* to mapper_signal; added documentation for return value.
-
-commit b0faa9b9f3313ba38770b73839f5780a9556d064
-Merge: ac6dfd7 5b366f7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 16:16:19 2011 -0400
-
-    Merge branch 'jni'
-
-commit 5b366f723b908e2d6fc598c792246a4f03d8936d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 16:15:29 2011 -0400
-
-    JNI bindings: put the major version number into the name of the .jar file.
-
-commit bd683b906f924facb72c4531e0c0b31561b54127
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 16:06:30 2011 -0400
-
-    JNI bindings: allow specifying the path to the JDK during configure.
-
-commit cf6d60aa6b39f86ea70ffdd94dad78ecb7a80c99
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 15:02:44 2011 -0400
-
-    JNI bindings: move class list to a single place in makefile, touch headers.
-    
-    Using touch avoids re-running javah on every build, since it seems to
-    not update the file timestamps if they already exist.
-
-commit f316562383fe7878e7f42c5b1bae9ca8206a0681
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 14:42:30 2011 -0400
-
-    JNI bindings: build a jar file.
-
-commit daf8775554d9dbda3439af99a8297d33ad3ddada
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 12:17:16 2011 -0400
-
-    JNI bindings: generate the native library name using autoconf.
-
-commit e234ac2ce7b9e5fa88d0376db37c1773c97178b7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 02:30:07 2011 -0400
-
-    JNI bindings: look for javah properly, check two locations for jni.h.
-
-commit cc93342075b820f1014e44ce003af106bd23f6fc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 02:11:13 2011 -0400
-
-    JNI bindings: signal properties.
-
-commit 878591bee277bd850bfb645a25851522e7a4f953
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 00:47:29 2011 -0400
-
-    JNI bindings: delete global references created during add_input.
-
-commit 9e0955a53c8190468a7ff6c1acd95fd3c1ac6893
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 00:35:51 2011 -0400
-
-    JNI bindings: add_hidden_input and query_remote functions.
-
-commit 7f3ec71e99f89e3672d66287474ffc5ab7ebb9ca
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 20 00:08:59 2011 -0400
-
-    JNI bindings: remove some printfs used during development.
-
-commit d1b2b4842bbef247c506b463cdda0dd6f28cd323
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Mar 19 23:20:46 2011 -0400
-
-    JNI bindings: set and remove signal properties.
-
-commit 589e4ed0cac2e6fb2ab9bc5678a9b3c287a50838
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Mar 18 23:39:11 2011 -0400
-
-    JNI bindings: set and remove device properties.
-
-commit 74f4fb953a54c520a9e9c6b247dae9f159f11a71
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Mar 18 22:35:02 2011 -0400
-
-    JNI bindings: declare generated headers correctly for automake.
-
-commit 889b52dd36010b8ddf8936500e4928b5bf52723a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 17 23:23:14 2011 -0400
-
-    JNI bindings: functions for Signal.
-
-commit 2bf5204308b5a1d26c713d47cddb94f94d9aefe1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 17 22:41:56 2011 -0400
-
-    JNI bindings: convert mapper_signal pointers from jlongs.
-
-commit 8c76e54b8996f3635f1a3d5d8f01f8541a8edd37
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 17 15:36:41 2011 -0400
-
-    JNI bindings: all device functions except properties.
-
-commit b8cc9d862e18fe8b0d470e5e72f294b96bb4d14b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Mar 17 15:01:07 2011 -0400
-
-    JNI bindings: put device checking code for Device.Signal in a function.
-
-commit afbe8eb3e2e0d71ee44e6f3c8c81c9b9eccc5f3e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Mar 16 23:50:06 2011 -0400
-
-    JNI bindings: bail out of the callback chain if an exception occurs.
-
-commit 2a7e39599e751491429d42148b04813052c7ffcf
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 15 18:16:23 2011 -0400
-
-    JNI bindings: Retain ref to Device in Signal and potentially throw NullPointerExceptions.
-
-commit ac6dfd764212bc834576305f61803fec568b4c56
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Mar 16 15:46:42 2011 -0400
-
-    Fix unfinished sentence in tutorial.
-
-commit 4c718ea75a1bc9ffd7ac409f5c06f02c5c9c8f40
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 16 11:41:20 2011 -0400
-
-    Reverted to passing signal value pointer in signal callback functions, and also added pointer to signal props since type and length are needed to parse value anyway. If the signal has no value, pass NULL. Receipt of empty signal message now sets has_value property to 0.
-
-commit aa7388ba6c013d62eeb193effeb95128136539d9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 16 11:18:51 2011 -0400
-
-    Moved signal has_value property to mapper_db_signal data structure.
-
-commit 3e7a81d99ceda8cdf7634935934419407627fd63
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 15 18:14:40 2011 -0400
-
-    JNI bindings: get signal name.
-
-commit cf6a1bf39a78f8e2f6a2165541e592157bf639af
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 15 17:57:53 2011 -0400
-
-    JNI bindings: add output signal to device.
-
-commit 8bbc919a3d8eb953972822c6408146206b92d644
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Mar 7 14:05:31 2011 -0500
-
-    JNI bindings: macros to convert between void* and jlong.
-
-commit 036a5b6d5f576a520838bf3c91267c21e2301998
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Mar 7 13:22:25 2011 -0500
-
-    JNI bindings: call input signal listener.
-    
-    Works, but needs improvement: JVM environment is passed through a
-    global (not thread-safe), and a global reference to the listener is
-    created which is never deleted.
-
-commit 093b95180191a395118ab5b829afb63bc79a1f5a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Mar 7 11:16:41 2011 -0500
-
-    JNI bindings: Add an input signal.  Everything but handler works.
-    
-    Note: Only passes min/max information by reference as Double.  If I
-    override the function to also pass min/max as Float, Integer, etc,
-    then passing 'null' results in javac complaining about type ambiguity.
-
-commit 61c95bb96efd37a270b8a52ad1e3e38ba8b06bf0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Mar 7 10:39:58 2011 -0500
-
-    JNI bindings: Ensure device is freed on program exit in test.java.
-
-commit 61478f432704c315cea9792443f94451ba54e913
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Mar 11 13:09:24 2011 -0500
-
-    added functions for retrieving number of hidden inputs and device signals
-
-commit b86a9a5788713208afd80a9dcb1bdb67edb53bce
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 8 17:16:47 2011 -0500
-
-    Changed declaration of signal handler to match current (experimental) usage
-
-commit c62b310e2fb6f7db9ac11b315461a890b548d21b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Mar 7 11:13:56 2011 -0500
-
-    Altered testquery program to test empty query responses.
-
-commit 8b23f554bd02e6f1909bacd170cb112ea31c2b46
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Mar 6 19:46:18 2011 -0500
-
-    Added methods for sending and receiving empty messages (OSC string + NIL). Altered arguments sent to signal callback functions, and updated test programs accordingly.
-
-commit 50a51dffbc3c23365e044723153d6263f7a763af
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 6 18:53:32 2011 -0500
-
-    JNI bindings: Can create and poll a device.
-
-commit cf6b1a1387ed4e223b39629ff6927a7ff7dc1581
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 6 18:05:07 2011 -0500
-
-    JNI bindings: Move code from a "Mapper" class into a "Device" class inside a "Mapper" package.
-
-commit a814e011ced8cf3a31c7fae6d436b06e2bbcd8a3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Mar 6 17:37:02 2011 -0500
-
-    JNI bindings: Add a skeleton for configuring and compiling the JNI bindings.
-
-commit 8b8f571230d576ed85f55f8fe1ad96d30ce4e65f
-Merge: 415518f 037403e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 3 17:59:21 2011 -0500
-
-    Merge branch 'queries'
-
-commit 037403ed92d8ca2aa4e3d6643d1ca9fa452193a0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 1 14:16:19 2011 -0500
-
-    Moved msig_query_remote from mapper_internal.h to mapper.h
-
-commit 32aac9522116363ba177cf3786460b1e72ba46ac
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Mar 1 12:06:50 2011 -0500
-
-    Fixed memory allocation bug causing crashes when registering queriable inputs after server start.
-
-commit fb3b02f4d8236360554856d47e1aa19812481a85
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 22:00:11 2011 -0500
-
-    Fixed error message.
-
-commit ec2c48ac62accfad444bd5be0621629830e3fec8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 21:59:22 2011 -0500
-
-    Added testdynamic.c
-
-commit b48f4835931a961f8892168eca59787b37cad98e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 20:42:03 2011 -0500
-
-    Decrement tally when removing hidden inputs.
-
-commit 1b5e86a32df488150d4018a09da319a600fa8fd6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 17:39:02 2011 -0500
-
-    Removed some old comments.
-
-commit 27e8885b66e1bd898b4b454e768f035fd3490f18
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 17:38:13 2011 -0500
-
-    Set hidden property to 0 in msig_new().
-
-commit 599bc33e3afa4eb536b771ee28017666b02063bb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 11:08:14 2011 -0500
-
-    Set sig->has_value to 1 when updating signal.
-
-commit 3567e418cb7143ca48eeae269024de8322ebcf77
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Feb 28 11:04:12 2011 -0500
-
-    Check if signal has a value before trying to send it in response to query.
-
-commit 7bb14adc7d1b47f843408287ad7d33595aec1ea4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Feb 26 16:08:28 2011 -0500
-
-    Cleaned up testquery: fixed mistake passing pointer to mdev_add_hidden_input(), cleaned up program output.
-
-commit 687193e034aba33867063a68e6b63b9495557bb5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Feb 26 15:34:51 2011 -0500
-
-    Added function for adding hidden inputs, altered reporting of numInputs to report only public inputs. Now using hidden inputs for testquery.
-
-commit 5bf7b782a85929472c9290360ade24517b582bc8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Feb 26 14:54:39 2011 -0500
-
-    Switched to lo_send_from() for sending queries for remote signals, re-enabled vector query responses, added check for local server before sending query.
-
-commit 2a577ebda1c8973559da6e5d1e8950739cad687a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Feb 25 19:27:14 2011 -0500
-
-    Added functions for querying values of connected signals.
-
-commit 79beb9a4a29c7484ff3b41f857fbcf2a04b0dc5e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 24 17:34:18 2011 -0500
-
-    Added testquery.c for testing experimental query development (in progress).
-
-commit adbe3c4887c289b69db5a66efa3ac6a28e8825f3
-Author: malloch <joseph.malloch at gmail.com>
-Date:   Thu Feb 24 11:24:23 2011 -0500
-
-    Changed expected query message syntax: if query is sent without arguments, handler will respond using the signal name; if query contains an OSC string as an argument the response will use the string as an alias.
-
-commit 95def27d0ddeb6af0fbe0e7cf889a9f29b2d0174
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Feb 23 20:35:56 2011 -0500
-
-    Delete lo_server method for queries when signal is destroyed.
-
-commit c296aa13fd2289802352c1e6beb48c4f213eaa98
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 22 21:21:50 2011 -0500
-
-    Fixed terrible string concatenation mistake in previous commit.
-
-commit 47764f50e07fe6a2d848f348e8c3edc7a870d671
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Feb 22 19:14:26 2011 -0500
-
-    Added hidden property to signals, added OSC methods for handling value queries.
-
-commit 415518f52458a5e665ddfc2a2fe622128400e077
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 1 14:48:09 2011 -0500
-
-    Python bindings: setting device props, don't call non-existent device.get_properties().
-
-commit f6c5245c804bb0641c82583439695073994630c8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 1 14:28:22 2011 -0500
-
-    Python bindings: Release GIL before blocking in poll(), re-aquire during callbacks.
-
-commit ee18a400cdc2675e557038d033a8754e961fe912
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Mar 1 12:08:57 2011 -0500
-
-    Fix calculation of blocking time in mapper_monitor_poll().
-
-commit 271fe3de013708301b0931779e03570781fe252a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 20:43:39 2011 -0500
-
-    Python bindings: override dict for setting properties as l-value.
-
-commit 1e3ae1474d99a9f935f8072e5ecd5ac7423e83c9
-Merge: 34a518a 1aec23f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 12:03:29 2011 -0500
-
-    Merge branch 'pymon'
-
-commit 1aec23f8c024042f04ab37f64225b1c9562a3875
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 12:00:10 2011 -0500
-
-    Python bindings: Allow to set signal and device properties with a dict.
-    
-    Use it with signal's "properties" property.  Not like this for device,
-    since device doesn't yet have a "get" function for its properties.
-
-commit 34a518ac1e5f9eb66dd10e56d19e3555ded4e729
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 11:32:23 2011 -0500
-
-    Perform null checking when adding lo_args to tables.
-    
-    This helps to support OSC arguments that are contained in the type
-    string, like Nil, Infinitum, True, False, etc.
-
-commit 62c34ff19a19279e508cc59a84689f92c184bcf4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 11:30:45 2011 -0500
-
-    When sending extra params, handle types specifically.
-    
-    Calling lo_message_add with a generic lo_arg was causing problems with
-    certain types. (e.g. float)
-
-commit 9da8e4990e26166e92f3f1c714efc57048ee8799
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 11:30:04 2011 -0500
-
-    In db, parse device extra params.
-
-commit 7cac8a6ac215d6957c8257561c8c757e647b80aa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 18:22:17 2011 -0500
-
-    Python bindings: add signal/device set_property and remove_property.
-
-commit 77c29cca13e34717c358e3ee9f8a77ae492e638b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Feb 28 11:28:51 2011 -0500
-
-    Python bindings: When converting to dict, handle doubles and long ints.
-
-commit d24376f44682f6e9bbab0203f03454b35f0975e1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 18:09:33 2011 -0500
-
-    Python bindings: database callbacks.
-
-commit dd8d94ea4878747c4531b7a8fde25c7701ea92cb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 17:34:03 2011 -0500
-
-    Python bindings: use abstract sequence instead of list for mapping range.
-
-commit 9cd2ca27a97ce2233c1cfa63c762708d7b451688
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 17:31:04 2011 -0500
-
-    Python bindings: fix int->float coercion for mapping range.
-
-commit 86d92176d222258c5b7a61462f08bf59d861791b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 17:20:28 2011 -0500
-
-    Python bindings: make helper functions static.
-
-commit 181c80cdd1fb187f7d448599d20aa8a376b4833a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 17:17:52 2011 -0500
-
-    Python bindings: Wrap admin object to allow special interface/port selection.
-
-commit cca53fcbca0c61fd16fae8ce3e2409dafa71db2e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 15:28:50 2011 -0500
-
-    Python bindings: move struct to PyObject conversion to static helpers.
-    
-    Makes returning singular objects (get_link_by_src_dest_name, etc.)
-    work as expected.
-
-commit 3b051b96977fc4f131dff139ee6dada0f62f11c0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 14:29:34 2011 -0500
-
-    Python bindings: Make iterators immediately during class construction.
-
-commit f14389f571be0f52130e75925711744d5b83a876
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Feb 27 14:04:48 2011 -0500
-
-    Python bindings: Add iterators for mappings and links queries.
-
-commit 2f5dd06fa854a9048d0b0f00f8bc439aa6a0a06b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 18:53:38 2011 -0500
-
-    Python bindings: add iterators for device and signal search functions.
-
-commit 2bc4d2fc8ba0cc374b8f4c1a303c9732ceb85722
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 17:42:19 2011 -0500
-
-    Python bindings: Add iterators for mappings and links.
-
-commit 4cce51e1df76111c9804cb7a444816cdc2e350aa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 16:25:02 2011 -0500
-
-    Python bindings: Add iterators for all inputs and all outputs.
-
-commit 38d4f0487f3a2c3e426777a247e73188a2db3432
-Merge: 232f990 8fef88a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 18:58:25 2011 -0500
-
-    Merge branch 'master' into pymon
-
-commit 8fef88a3808b20dd500ad383c911b4e9a82a4e55
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 18:17:20 2011 -0500
-
-    Rename cmp_query_match_device_by_name -> cmp_query_match_devices_by_name, fix const string.
-
-commit a972b04dd32cdd139f4525d8b66e9d4c6421067b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 16:40:58 2011 -0500
-
-    In monitor, automatically request signals, links, mappings on seeing new device.
-
-commit f869602990f162d9c92a30b9a2d1c9c3e5904c30
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 16:24:36 2011 -0500
-
-    Add function mapper_monitor_request_devices(), which sends /who.
-
-commit 232f9904c2065a7c5fec955029f5d981db758cc5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 26 15:47:59 2011 -0500
-
-    Python bindings: Expose the iterable list of devices through a generator.
-
-commit 0e2724a22a8ada4c9e8fe75571cf5025f6714e84
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Feb 25 23:34:33 2011 -0500
-
-    Python bindings: expose signal.properties as a dict, add basic monitor actions.
-    
-    For monitor.connect, monitor.modify, converts an input dict to a
-    temporary mapper_db_mapping_t + flags structure which is passed on to
-    the function.
-
-commit 20a8c3d8000c7b9c12b9167e18ddf238984a66c2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Feb 19 14:50:16 2011 -0500
-
-    Don't try to trace a device name for monitor messages.
-
-commit ac51b5ac92b129910b5a6afdd6af47fb9d218188
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Feb 20 13:35:58 2011 -0500
-
-    Check to see if updated signal is output before calling mdev_route_signal()
-
-commit 459d7b269315d23167be19f55f3b4ea2093020c9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Feb 20 13:27:55 2011 -0500
-
-    Moved setting of stored signal value from mdev_route_signal() to the msig_update() functions, since this is conceptually clearer. This is especially important when updating input signal values which may never be routed.
-
-commit 1ad76b7935c91e32a18a6aee334ac13625522afb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Feb 18 13:48:27 2011 -0500
-
-    Add a little OS X App that launches the Slider example, allowing to launch it multiple times.
-
-commit 9371931c9a3472bba93c30279df62c1661be960a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Feb 3 12:12:44 2011 +0100
-
-    Make use of liblo's lo_server_new_multicast_iface() if available.
-    
-    This fixes the problem on Linux of not working when not connected to a
-    network.  In general it seems Linux does not default to using the
-    loopback NIC when not connected, therefore it must be specified
-    explicitly.
-
-commit 6e19bdc12c07c40080d43e862b71d146bb4fb36b
-Merge: ac5cda1 92129f1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 31 15:23:43 2011 +0100
-
-    Merge branch 'keep_signal_value'
-    
-    Conflicts:
-    	src/device.c
-
-commit 92129f1434395e843cfe02c734a8ae0a32d0332a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 31 15:18:42 2011 +0100
-
-    Rename msig_size to msig_vector_bytes to keep things clear.
-
-commit e4db1cc7f958734663484a9dcb4ddfa2cb7372f1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 31 15:12:26 2011 +0100
-
-    Use msig_size and memcpy, memset in a few more places.
-
-commit 07ee5a5345d12868cd271657b330ce2e5ea82a90
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 31 15:14:20 2011 +0100
-
-    Signal value is a vector so make it a void pointer instead of mapper_signal_value_t*.
-
-commit 9e98cd91b76002f8a163982d16c8dca4d271bcf2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 31 12:33:32 2011 +0100
-
-    Add a function to get a signal's vector size in bytes and use this for memcpy.
-
-commit ac5cda18a0cb1d9e2c14ee81a0080703064d60af
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 29 03:39:13 2011 +0100
-
-    Allow element-wise vector mappings.
-    
-    This doesn't implement full vector support, i.e., N-to-M expressions,
-    but in the meantime it applies the expression to each element in a
-    vector to allow N-to-N mappings.  Vector indexing is disallowed.
-
-commit fd88e0d3b9e7d0b7af90d350dcb8cf8fc00bc665
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 28 11:13:38 2011 -0500
-
-    update to roadmap
-
-commit 223368b5effbb7e4ef36b58aedaddd0438950b3e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 28 11:08:05 2011 -0500
-
-    Delete corresponding liblo server method when input signal is removed.
-
-commit 007942d4f37a59bc5057edebc2377e3843f5e875
-Merge: 3ee63f1 219ef6d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jan 26 22:48:50 2011 -0500
-
-    Merge branch 'master' of github.com:malloch/libmapper
-
-commit 3ee63f1fb1891d4d667539b3a1652a31bad1e006
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jan 26 09:52:40 2011 -0500
-
-    Added local storage of signal value to be used for state queries.
-
-commit 219ef6dfb5574b933fa6a8fa10bcbb53794bd0d6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Jan 23 03:30:57 2011 +0800
-
-    Make sure to free the type string allocated in mdev_add_input.
-
-commit a7abc6502cb38cbcec464f9050ef40dbe22b9e63
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 22 14:30:57 2011 -0500
-
-    Make sure to free the type string allocated in mdev_add_input.
-
-commit fc88cfee12fd485f77a4c6f29b5fa8809ddb0cfe
-Author: Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 21 17:22:45 2011 -0500
-
-    Input signals added after device registration were not being added to OSC server.
-
-commit fdbc11238951299a3685408dbadd624d83f586a2
-Author: Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jan 21 16:54:58 2011 -0500
-
-    Once admin ordinal is known, set device_name property of exisiting signals.
-
-commit 1c0f7c69f9c263317895dad4b9d38be4b2c8d6f2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Dec 13 17:15:56 2010 -0500
-
-    If a /connect message is sent and the mapping already exists, forward the message to the handler for /connection/modify
-
-commit 3d4a1741e0ed3307a4de9de6088604988c46d1fd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Dec 13 16:37:35 2010 -0500
-
-    Slight simplification of last commit, and do not enable expression mode if setting expression fails
-
-commit 8ec6fdf9a68e08f1b63d5778145ef9e9a5641bf9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Dec 13 13:44:07 2010 -0500
-
-    Check if expression has been initialized successfully before entering expression mode; default to y=x if expression string is not set
-
-commit f0174a8463518cd8ebc582de93a0822257205770
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 20:38:06 2010 -0500
-
-    In readme, make idmil.org reference into a hyperlink.
-
-commit fc3537276d3700181e292fae40bbe3311d777e9d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 23:25:01 2010 +0000
-
-    Remove my name from the tutorial so that anyone can feel free to edit it.
-
-commit 733c9e0d89cd11d14007a7abecbe8e3db5d06853
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 23:16:48 2010 +0000
-
-    Reformat some longer lines of code in the tutorial.
-
-commit 8f4347db7ec70db2b69665cab56bb3953c4bc3c0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 10 23:16:21 2010 +0000
-
-    switched "input" and "output" to "source" and "destination" in README for clarity (they were also backwards)
-
-commit bc1b66b309e900af94b9440a07359958da941d8e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 22:59:18 2010 +0000
-
-    Add the IDMIL website to the readme.
-
-commit bb6c7a27c296e99ba484c60d264df0d12e0bb238
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 21:39:18 2010 +0000
-
-    Fix mistake in last commit, assignment to the mapper_mapping variable after search.
-
-commit f30e9ea58a0431a5ce0ddad2cf98044bbfeb8034
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 21:05:54 2010 +0000
-
-    Search for an existing mapping before adding a new one.
-
-commit ff8f672fae2c0da7da5a64c827e4438d9e09fc3c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 10 20:53:28 2010 +0000
-
-    Grab the 'mute' state from incoming messages.
-
-commit 4de7c1f8293dcba2e1a2c5be16bdacb5bf36a1df
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 10 20:49:53 2010 +0000
-
-    fix calibration bug when source type is int
-
-commit 12fef2f24eaeb5794603746735a35e83f5b7b623
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Fri Dec 10 20:43:48 2010 +0000
-
-    added mapper_monitor_mapping_modify
-
-commit 92f0e5a7d366174728897406c38dda7ade192cc8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 21:10:09 2010 +0000
-
-    Add the libmapper_doc icon to the Slider and PWM examples.
-
-commit 3024d381851e78b70e4e743ef2386fd9371b255b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Dec 9 20:54:23 2010 +0000
-
-    added icon omnigraffle file
-
-commit b43d889c5b721638dffe24f0a3b73786e5ee516b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 20:45:26 2010 +0000
-
-    Binary build, fix recompilation of _pwm.so.
-
-commit 164680045868341e7caf40fea8ffae8eda202da5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Dec 9 20:37:55 2010 +0000
-
-    added some icons
-
-commit 79be3b6629470898088d3d9ef75907c78d2363d5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 20:00:32 2010 +0000
-
-    In mapper.framework, put the libmapper headers in the right place.
-
-commit 11e59cb97a1ae82c2d01c3f765632ec6770251a5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 19:59:06 2010 +0000
-
-    In sending /connected, append @range if any part of it is known.
-    
-    Previously it would only be appended if the full range is known.
-
-commit 572e3d01fc234b89805a3fd4e8e017a2259b1eab
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 19:31:49 2010 +0000
-
-    Set range from message in mapper_db_mapping struct correctly.
-
-commit 30fbeaf70326ea7efd3a94a8f66a62ab37bcfb3d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 18:46:10 2010 +0000
-
-    Forgot to remove this throw-away file in last commit.
-
-commit 77a8ce68f36f2e6233b81e1d380040a1a8aef19c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 9 18:45:03 2010 +0000
-
-    Update binary builder to use 10.5 SDK and correctly use @rpath in the framework.
-
-commit 9b60ef0cd711c339d866a7eeec034cde9367dc97
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 8 16:17:33 2010 +0000
-
-    Include the tutorial in dist.
-
-commit fd9e1ac73ccf5ccf9d3ab0638640a86a62a4520f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 8 16:17:24 2010 +0000
-
-    Make out-of-tree build work (VPATH build) by using srcdir, builddir, etc.
-    
-    This makes "make distcheck" finish successfully.
-
-commit b81fb469b89f9ce1f774f0dcc8b68ec711f12adc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 8 06:38:46 2010 +0000
-
-    Script to build binary versions for all architectures, merge them, and make bundles.
-
-commit d393b538a50251fa5b593eb3002ee13e3615a7b0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 7 20:41:55 2010 +0000
-
-    Add a check to disable vector mapping.
-    
-    Unfortunately the expression compiler and evaluator both need some
-    work before vector mappings are handled properly.
-    
-    Better to disable it for now, since it won't be ready for first
-    release--considered interesting future work:
-    
-    Basically, currently an `x' in an expression is considered the same as
-    `x[0]'.  This is wrong, since we don't support a way to build vectors,
-    and therefore it implies that only vector-to-scalar mappings are
-    possible.
-    
-    Two things need to happen: we need a `comma' (e.g. Python) or `space'
-    (e.g. Matlab) operator to allow building vectors in an expression:
-    
-    y = [ x[0]*x[1], x[1]*x[2], x[0]*x[2] ]
-    
-    We also need to treat a long `x' as a reference to the entire vector,
-    treated as a first-class value.  The evaluator currently assumes the
-    stack contains only scalars.  We need to be able to push an entire
-    vector on the stack and perform operations across its contents.  That
-    is, the expression,
-    
-    y = x*10
-    
-    should multiple each item in `x' by 10, whatever its size.
-
-commit ae1930c43537a787a171974a44a4e8b640a9f54f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 7 20:41:47 2010 +0000
-
-    Fail to create mapping in /connectTo handler if lengths don't match.
-    
-    As noted, in the future the expression should be examined to see if it
-    makes the types work out.  For now, we assume the expression is a
-    scalar expression to be applied to each item in the vector.
-
-commit 9b6784f328668f7e92e561db5adfccc06da72de8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 7 20:41:40 2010 +0000
-
-    Add some debug checks for msig_update_*.
-    
-    Actually it might be nice to include the type/length checks in
-    non-debug build, but let's save a few operations and assume the caller
-    knows what he's doing unless explicitly running debug version.
-
-commit 1b5dfb287d0ecb78eca69866d018b2bb48232ffd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 7 20:41:32 2010 +0000
-
-    Add a test for vector mapping.
-
-commit 70f29b6bc54d6f160354fb46a4dde57ee2401ad3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 7 18:57:59 2010 +0000
-
-    If server cannot be started because port is unavailable, try allocation again.
-    
-    In order to access liblo error message, it was necessary to add a
-    mutex for thread safety because it can only be passed by global memory
-    due to liblo's error handler design.
-
-commit 23e488276383cb1f93330241e2888b921455ce7e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:54:42 2010 +0000
-
-    Make testmonitor use the API functions for info requests.
-
-commit a6562b0c90c151793b241c4dc27a5ef9b8c82e79
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:49:34 2010 +0000
-
-    Provide length information in mapper_db_mapping structure.
-    
-    The length must be required anywhere the type is also required.  Could
-    even perhaps create a structure to enforce this, but this should do
-    for now.
-
-commit ea138099b903af42b9a33e1021ce1ab110d18af1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:49:29 2010 +0000
-
-    Fix 'enumerate mode and clipping' types TODOs.
-
-commit 560ee672cd578966d4c4c0274dafc36e59a343df
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:30:50 2010 +0000
-
-    Remove TODO about automatic /linkTo.
-
-commit 676e79c0682afd41e374b09421993e118acd7cd5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:28:55 2010 +0000
-
-    Explicitly ignore '-' characters in @range arguments.
-    
-    Also, we agreed to take the 'invert' idea out of the protocol and
-    leave it up to the client code.
-
-commit efb09be464917373caa6e70829424964656c9b2b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Dec 6 17:28:51 2010 +0000
-
-    Segfault in /connection/modify handler, don't assume a mapping was found.
-
-commit f96097bf2647ca01312cb1d4c8ef866132a9b3ce
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 21:58:42 2010 +0000
-
-    Fix memory leak in mapper_router_receive_signal(), strdup introduced in r2073.
-    
-    Router maps the signal by temporarily creating a new signal with the
-    destination name and type.  However, no need to actually allocate and
-    copy the destination name, it is not written to and doesn't last long
-    so we can just point to it.
-
-commit f4f20d700e0a98d098a379c84338786eb8ce0d98
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 20:41:00 2010 +0000
-
-    Readme, word 'based' used twice in a row.
-
-commit 40eced6f844e1434766fdd5cdf1f40c28fb81278
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 20:40:54 2010 +0000
-
-    Readme, rewrite paragraph mentioning Max/Pd object.
-
-commit fac262dcfdb368f55ec8d1e3c4977d53ff6ec01e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 20:40:46 2010 +0000
-
-    Readme, reflow some paragraphs.
-
-commit 2c2e859aec1dabf3aea4cf30f0a99c5a8db780aa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 20:40:40 2010 +0000
-
-    Make the readme introduction more informative, shorter, make 'history' section.
-
-commit 6bbbbb526aec9da0de6cca5be7f6eff410fb7a8c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 04:20:37 2010 +0000
-
-    Fix msig_update, was wrongly taking address of pointer.
-
-commit 94f47ae7595fe50953e4eeacd3b7286b9b0bbd14
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 04:20:23 2010 +0000
-
-    Require destination type and length information in mapper_router_add_mapping().
-    
-    Fixes broken messaging in testlinear, testexpression.
-    
-    Basically this is required information--a mapping should fail to be
-    created if type and length are not provided.
-
-commit f306ce4f6435eef9d27e312f0227791b190899b7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 5 00:14:53 2010 +0000
-
-    Include Python example main files in dist.
-
-commit e245dd0719a74dfde0fb96c4a062ae3b4cafa3ed
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:41:56 2010 +0000
-
-    Display name and port in both Python examples.
-
-commit 1155ed98df9001d067c38781982ddbedfb071cc7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:14:39 2010 +0000
-
-    Check types during clipping.
-
-commit b587d3f2bac1d46f864137ac1148d8ef7f22cd8a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:14:32 2010 +0000
-
-    For /connectTo, fill in known input properties for missing /connect arguments.
-    
-    Previously it used input properties when /connect args were
-    unspecified, or only /connect args if any were specified.  Therefore
-    underspecified /connect messages caused problems.  This way, all
-    properties of the input signal are available in /connectTo, unless
-    overridden by what was requested in /connect.
-
-commit 096d21a43403589d73dcb1672e59072cbe993843
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:14:22 2010 +0000
-
-    Check types during bypass mode perform.
-
-commit 6fc6cf48667c726643e80985b53bf9c89be8c02a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:14:12 2010 +0000
-
-    Add mapper_admin_send_connected(), use where /connected was constructed manually.
-
-commit 9481753ff510bed666d27d3de68ad2953d7855ab
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:14:05 2010 +0000
-
-    Avoid a liblo error by calling lo_message_add_varargs_internal correctly.
-
-commit ee7006f49e4913ab06d5ad02548a12ac8d929d1c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 4 22:13:56 2010 +0000
-
-    Type coersion for final expression output.
-
-commit ffd909c5edf87c6dea5db89a7f656f23ca4ef065
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Dec 4 21:47:38 2010 +0000
-
-    don't seed random number generator
-
-commit d1367bec5045df5a93d8544b7dc990dc5fa10440
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 3 21:21:42 2010 +0000
-
-    Remove "send /modify" TODO statements.
-    
-    This cannot be accomplished in mapping.c, because there is no pointer
-    to admin.  Rather, it is already being done after these "set"
-    functions are called in response to /connection/modify messages.
-
-commit 16ebe3b30a405104f7f702ab3a716c97c76900eb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 3 20:09:10 2010 +0000
-
-    sped up polling in testmany
-
-commit bd4da831691ac618ab72e5433da27308a28b3975
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Dec 3 15:44:49 2010 +0000
-
-    made testmany actually use name allocation
-
-commit 8d2661037d4573e19451ed62ecd35861d8f6c663
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 3 01:56:54 2010 +0000
-
-    Allow parameters to be specified on command line for testmany.
-
-commit 33cf63d9ad0b300dadcf0c82ce40eac03e57f72c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 3 01:56:43 2010 +0000
-
-    Remove the 'qt' prefix from test devices, rename 'test_2' to 'testmany'.
-
-commit 19ecf55305afb785f564400be122a5a355d99dda
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Dec 2 21:17:58 2010 +0000
-
-    A few small edits on the README
-
-commit a50f4fa9f70e3d2f884f2349c245c9acd6379ab8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 2 04:40:04 2010 +0000
-
-    Add a tutorial section about adding extra metadata.
-
-commit 39c3c1b5a0eb494cbca453e7aef86c8b372e3e81
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 2 04:39:56 2010 +0000
-
-    Add signal's user_data field to the list of queriable properties.
-
-commit 7e9c0e88ce5782cadb4507b22dcfc2ed4b0c895c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 2 04:39:46 2010 +0000
-
-    When dealing with extra properties which can be any lo_arg type, use lo_type.
-
-commit efc9f74ac21dfbe51e252b7aa2d2c821f95950f2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 2 03:19:30 2010 +0000
-
-    Forgot to shorten 'maximum' and 'minimum' to 'max' and 'min' in testprops.
-
-commit 596ea98e225c474075d7a08da0f736e8800d6043
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 19:08:18 2010 +0000
-
-    Replace obsolete call to update_scalar in tkgui.py.
-
-commit 1c66d4d3732a00de041ac2ff8ed3ea3549494a72
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 19:08:10 2010 +0000
-
-    Fix type coersion for max/min values in SWIG binding device.add_input/add_output.
-
-commit a2a3a5f9f719332f06ae50304f643f84476ba818
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 17:21:27 2010 +0000
-
-    No point keeping barely-used MSIGVAL and MSIGVALP macros around.
-
-commit 3d3e4a579b24a3fbab4dc8fa8365e8293dc92f1f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 17:19:54 2010 +0000
-
-    May as well also remove the use of mapper_signal_value_t in msig_set_max/min.
-
-commit a4ff71fc07c076c852f9cd88c077f7a5382322cd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 17:01:25 2010 +0000
-
-    Avoid the warning "function declaration isn't a prototype" when a function has no arguments.
-
-commit ca9037e64970181ae5cc93a722b30a8cb8f0acee
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 16:57:15 2010 +0000
-
-    In signal handler, provide the value as a void* instead of mapper_signal_value_t*.
-    
-    In fact, the max external made the exact error that this change is
-    intended to prevent!  (i.e., indexing into an array of
-    mapper_signal_value_t instead of an array of float/int/etc.)  So,
-    shows that it's probably better this way.
-    
-    We need more testing code for vector signals.
-
-commit 8ddd4d7b093b0df4cbccf3c67c61f06a899bba42
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 16:57:00 2010 +0000
-
-    mdev_ip4 should return a const pointer.
-
-commit 1653430a57207621e37564f040ca95e91dbc5254
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Dec 1 16:56:47 2010 +0000
-
-    Add some comments for doxygen documentation and normalize some function argument names.
-
-commit df7be93d25077c2da6875c5be86b3de05d99eaf2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 30 22:27:50 2010 +0000
-
-    Rename mapper_db_create/destroy_mapping and sort out the API for network control.
-    
-    These functions are not db functions, but they do need the monitor
-    pointer in order to get an admin for sending admin messages.
-    
-    Technically a device could do this too, but we assume the use case is
-    for monitors.  Add functions to link/unlink, connect/disconnect.
-    
-    Connection properties can be specified by passing a
-    mapper_db_mapping_t structure, along with a bitflag indicating which
-    properties are valid.
-
-commit bb971d58c743ab7dde36baee7d072eef372cdaee
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 30 22:27:39 2010 +0000
-
-    Replace clip_lower, clip_upper with clip_min, clip_max in mapper_db_mapping.
-    
-    For consistency.
-
-commit bbf7c9131d6e2ede2c7363e70d6a211ffb5d2751
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 29 23:01:17 2010 +0000
-
-    mapper external: fixed bug reading signal max property, added signal removal method
-
-commit aa7a488e70bea8176be02a18c9cd0909d1d0ecbc
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 29 16:09:24 2010 +0000
-
-    changed SC_ props to MO_ since they are now "modes" not "scaling types"
-
-commit fd08a8c760d04e77bd0dbb7a8a276674f18f327c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Nov 29 03:12:42 2010 +0000
-
-    Fix SWIG bindings for recent API changes--add ip4, interface, ordinal.
-
-commit 5a25293d9c5c98e3c37cfba263def03277eec4c4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 29 00:54:04 2010 +0000
-
-    Pass all destination signal properties with flavourless /connectTo message - allows signal metadata to include clipping behaviour.
-
-commit 9298f73346ec6d10a2337c5d3fc5686047942f53
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 28 20:43:14 2010 +0000
-
-    Make some more device information publically available. Ordinal, IP, interface.
-
-commit 8a95c09f275af2af952ecff5326e0693bc091b87
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 28 20:42:54 2010 +0000
-
-    Rename msig_get_properties() to msig_properties().
-
-commit 16c6e1cb179cd5281a03f71e4ebb7559c88495eb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 28 20:42:31 2010 +0000
-
-    Move signal's user_data to mapper_db_signal, to make it publically available.
-
-commit 8888be93938b8e916418cf122117060ff4f161ec
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 28 00:18:37 2010 +0000
-
-    Add functions to remove signals from a device.
-
-commit ed70f67756f40baf00db286878ce17d210b5dde8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 28 00:18:25 2010 +0000
-
-    Document the device parameter of mdev_add_*.
-
-commit ed487575da88ab51bd79709f1eb0fe6b6e4b925a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 23:50:29 2010 +0000
-
-    Update tutorial to reflect recent changes.
-
-commit 22f84a9b8a8b7ab5a1396113b8588b7d8ae6d3d5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 23:50:20 2010 +0000
-
-    Also don't use mapper_signal_value_t in the msig_update() prototype.
-    
-    Replace msig_update_scalar() with msig_update_float() and
-    msig_update_int() to eliminate need to cast to mapper_signal_value_t.
-
-commit 37c7038bd019e6c4d5679e040e3634ffcc170dbe
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 23:18:59 2010 +0000
-
-    Rename mdev_find_*_by_name to mdev_get_*_by_name, add _by_index().
-    
-    Changes the prototype for these functions too.  Returns mapper_signal,
-    index is by pointer, instead of the other way around.
-
-commit e1d969cbaae5d684b8dc238c14898477da658f45
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 23:18:48 2010 +0000
-
-    Fix calls to mdev_add_input and mdev_add_output in SWIG binding.
-
-commit f19d41610d6ec50ad417d431cc07ad2a0337b3c9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Nov 27 22:43:36 2010 +0000
-
-    added check to see if device owns a signal of the same name before adding a new one
-
-commit bcb223d2c26d3e2adf82773c747ba867ec9e4b47
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 20:43:15 2010 +0000
-
-    Remove the 'value' argument for signals.
-    
-    I now think that this would have been somewhat of a misfeature,
-    encouraging a bad programming style to use implicit updates based on
-    non-owned memory.  Would have been fragile, prone to mistakes:
-    explicit update and _not_ pointing to user memory is better.
-
-commit cd420a28159dec0f6019ae4e9364fa2cab3d63fd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 20:42:54 2010 +0000
-
-    Use a more sensible order for the arguments to mdev_add_input/output.
-    
-    Strictly required arguments first, then optional arguments.  This
-    particularly makes the default values more useful for the SWIG
-    bindings.
-    
-    Also, length and type should be next to each other.
-
-commit eb9a371480a15f9a66540f947c17d9b843a28e41
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 20:42:32 2010 +0000
-
-    In SWIG bindings, allow handler to be None, give default args to several functions.
-
-commit ffd0df23a919728aacdd98622bc4b0d4c0fc6b39
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 20:42:25 2010 +0000
-
-    Remove typed signal constructors from SWIG bindings.
-
-commit 9b0811d18aadafe748d49092b1a15600f8af61d4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 19:44:58 2010 +0000
-
-    Remove type-specific "shortcuts" for adding signals, use void* instead.
-    
-    Realized it would be a mistake to suggest that you can pass an array
-    of mapper_signal_value_t to this function, since the memory layout
-    might not remain the same when we add new types, and we can't count on
-    it lining up with float or int arrays.  Instead, just use void*.  This
-    makes C perform pointer coercion without a warning, so the need for a
-    macro to convert the pointer to mapper_signal_value_t* goes away.
-    
-    With the observation that calling the full mdev_add_input/output is
-    actually now less characters that using mdev_add_float_input et al.,
-    may as well remove these as they aren't really needed or helpful.
-
-commit 04390f714da4edda532cd89a60e006a04f9088a1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 19:44:41 2010 +0000
-
-    Handle the case where signal name is specified without a prefixed slash.
-
-commit eaafde5e7a7367e975e3e1038c91ac73c7fadc72
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 19:44:34 2010 +0000
-
-    Remove msig_int and msig_float functions, move msig_new and msig_free to internal header.
-
-commit f66a3c2c6d70e2faee1455ec2e6f0562973f0b5f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Nov 27 19:44:23 2010 +0000
-
-    Restore the 'examples' subdirectory in build.
-
-commit fca639243ec78c8ae0677c297fbd0cb00fdbbd13
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Sat Nov 27 00:09:14 2010 +0000
-
-    adding support for expressions, ranges, limits, etc...not finished
-
-commit a5d50a821dfa713a4e2c32f7a389e8387203a6e0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Nov 26 02:13:47 2010 +0000
-
-    added low-priority task
-
-commit f2ccd34d91aa0dc1b0e68bc1519f7fed533a7964
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 20:53:01 2010 +0000
-
-    A few more files that should go into dist.
-
-commit 1373a7257893b1bd67114a48c814c0886b40debc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 18:54:51 2010 +0000
-
-    Remove obsolete reference to operation.h, expression.h in EXTRA_DIST.
-
-commit c02aa58d637a3396e0cc9f91158da67a6b6db290
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 18:53:34 2010 +0000
-
-    Missed referencing URL for Arduino in README.
-
-commit 4bd1b3ef86c6b8711129324a149122bb0746f32d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 18:52:27 2010 +0000
-
-    Rename README to README.markdown to make github happy.
-    
-    Then copy to README during autogen to make automake happy.
-
-commit f3967c7e8d572e5f3e8a6f1e1462e0e6f6854374
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 18:39:18 2010 +0000
-
-    A few more details in README and add URLs for all mentioned external projects.
-
-commit 368e1527bdd5633e5a87fb8b7f3a179b2e8fa67b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 25 16:58:38 2010 +0000
-
-    Add a few more details to README.
-
-commit 92a9b2d632695c3b1a7a1c7a98a6abfb59405324
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Nov 25 13:47:06 2010 +0000
-
-    just a couple of typos
-
-commit 3c98ee2715d64790b047a84c61bff11a2e455411
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Nov 25 13:45:21 2010 +0000
-
-    changed reported range in test.c to match generated output
-
-commit 59cb4d293cde46c628b8beb5ef7a834ae2409df7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 23:14:56 2010 +0000
-
-    Add license information for the library's dependencies.
-
-commit 98deb4906f363acbbf965e42fc7eb3277828c869
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 22:02:11 2010 +0000
-
-    In README, mention many-to-one mappings in the limitations section.
-
-commit dbf81bc82238c34f58d4b0ff5f0c6a7acb4b9465
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 21:06:47 2010 +0000
-
-    Update AUTHORS and README.
-    
-    A verbose rant on the purpose of this library, and its advantages and limitations.
-
-commit c1dd77130e6d3146983c90db440d0ad6634e2a81
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 16:22:29 2010 +0000
-
-    Fix device polling, returns the number of messages handled, sleeps correctly.
-    
-    Expands on this a little in the tutorial, discussing the effect of
-    blocking/non-blocking polling modes on message handling.
-
-commit 7551177bd525f5b5cb5a0a39e6085939c7dfa4ad
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 03:24:27 2010 +0000
-
-    Add a simple PWM synthesizer to use as a sound example.
-    
-    This patch pulls in RtAudio 4.0.7 into the project as a minimal way to
-    access platform sound APIs.  configure.ac was modified to detect ALSA
-    or CoreAudio and provide the RtAudio compiler flags accordingly.
-    
-    The file `pwm_example` runs this synth with mappable parameters as a
-    command-line tool.
-    
-    In order to provide a GUI, it also includes a second Python project
-    `py_tk_gui` which wraps the synth in a Python module and uses Tkinter
-    to provide mappable knobs.  This will of course only work if SWIG is
-    found and enabled.
-    
-    Note that because of RtAudio's C++iness, the examples provided are
-    .cpp files to make autoconf figure out that it needs to use g++ for
-    linking. It might be nice in the future to come up with a C++less
-    alternative, but this'll have to do for now.
-
-commit 28bbc6c8e7e641c2078086ad4598ed0ab7becb67
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Nov 24 03:23:53 2010 +0000
-
-    Fix the SWIG interface to use the mdev_add_* functions instead of mdev_register*.
-
-commit 9d5eb76e8e78c789ba1e900b1cab78813a9dac64
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 23 21:42:19 2010 +0000
-
-    Remove "maximum" and "minimum" and consistenly use "max" and "min" everywhere.
-
-commit 45afca5a6bdc2b1c99699b33030a2982531a14ce
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Nov 23 20:23:43 2010 +0000
-
-    Fix: forgot to set is_output in db from @direction param.
-
-commit 4a4f6b057fd7cb713a97039f4d1e2e1aa527bfe9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 23 00:10:49 2010 +0000
-
-    swapped "@rev" attribute for  "@hash". This attribute should be incremented whenever the device signal-space changes (adding/removing signals, perhaps  changing their attributes in the future).
-
-commit 62e486e98c06f9001db25a92103e2497f775a408
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 22 23:06:04 2010 +0000
-
-    Added logout handler to devices for freeing resource suggestions; removed IP and port attributes from logout message since ports will soon be allocated internally
-
-commit 1a71a0de89f05c8a0acac9d57ff31d49b1c59371
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 22 22:39:24 2010 +0000
-
-    updated libmapper roadmap
-
-commit 6778e830b7cb6700c37a58ebfd157b3611747e1a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 22 20:45:23 2010 +0000
-
-    merged signal creation API as discussed
-
-commit fd812decd88b03389a29c922287165bcdfecdb9f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 22 20:44:30 2010 +0000
-
-    removed old reference to can_alias attribute
-
-commit 8e9a4ad2a8aa9681e6cbe809c6c949b255cf7fe8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 21 21:21:12 2010 +0000
-
-    Most of a tutorial on how to use libmapper to create devices and signals.
-
-commit d76f32bcc8ec7710bee64ba43bf58a0176f6905a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 21 04:07:06 2010 +0000
-
-    Add doxygen group commands to the public header files.
-    
-    This adds a "modules" section to the generated documentation, making
-    it easier to navigate.
-
-commit b2a1ca619b5562b6991b0708f6f6e91e593fbd50
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Nov 21 04:06:58 2010 +0000
-
-    Move mapper_osc_value_t to an internal type.
-
-commit d2968839829a095e10ab4aca72e6120fccf13d4e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 16 17:07:28 2010 +0000
-
-    mapper protocol change:
-    /link_to -> /linkTo
-    /connect_to -> /connectTo
-
-commit 7fc0a65b0286644f6c1ba8e98a3f1677545b38e8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 22:51:11 2010 +0000
-
-    protocol change: /registered -> /device
-
-commit 147178451ee87d7c6ff7d78f499d00d27875f399
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 22:22:14 2010 +0000
-
-    removed canAlias attribute; removed debug message from r2456
-
-commit c1602d0977ab0f9f57a3b1e3c97c4fa5ec0a94ac
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 22:01:16 2010 +0000
-
-    fixed bug where updating expression string would cause switch to linear mode
-
-commit bc994d3f0ea85e8626dad2c8dfc5f6f77a49ee14
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 21:33:08 2010 +0000
-
-    mdev_poll() now operates much like mapper_admin_poll, using the number of input signals as the max count for reading lo_server_recv_noblock() in a loop. Made both mapper_admin_poll() and mdev_poll return the number of received messages, which could be used to adjust the poll rate and blocking time from the application.
-    
-    It is conceivable that there might be more than n_inputs messages to receive in a given poll period - perhaps we should pass the max count as an argument to mdev_poll as well?
-
-commit 8f7c23c7e6432a85fe0f13433e226409f03fd384
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 18:36:27 2010 +0000
-
-    testlinear/testexpression: use allocated port
-
-commit ce224cb605d9d482ea0f65bde83f3d0dabe90549
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Nov 14 18:16:28 2010 +0000
-
-    Devices now re-send the /register message if signals are added.  I added an "update" flag to the device struct; mapper_admin_poll() sends the /registered message if the flag is high and resets the flag.
-
-commit 9da2e9b9601e2f05b2d3a21842e33d3734b0def2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Nov 12 04:15:29 2010 +0000
-
-    Some mounted filesystems don't do hard links, so use copy instead.
-    
-    This copy was needed to 'rename' the pkg-config file according to the
-    major version number.
-
-commit eb38de413b304b77f9d664e27e7c0ee945e43b49
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Nov 12 04:04:20 2010 +0000
-
-    Avoid interfering with Python distutils CFLAGS.
-    
-    Also fixes assumed system-named directory structure under swig/build,
-    uses wildcard instead.
-
-commit 15ca93578b7a26ca51ab561aca5ce83d85b9d6d0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Nov 12 04:04:12 2010 +0000
-
-    Fix issue with list_header_t on Darwin 64-bit.
-    
-    Seems the zero-length array used as a stub in list_header_t caused
-    problematic behaviour on Snow Leopard 64-bit, so use a one-value array
-    and calculate the size explicitly which should be system independant.
-    Had to rearrage the structure a little too, since the packing of the
-    enum between void pointers caused extra space to be padded in the case
-    of 64-bit architecture.
-
-commit a1933d3292824281918a0ab4710585aa813eb416
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 11 02:48:05 2010 +0000
-
-    Add the ability to look up signal and device properties by name.
-    
-    Also adds arbitrary 'extra' properties for signals and devices to be
-    used for representing user-defined metadata.
-    
-    Adds API functions for adding properties to owned signals:
-    
-      msig_set_property()
-      msig_remove_property()
-    
-      mdev_set_property()
-      mdev_remove_property()
-    
-    And for looking up properties by name or by index:
-    
-      mapper_db_signal_property_index()
-      mapper_db_signal_property_lookup()
-    
-      mapper_db_device_property_index()
-      mapper_db_device_property_lookup()
-    
-    This patch also moves the non-db half of the signal structure into the
-    internal API.
-    
-    A device handling program may get the signal's property structure
-    through the new function, msig_get_properties().
-
-commit 7418009249552187464abfb4dae97f12baa8978f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Nov 11 02:47:45 2010 +0000
-
-    Use some autoconf variables in Python setuptools build for SWIG.
-
-commit 1192903609e25b3f87f3d253bcd6e93e14e95150
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Nov 10 20:10:42 2010 +0000
-
-    changing @scaling to @mode in mapping protocol - libmapper
-
-commit 6d5523ede9241b0b68df78d7c2082df2c256af08
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Nov 3 22:54:59 2010 +0000
-
-    update to libmapper roadmap after meeting
-
-commit 3e816f9d6826926c6b5a4bc5a39e88705024995b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Nov 2 21:48:13 2010 +0000
-
-    added elapsed-time-for-allocation printout
-
-commit b4bd4706410a27697b8cc123111fc34d20d37d30
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Nov 1 18:51:04 2010 +0000
-
-    libmapper allocation speedup: registered devices suggest alternatives when allocation collisions occur.
-    
-    Also changed behaviour of newly registered devices: instead of sending "/who" they now just send their registration info. Justification: a) only monitors are interested in the entire network, b) the current /link_to syntax includes networking info so that devices do not need to keep records of their peers, and c) reduction of redundant network traffic
-
-commit 9dace47a61e4d1c11a0a4e22f3aa57ef5382f19e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Oct 29 21:28:17 2010 +0000
-
-    new signal declaration syntax:
-    /signal /foo.1/out2 @direction output @type f @length 1 @min 6.1 @max 7.1
-    
-    replaced handler_generic() with handler_signal_info()
-
-commit f83d360efcfb94b078c48138cc901ec87cef847b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Oct 28 22:50:41 2010 +0000
-
-    Add a little string-based lookup table implementation using qsort and bsearch.
-    
-    This uses a sorted array of key-value pairs to store pointers.
-    Insertion should be considered as "slow" (around O(n log n)), look-up
-    as "fast" (around O(log n)).  We could always replace it with a hash
-    table in the future if we want O(1), but this should be good enough
-    for now and is a quick and easy solution.
-
-commit f65b01bcb8ece01122177aa1ce471db6f2ac3572
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 22:41:41 2010 +0000
-
-    swig: Fix signal types in tkgui example.
-
-commit a2516d28c86fd23efcb893e59de42b33526bfe6f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 22:26:19 2010 +0000
-
-    swig: Add a Python Tkinter example showing how to map a scale widget.
-
-commit 3a14f0d559738839dfd90674ce437ad5c4b6b5c5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 22:26:10 2010 +0000
-
-    swig: Perform type coercion before calling msig_update_scalar.
-
-commit c3daa2e387586a099c3180f4ce45ce5774902c85
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 16:05:53 2010 +0000
-
-    Fix test.py use of function 'name()' instead of property 'name'.
-
-commit 414c761ce096783c03c9c1f2d86bd87aa04df90a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 16:00:29 2010 +0000
-
-    A basic Python interface to device and signal objects using SWIG.
-    
-    While SWIG takes care of most of the work, callbacks and some
-    property-related hackery is Python-specific, so other languages will
-    unfortunately have to be supported explicitly.
-
-commit fd7c7e78c223890c88b11507d2f6901455c2ebe2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 15:55:13 2010 +0000
-
-    Use the specified group/port.
-
-commit a78c613dec11d0012fc74a7df6efeed7243eb1b5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 15:55:03 2010 +0000
-
-    Fix return NULL if admin was not created successfully in mdev_new().
-
-commit 657c19dacfcda4eb86d2cc1ff4d43066acb93212
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 15:54:57 2010 +0000
-
-    Fix freeing previous iface pointer.
-
-commit dea3b182dfca435a39fd0ea9d8886113de9e9d96
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 27 15:54:51 2010 +0000
-
-    Don't assume device exists during signal update.
-
-commit ea44e359245f9cb05be62b0bf28e4fbf094c6fcf
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 25 22:15:16 2010 +0000
-
-    added length attribute to protocol, updated roadmap
-
-commit 175adc88c4fbe321022a50353da6b115056e5285
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 25 21:02:07 2010 +0000
-
-    enabled mute attribute in mapping protocol
-
-commit 8144879fc590587c31dda697c38e766083c021bb
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Oct 25 17:20:53 2010 +0000
-
-    fixed argument order when calling msig_new
-
-commit e02a13debbfc9ec1b7ab68ebc85cdbc2341e642b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 20 20:59:15 2010 +0000
-
-    Make it possible to allocate an admin and pass it to a device or monitor.
-    
-    This changes the mdev_new() interface, though if 'iface' parameter is
-    zero there is no problem.  Now in rare cases where iface, group, or
-    port should be customized, the user can create a custom admin and pass
-    it to device or monitor.  Otherwise if it is 0, device or monitor
-    creates and admin with standard values.
-
-commit fad3da000b6b63ea522b7675a652cce98b532cdd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Oct 20 19:33:04 2010 +0000
-
-    libmapper: Update to the roadmap after Oct 20 meeting.
-
-commit d8053ae0ef96a3248320c40b87c87b7948bacbd4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Oct 19 20:02:56 2010 +0000
-
-    Fix mapper_admin_send_osc for device-named paths.
-
-commit d792b756b0b4910120df72ada70a870f35838696
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Oct 17 19:18:57 2010 +0000
-
-    It's legal to not have a unit for a signal.
-
-commit f03f41ca625b5f72bf5022948080e84d16fdd733
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Oct 17 19:18:50 2010 +0000
-
-    Don't ask for admin name in send_osc when admin has no device.
-
-commit eec209ff742b087a5a181fbd6c4ab70b41abd756
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Oct 17 18:57:04 2010 +0000
-
-    Signal creation specifies min and max by pointer.
-    
-    No longer uses INFINITY as a constant to indicate no min/max.  Instead
-    takes a pointer to a value.  Also provide setters for min and max, and
-    a general msig_new function, called by msig_float and msig_int.  Also
-    provide missing msig_free(), and it's called by mdev_free().
-    
-    Provide a couple of shorter macros to make casting to
-    mapper_signal_value_t (and a pointer to it) a bit easier.
-
-commit 6fede51df93b69d6c1e1bd05f1dd0fe4de6c8d1e
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Thu Oct 14 22:21:10 2010 +0000
-
-    added a test for larger numbers of devices
-
-commit 6f5d853d62ea3e4b3e15166a320857c1c44ef786
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Oct 14 21:22:32 2010 +0000
-
-    Separate "monitoring" functions from "device" functions.
-    
-    Provides a 'mapper_monitor' object which can be instantiated.  The
-    mapper_admin is changed to work with a device, a monitor, or both,
-    performing whatever functions are needed for these cases.  The
-    database is now contained inside the monitor, so db functions are
-    given a context pointer, and the user application must get a db
-    pointer from a monitor before passing it in to a database query.
-    
-    Patch also modifies qtmapper to match these changes.
-
-commit a43b31135c35b8b04aaa29c9d7c3c9ab24814fa0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Oct 14 02:29:50 2010 +0000
-
-    Fix brain-fart getting string length in replace_expression_string().
-
-commit 2181ab7a236b9fa3cf88d8a92eb3d702f60d7f88
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Oct 14 00:37:53 2010 +0000
-
-    Fix mistake in new interface discovery code: memcpy -> memcmp
-
-commit ad9c58296f4959d28de4386eddfb47181446864a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Oct 8 02:48:48 2010 +0000
-
-    Use a heap-allocated string for interface name.
-
-commit 18bce8bdd31f2a13e2528e8b7f1ab4377bfdee0d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Oct 7 21:31:54 2010 +0000
-
-    Use a better method to select network interface, or allow it to be user-specified.
-    
-    Adds a check for new liblo function lo_address_set_iface().  If it's
-    not available, it is simply not called, and the interface is selected
-    automatically.
-
-commit f0b4b12c621c84f93a400266adb86c90e22ec5ff
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Oct 5 21:41:51 2010 +0000
-
-    added interface for gui to delete mapping
-
-commit 96ffecc4601f340cafb6ba0fda2d86c696ef0c67
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Mon Oct 4 22:58:32 2010 +0000
-
-    adding flag indicating whether output or input to mapper_db_signal
-
-commit f148e5c2cefdc7f5d75db93adc43b5d163f9f189
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 29 00:26:38 2010 +0000
-
-    Replace the parser/interpreter for efficiency and to support new syntax.
-    
-    Supports vector and history indexing.  Compiles expressions to a
-    reverse Polish notation implemented as a linked list and interprets
-    this in an iterative loop with explicit stack.  Performs some folding
-    of constant operations.  Detects required allocation for signal
-    history based on oldest access.  Supports type coersion from int to
-    float.
-    
-    Signal input/output history is moved from struct mapping to
-    expression.  Compilation requires knowledge of signal type and vector
-    size, but mapping doesn't have a pointer to signal, so functions that
-    set mapping expression are given a signal parameter.
-    
-    This patch also minimizes externally visible functions related to
-    expression---the API for constructing, freeing, and evaluating
-    expressions is small enough to put in mapper_internal.h, so
-    operations.c/h and expression.h are removed.
-
-commit e48c7e8b2403def4f64685216d947a43b8b5491a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Sep 28 22:59:25 2010 +0000
-
-    Return 0 from non-void functions to eliminate warnings.
-
-commit 236f60dd3cffddbc9473b06e93a0821daeae8b16
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Mon Sep 27 23:48:56 2010 +0000
-
-    hacked together interface for allowing a gui to add a mapping between signals
-
-commit 12ee05f8cc2f12d96a564b31361b55d888a8aaf4
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 20 01:53:43 2010 +0000
-
-    Fixed behaviour of linear mode: changes to range now cause re-evaluation of expression
-
-commit 0a9f9bd926e936f101c697b233e61b21ad921144
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Sep 20 01:42:15 2010 +0000
-
-    Fixed behaviour of calibrate mode
-
-commit b32f9fdebef8bc0dc7b9606610a77ecd279178f8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Sep 19 22:45:25 2010 +0000
-
-    libmapper: Fixed property reporting bugs, also updating range info was erroneously altering the scaling property.
-    
-    Testing also revealed that calibrate mode is not working properly, and that updating the ranges while in "linear" mode does not update the expression string or tree (not fixed in this commit)
-
-commit d9ff6444150326ababfcbc03ba9058022d553a4e
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Fri Sep 17 22:23:11 2010 +0000
-
-    fixed bug in handler_device_connections_get (sources were not being iterated through)
-
-commit da372454d52a506b5badb895f00696271fc48759
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 17 21:54:59 2010 +0000
-
-    added some default values for new mappings
-
-commit eda5d4ccd7d4c9c84e6c26d493eddd19e1b46176
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 17 21:54:42 2010 +0000
-
-    marked a couple of roadmap items as done
-
-commit b0608e393b19477bdfe1c980b1604c10ab5294af
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Thu Sep 16 02:48:20 2010 +0000
-
-    added interface to request signals, links, and mappings
-
-commit c6df1452ee0ee16d8eb22535f0898419f79c6633
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 10 21:58:19 2010 +0000
-
-    simplification of mapping creation functions: now only mapper_router_add_mapping() remains
-
-commit f90c6029939a592b73b974c84a9b3a8aff712258
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Sep 10 20:29:06 2010 +0000
-
-    libmapper: use a built-in strndup, since it is not available on all platforms.
-
-commit 9e95bdb45989889aa062855fe5080b0388ae8250
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 8 18:56:47 2010 +0000
-
-    libmapper: rename expression functions and struct to mapper_* naming prefix.
-    
-    Move code from interpreter.c to expression.c, removing need for this
-    file.  Make expression.c helper functions declared static.
-
-commit f9a44421a3933dba622edcadbfa26d788dadc86f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 8 18:56:39 2010 +0000
-
-    libmapper: replace uses of sub_string() with strndup().
-
-commit 99a482f2ffa660b59eb2d3dbb8a72a3b9ca7fc75
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 8 18:56:31 2010 +0000
-
-    libmapper: set expression scaling when adding an expression mapping.
-
-commit 8b784fabd9ae47ee3d31ef8469f6f5a6c658cd1a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Sep 7 20:33:12 2010 +0000
-
-    added some tasks to roadmap
-
-commit 4964b39803410ab8321940ce1fcde7e0d812d41b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Sep 4 00:24:42 2010 +0000
-
-    fix for updating expressions
-
-commit 7a277870396214029853df906d4f69a2d278605a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 3 22:21:47 2010 +0000
-
-    slight protocol tweak for clarity: "namespace" -> "signal" or "signals"
-
-commit 3db35d7dcd5d88b5263f98f41f0516f5c9056b2f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 3 19:01:52 2010 +0000
-
-    updated roadmap
-
-commit 17c6a19dee2d53c53476bc1fef09007021a4cc3e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Sep 3 17:51:34 2010 +0000
-
-    fixing terminology inconsistencies:
-    
-    sender -> source
-    target, receiver -> destination
-
-commit 13142867f24525620296c9b4fb5f67b3665f5cfd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Sep 2 20:03:46 2010 +0000
-
-    adjusted priority list according to discussion
-
-commit 8fda160df1079f08b589976326b38817a09643b5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 1 19:19:50 2010 +0000
-
-    libmapper: add sqlite and stk to the "to do" list in the roadmap.
-
-commit 4370e926e20d7d8e3b8ada8a315b89e29ced6f3e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Sep 1 02:30:05 2010 +0000
-
-    libmapper: add a development roadmap.
-
-commit e7f15ce23ba764e5591e70f59370a921c286a558
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 18:24:15 2010 +0000
-
-    libmapper: remove mappings for devices that are unlinked.
-
-commit 9fdc2c7ef3f470dead7c4e59ca50eaefcc985af8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 18:06:14 2010 +0000
-
-    libmapper: also request connections and links in testmonitor.
-
-commit 65642ab37dc514dcc07b44f58b870d5e6ff5489b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 18:00:15 2010 +0000
-
-    libmapper: remove links and mappings on /unlinked and /disconnected.
-
-commit 1509e7355e0810e3df24d5ee6863915b94e17f16
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 17:09:35 2010 +0000
-
-    libmapper: change order of removal: mappings, links, signals, then devices.
-
-commit 5ef58687721b0d580f869e6bcc8d10ff0cda660b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 15:01:18 2010 +0000
-
-    libmapper: remove a device from signals, mappings, and links dbs when removed.
-
-commit ac9ba64658ad369d69e0742ed47707cea30d40cf
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 15:01:08 2010 +0000
-
-    libmapper: add queries for all inputs and outputs, use in testmonitor.
-    
-    Previously it only showed signals for which there was an associated
-    device entry; this way we can see everything in the database.
-
-commit 4e2d7fc023ad2ac9c1f823a75b77bbe0ea0a5ea6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 31 15:00:55 2010 +0000
-
-    libmapper: only update testmonitor's display after a database callback.
-
-commit f735b20b8985bc89222e64af33cd503b5300609c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 21:05:11 2010 +0000
-
-    libmapper: remove a device entry from the database on /logout.
-    
-    Still need to remove mappings and signals associated with the device.
-
-commit 1d51f1a3ba497bfa7e6fc5e79f6236e0642841a8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 21:05:04 2010 +0000
-
-    libmapper: send /logout as a result of freeing the admin object.
-
-commit 9d342ad69112b5f42cc515f8311418b34a78b474
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 20:36:16 2010 +0000
-
-    libmapper: correctly iterate over the mappings in connections/get handler.
-    
-    Previous version would only hit the first mapping for each signal.
-
-commit c2a468a5132ae4713ccd3864eeb543f02d5d27db
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 30 19:49:09 2010 +0000
-
-    fixed segfault in handler_device_connections_get() if no connections exist
-
-commit 429f6025a0475b84ccb5368f82d4db24bfd1dc12
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 30 18:49:11 2010 +0000
-
-    fix to mapper_router_remove_mapping() - now correctly iterates through all mappings, frees memory
-
-commit d8102acd0f079b7a89a5070c0658966f2263f8e3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 18:10:17 2010 +0000
-
-    libmapper: add a ctrl-c handler in test.c, ensure devices are cleaned up.
-
-commit d83c7e7261037bcc52dbc6d16efc260de90da041
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 18:07:07 2010 +0000
-
-    libmapper: add mappings and links to the database, request namespace in testmonitor.
-
-commit 9c97e54af4cebc5ed7a94d137086329bb2cc7329
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 18:07:00 2010 +0000
-
-    libmapper: speed up testmonitor, remove pauses by default.
-
-commit 2a8d87cedca0d47ecde91eef2cf64a58fb3551d2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 17:53:39 2010 +0000
-
-    libmapper: remove commented out code in test.c.
-
-commit c08bbc84a19c2f14ae68c449f8582be58c71f357
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 17:49:04 2010 +0000
-
-    libmapper: remove mapper_router.num_routers and .num_mappings_out.
-
-commit 4d32c4482843f3974e540e5a676e8d0d376bfd02
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 17:48:57 2010 +0000
-
-    libmapper: make sure copied device name gets delimiter in handler_generic().
-
-commit ccf49b470a8980db5d8bd4884badaed366e98adc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 17:48:51 2010 +0000
-
-    libmapper: display list of all mappings, links, in testmonitor.
-    
-    Does not display everything however because functionality is not
-    completely implemented yet.
-
-commit 245008c6577c171a4a3de8bc05894b3d76938029
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 17:48:43 2010 +0000
-
-    libmapper: fix comments for get_mappings* routines.
-
-commit 0506944c09154130d623af67c6bbffdcba3b0d12
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 16:20:30 2010 +0000
-
-    libmapper: fix the return value of osc_prefix_cmp() when different lengths.
-
-commit 46576d4adce698ed04a6211ca062d9ee9c2868ae
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 30 15:41:39 2010 +0000
-
-    libmapper: Fix up the string handling in handler_generic().
-
-commit c5e8fef4509d842ef9b4ef0e1061133b112b3fad
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Aug 27 22:36:07 2010 +0000
-
-    libmapper: add function mapper_db_get_mappings_by_signal_queries().
-    
-    Replaces previous prototype of
-    mapper_db_get_mappings_by_device_and_signal_queries(), which didn't
-    make sense: the device-name search is embedded within the signal
-    search, since mappings are between signals.
-
-commit 3540fadf33ba7abbc80238adefdb93d9c44a64ab
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Fri Aug 27 21:30:44 2010 +0000
-
-    added handler_generic as a hack to get signals added to the database
-
-commit 215b6fe11b9498e843392ad2c17e0e9820e4b2fd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 19:01:17 2010 +0000
-
-    changed handler_signal_modify() to handler_signal_connection_modify()
-
-commit 15677ffa79052e90cb98b48283a86cb89ca65b17
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 19:00:41 2010 +0000
-
-    removed admin bus communication from router.c
-
-commit b6e7962ca7e92c1638c9ddd54d343c1ba8faa0ac
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 14:59:24 2010 +0000
-
-    when removing mappings, set mapping list to NULL if removing last mapping. Fixes segfault on /connections/get when all mappings have been removed
-
-commit 615af8fb077710cc56ccf15fa099fcadf25fbdfd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 14:40:24 2010 +0000
-
-    simplified disconnect handler
-
-commit cf359b623536c47fdbc1ea244de9657909813f7a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 14:09:58 2010 +0000
-
-    substituted "signal" for "param" in function and variable names where appropriate
-
-commit 81c501475df656d53bc1fc980c5cfe579644b478
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 13:57:21 2010 +0000
-
-    added correct return values
-
-commit a4221a7f47ffdc7dad75a55b26d18640fcf8ca20
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 27 12:05:59 2010 +0000
-
-    apparently forgot to commit changes to router.c
-
-commit d8b360e1302fdc16d4277d1d7df52a1e7f5b2400
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Aug 26 22:51:39 2010 +0000
-
-    enabled "/disconnected" message
-
-commit ebaadcfa95e002ecd24d1117f99ee68f44b5bdbe
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Thu Aug 26 17:02:01 2010 +0000
-
-    added mapper_db.h to install
-
-commit 7cb5ef2474abf0dc04c3325d5831092e90a7aa9e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 25 02:29:16 2010 +0000
-
-    libmapper: add function to find mappings with specific device and signals.
-
-commit 05b36cae8f09c4a7e1e8deb43537441d1260ee4c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 25 02:29:02 2010 +0000
-
-    libmapper: prototypes for searching mappings by specific names or by queries.
-
-commit 064f33cb32e2ba8d0dde47829824b87f09c61648
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 25 02:28:52 2010 +0000
-
-    libmapper: add some functions to query mappings for particular signals.
-
-commit c0067fb182e8f1e97d7ab6ccad9f4b3aa7bb89dc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 25 02:28:42 2010 +0000
-
-    libmapper: correct the comments for mapper_db_mapping* functions.
-
-commit 0f04d004c6b819ac661cb93ab3fc00300042735f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 25 02:28:32 2010 +0000
-
-    libmapper: move mapper_db_add_mapping_callback() to the right section of db.c.
-
-commit 2f519b68dc291967522d4a4c658771e24b755b05
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 24 03:14:05 2010 +0000
-
-    libmapper: add the basic update function for the database of mappings.
-    
-    Left a couple of fields to fill in later.
-
-commit 0de5973a5344bd6fecdd2a573d43446fc52440d0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 24 03:13:51 2010 +0000
-
-    libmapper: factor out more of the code to update db struct fields from params.
-
-commit 24596085841c4c066d4564b4f344e62e01b49ae5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 23 20:34:53 2010 +0000
-
-    changed enum "error" to "mapper_error" for avoid conflict when building max external
-
-commit 51198259f51a6db7da22d710723a1bfbaba60cce
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 23 16:16:14 2010 +0000
-
-    libmapper: redefine the signal handler prototype to reflect recent changes.
-
-commit c32847185cb1c5f323105895eeed846b15e1798f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 23 14:26:01 2010 +0000
-
-    folder reorganization
-
-commit 47d3b045045f66a9eb05ddef87b5e74396e0f3a5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Aug 22 20:41:28 2010 +0000
-
-    changed insig handler to pass signal rather than device. Also tweaked testrecv.c and testexpression.c (both now work)
-
-commit fd4353a1c0e37085b16efcc8ef2f071cd37b77d9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:33:49 2010 +0000
-
-    libmapper: add a test for matching links against all devices.
-
-commit 85ef3c89ef657433c2a5d479de4c9560e6ca84fb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:31:21 2010 +0000
-
-    libmapper: query links that match lists of source and destination devices.
-    
-    Demonstrated in testdb, the function
-    mapper_db_get_links_by_source_dest_devices() takes two queries that
-    search the device list, and performs them over the link records to
-    return any links that match the source and destination lists.
-
-commit 16a88a44ce61cfd1ca64d5c77c34c64de6251591
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:31:10 2010 +0000
-
-    libmapper: implement similar database for links.
-
-commit 243f18aff5e710d4253ac5d23e307a143bd3bc5b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:30:59 2010 +0000
-
-    libmapper: signal callback add/remove functions.
-
-commit 3fb6cf5aa81c9bb15af5cbdeeb1a324faf3e34bd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:30:51 2010 +0000
-
-    libmapper: generalize callback list add/remove functions.
-
-commit df199c39d3e6415260d25b5e4f2e64741224430a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 21 21:30:42 2010 +0000
-
-    libmapper: generalize the list iterator function.
-
-commit dfd646dca5599863ac9e7db70aa3ee990fddf7ab
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Aug 19 23:29:41 2010 +0000
-
-    max libmapper object compiles, instantiates, registers on network :)
-
-commit e4ab3e3f6e1f538b11bc6b7cd924e56f391949f7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 19 18:06:29 2010 +0000
-
-    libmapper: generalize the query code by passing in a compare function.
-    
-    Provides general functions for creating and freeing query context from
-    a variable number of strings.
-
-commit 0eefdc6ee6aebd384c034a1961aa3ee90bebdf2e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 19 18:06:23 2010 +0000
-
-    libmapper: use a function to prepend an item to a list.
-
-commit 14d81a80b33b2e951ed28012911920f3ccae0a65
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 19 01:25:01 2010 +0000
-
-    libmapper: add internal input and output signal databases with queries by device name.
-    
-    Currently choosing to put a pointer to the device name in the signal
-    struct, but we have to be sure to manage this properly and avoid
-    double-freeing it, since signals in the database will have their own
-    string, but signals belonging to local devices will point back to the
-    device's string. (Or we could leave them as null.)
-    
-    This patch doesn't yet add any handling for the
-    /namespace/<input,output> messages.
-
-commit 9ef8e59646e46b2b0dde33b419964f1b03ff8e9b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 19 01:24:47 2010 +0000
-
-    libmapper: Rename mapper_db_add_or_update_params -> ..update_device_params.
-
-commit b677fa8764a4f6a94ca151d51592e223b2b296e6
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Aug 18 21:54:01 2010 +0000
-
-    initial (non-working) commit of libmapper max external
-
-commit e68b5a9d380b3d0541a8ad83b17fd137793474ab
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 15 19:03:44 2010 +0000
-
-    libmapper: use mapper_mapping_set_linear_range() during calibrate.
-    
-    Changes it to take a pointer to the range structure and handle
-    partially-known range parameters correctly.
-
-commit 7128248cfc82d067187fc91d697631fb70a9e545
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 15 18:08:05 2010 +0000
-
-    libmapper: fix a return value from mapper_mapping_perform().
-
-commit aacc07ebc259f1e54c2a79ce602bd97fe3b2e612
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 22:19:33 2010 +0000
-
-    fixed routing of signal from mapping to clipping to output
-
-commit 4c33f334f06b427c0818de2bab8a7aaf424788e8
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 21:53:35 2010 +0000
-
-    better solution to "@scaling expression" property without supplied expression. Also filtering mapping output by muted property.
-
-commit b03d4972854b727a1defafd192cfbe46e7d441b0
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 21:35:41 2010 +0000
-
-    changing scaling type to bypass should not change stored expression. Bypass mode indicates that properties are ignored but remain unchanged
-
-commit 74c0d031c43294d0537ce791f7d1cd92dbd359cd
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 21:31:07 2010 +0000
-
-    allow changing scaling type to expression without changing expression
-
-commit 0261db9d9f4045de37802ef828a5ea7ce516a103
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 19:05:27 2010 +0000
-
-    fixed overwrite of ranges in mapper_mapping_set_from_message()
-
-commit 63974b78a56a80a6f3b5f4d5c219b2adfcb7659c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Aug 13 19:00:38 2010 +0000
-
-    updated /connection/modify handler
-
-commit 8f731629946d0f9169676a3b0bb861a35d2daf87
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Aug 13 02:41:55 2010 +0000
-
-    libmapper: proposed API for matching items in the database.
-    
-    Devices, signals, mappings, links.
-
-commit b40f3e30f6f0ef9d2ab4c87c01afab5b044e9912
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 20:49:33 2010 +0000
-
-    libmapper: split off the signal struct "properties" into a db struct.
-    
-    Similar to the previous commit, we need to be able to describe
-    properties of a signal independent from the signals actually used by a
-    device.  These "properties" are different from the signal "state" like
-    its current value.
-
-commit e16bd683017a13ef74b1b2f9722efd76fb40d774
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 20:09:23 2010 +0000
-
-    libmapper: move parts of the mapping struct into a public header.
-    
-    We can reuse the "properties" portion of the mapping structure as a
-    public struct returned by db queries.  The "state" portion remains an
-    internal type.  This unfortunately means that access to properties of
-    a mapping require "props." prepended everywhere..
-
-commit bc9810d8003b04b00315228dba5b39b8328afd7c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Aug 12 19:29:34 2010 +0000
-
-    added /connected message responses with properties. Also tested clipmodes
-
-commit abcf92f6e57d140992b53f69e330c6e09f22084d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:59 2010 +0000
-
-    libmapper: overhaul of the /connect_to handler, set mapping properties in mapping.c.
-    
-    Keeps basic handler in admin.c, but moves construction of mapping
-    properties from the message parameters into mapping.c.  Lays out
-    parameter handling sequentially (with a specific sequence for dealing
-    with range information from the various possible sources) and uses
-    functions on the mapping struct to set the properties; these are split
-    off from the router_add functions in router.c.
-
-commit 3abb8bace23ef1cc8b22934bc069e7a8ceed72c5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:50 2010 +0000
-
-    libmapper: handle target _signal_ name in mapper_router_find_by_target_name().
-
-commit 6012400c80f562ffdcf7747cd4ebed210e65f2a0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:43 2010 +0000
-
-    libmapper: fix device and signals names in testlinear.
-
-commit 4072d2e3422b4543ae17d0c22cb629c5167636f5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:36 2010 +0000
-
-    libmapper: change mapping 'type' to mapping 'scaling', prepend SC_ prefix to enum.
-
-commit 39c3ebac9cc3d64b235b7ee38837efe88fb7f2fe
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:26 2010 +0000
-
-    libmapper: make get_expr_Tree() take a const string.
-
-commit ac61813fa51a23968fb1aafa4e59638bdaf060c7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:18 2010 +0000
-
-    libmapper: add admin name to a couple more traces.
-
-commit b652239212f70f637be2f555e6b9eaf2f66259f2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 12 05:05:11 2010 +0000
-
-    libmapper: fix, endless loop in mapper_router_find_by_target_name().
-
-commit 6075d7c0d8191ce71a879f581688453d28310b95
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 11 16:56:34 2010 +0000
-
-    libmapper: move find-stuff-by-name loops in several handlers into functions.
-
-commit f5fd980bf4b7b0de708d5e66ef43bf7244769969
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 11 16:56:22 2010 +0000
-
-    libmapper: avoid unnecessary strcpy in /link, /linked, /unlink, /unlinked handlers.
-
-commit dfac9cbf49c99769b979e33613d47d6cb7b89189
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 11 04:11:26 2010 +0000
-
-    libmapper: use double-pointers as iterators to walk through a database query.
-    
-    The user must dereference the pointer twice to access the record, and
-    he passes it back in to get the next result.
-    
-    Some nice properties of this approach: In the case of walking all
-    records, no memory allocation is necessary.  In the case of searching,
-    a continuation context is passed to allow lazy computation, and
-    reduced memory allocation compared to the eager approach since the
-    iterator is reused.  Both cases are transparent to the user.
-    
-    A test program 'testdb' is included.
-
-commit f87189cc91a87014c6efcc65de05c6d5eb05dc1c
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Aug 10 22:18:29 2010 +0000
-
-    corrected second(sigh) _cplusplus to __cplusplus
-
-commit e9a1d3933ff6884125abc97f3014e76a02646f07
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Aug 10 22:15:11 2010 +0000
-
-    corrected _cplusplus to __cplusplus
-
-commit 5001c8be65cb49aa11431da0d49e3420c6d96aed
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 10 21:43:45 2010 +0000
-
-    quick rewrite of /connect_to and /connection/modify handlers, adding modification of clipping properties. Runs, but some weirdness to be debugged in the signal output
-
-commit 5445049a2db9b9a4d7945d899a36c1149f325348
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Aug 10 21:30:49 2010 +0000
-
-    oops, my bad, broke build
-
-commit 741e98d6ed59b5cef5d176c330ffa25e24c8dd36
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Aug 10 21:29:34 2010 +0000
-
-    Added extern C enclosures to allow c++ to link into library
-
-commit 16e624b95b9f871253e68ed97c988145b4fcff5b
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 10 21:23:31 2010 +0000
-
-    initial commit of clipping functionality
-
-commit 2bea47b26dd58b056f551e08372d935c8103269a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 19:34:57 2010 +0000
-
-    libmapper: add a callback system for modified db records.
-
-commit 129690efdbd490279be5a9aeafcd036e2096e0c5
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 19:01:31 2010 +0000
-
-    libmapper: remove bad "#define DEBUG" from header.
-
-commit 598f37ff40a9795040d909b40df10c5968d7fba6
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Tue Aug 10 18:22:01 2010 +0000
-
-    Added mapper_db_update_new_device_cache function to db.c for use with gui
-
-commit 43df3175c4cf48f8d9b5156d3b351eb0c25213d3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 10 17:47:31 2010 +0000
-
-    substituted calls to mapper_admin_name(admin) for some unnecessary string-fu
-
-commit dfeee31c91a2c6ac88257a56180b5bea414698bf
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 17:15:21 2010 +0000
-
-    libmapper: forgot to add the testmonitor program!
-
-commit b195323ca58aa470530f3bf42248283f3eb0ab91
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 14:53:44 2010 +0000
-
-    libmapper: put compiler/linker flags into variables in test/Makefile.am.
-
-commit 61e9fbf1d73ac9d5da2e33a4e7ddebce6656665f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 14:50:54 2010 +0000
-
-    libmapper: add a small test program to clearly monitor the device database.
-
-commit 68170a61cb652386c4c9c42ad825bd2124209ae2
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 10 14:06:02 2010 +0000
-
-    updated psuedocode documentation of max allocation algorithms
-
-commit b8543a1318371a33332e5ceb6260fcbcd4c5f6ca
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 13:31:30 2010 +0000
-
-    libmapper: tabs to spaces
-
-commit 103b74608f633b5652219a3367dc85a8548698ba
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:13:24 2010 +0000
-
-    libmapper: handle /port/registered and /name/registered.
-    
-    Resource allocation should work again.
-
-commit 1e926007bd08bd30520e7da2ef07b75333ceeec4
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:13:17 2010 +0000
-
-    libmapper: collision_count should be signed, since we use -1.
-
-commit 3821cf1d41fbc84173fb77b6b8cd1d5ae0dca5ad
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:13:10 2010 +0000
-
-    libmapper: fix out-of-bounds string copy in update_device_record_params().
-
-commit 297ad17b5cc0e4fea91d75ac55456623ce19e8b7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:13:03 2010 +0000
-
-    libmapper: seed the random number generator (and use modulo).
-
-commit 75503fc4b46c21aef84f93592b851968766c5331
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:12:55 2010 +0000
-
-    libmapper: don't continue with test code unless devices are ready.
-
-commit 930171de85721d56a56c59391d0b263a826c87ca
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:12:46 2010 +0000
-
-    libmapper: Add device names to debug tracing.
-
-commit a4fff7b445389c68f545b6be3004156fb0940e3b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 10 05:12:39 2010 +0000
-
-    libmapper: fix, if device server does not start, don't try to add methods.
-
-commit 254b9d8f5c5099100a8e94182c20f536dd633601
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 21:56:31 2010 +0000
-
-    libmapper: use parameter parser in /link_to handler, adds some param helpers.
-
-commit 5870e5b4e2c5d7045e4d5b1ddff0c066ce7da950
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 9 21:05:36 2010 +0000
-
-    added device /logout message
-
-commit aacffe7fb79d3088d2629abc8d26bea98ebe4355
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 20:35:43 2010 +0000
-
-    libmapper: change printf to trace, remove extra printfs.
-
-commit e5248e0a98c29f936a35ec3f4492fa83f3378603
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 9 19:52:51 2010 +0000
-
-    fixed memory allocation bug causing strange expression parsing
-
-commit b7c38f6619bfbc096a0223ef22e5277b3613c487
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 19:03:18 2010 +0000
-
-    libmapper: move db find function to external API, and use friendlier names.
-
-commit 26e9ee140f6c54bf0b92bf67f83d4b0806c1494d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 9 18:14:10 2010 +0000
-
-    added handlers for:
-    /logout
-    /linked
-    /unlinked
-    /connected
-    /diconnected
-
-commit e216c5f7151cc80c7117f90dc8a2712c8c69bcde
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Mon Aug 9 16:52:19 2010 +0000
-
-    added casts to various mallocs in order to comply with stricter c++ rules
-
-commit 68cfe9b5225e241f3f3ab642867fb3f9b70a903e
-Author: Vijay Rudraraju <vijay326 at gmail.ca>
-Date:   Mon Aug 9 16:38:57 2010 +0000
-
-    added casts to various mallocs in order to comply with stricter c++ rules
-
-commit fcd917550674899ac3664cf4447fae31fd9e5067
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 02:12:01 2010 +0000
-
-    libmapper: enable device database and fix it up to use parsed parameters.
-
-commit 46ce12f51a77ac84b1dbe19cea707df240badfd2
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 02:11:51 2010 +0000
-
-    libmapper: roll back changes to the admin.registered field.
-
-commit 394ea8fc30e52b5c8db8bd5d48280e1fcb83c3cc
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Aug 9 02:11:43 2010 +0000
-
-    libmapper: replace more lo_send() calls and note why we don't do it sometimes.
-
-commit 88d11913b9265863eeb80c91929515ad0c93a6c6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:50:24 2010 +0000
-
-    libmapper: move admin's OSC handler connections into a struct.
-
-commit 05f021573bb687c3d99a54a8f72b72103dbd668e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:23:56 2010 +0000
-
-    libmapper: replace lo_send() calls with a function that knows the @-parameter format.
-
-commit 6d0aef4e0b46e753bd3c09c9f1d5c0fd4df6c8db
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:23:48 2010 +0000
-
-    libmapper: add type information to parsed parameter struct.
-
-commit c3ccd0150ffb3da0faf4f72be9b1b417c72b9bd8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:21:21 2010 +0000
-
-    libmapper: fix extra slashes at the beginning of admin messages.
-
-commit c27693ac7c0ad7ac53159f69d2a41ad80108e807
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:21:14 2010 +0000
-
-    libmapper: use direct array access for message parameters.
-
-commit 1bdfa29f2c7df5d90ba1f88ed17b3baf8d4a5499
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Aug 8 21:21:06 2010 +0000
-
-    libmapper: add an assertion macro for debugging, "die_unless()".
-
-commit b880fa60e8cd157d2aa7d8355837bab095723a85
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 7 21:59:23 2010 +0000
-
-    libmapper: Add an internal API for parsing message parameters.
-
-commit 5f1193ee7c638c7df0d1e351eb97f6fa1af38e3c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 7 20:13:29 2010 +0000
-
-    libmapper: Move code that keeps network device info into its own file.
-
-commit 984b3fe76a3d3e293685c83bce6d255ea4524f79
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Aug 7 20:13:14 2010 +0000
-
-    libmapper: fix, msig_full_name() didn't properly null-terminate the string.
-
-commit c131bc231f2caec4671ef719f065a28a56190322
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Aug 6 17:38:30 2010 +0000
-
-    libmapper: fix segfault, initialize admin.name member.
-
-commit 204a8dae583543551a5923d7586e0ee02ac002df
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Aug 5 20:22:35 2010 +0000
-
-    libmapper: ran everything through 'indent -kr -nut', with manual clean-up.
-    
-    Everything now fits in 80 columns, no tabs, 4-space indentation.
-
-commit c0b08d23e78cf08b2f4d61be0a1007087541d76a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Aug 4 18:53:12 2010 +0000
-
-    handler_device_alloc_name() now only calls on_collision() if the device names match
-
-commit 2f65eb856e4c3866f20a31b8078bf50e7d60f599
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 17:39:23 2010 +0000
-
-    Move the STK synth out of the libmapper directory.
-    
-    It uses libmapper, but it is not part of the library.
-
-commit 85618290ac30a2a6f1def60671b51ca78944ac57
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 17:38:04 2010 +0000
-
-    libmapper: remove executable of the STK synth.
-
-commit 95e9e62cd8dc6a7573d0c34719c8e9d5e8004906
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 16:45:38 2010 +0000
-
-    libmapper: fix, missed one reference to device type enum which was removed.
-
-commit 9f34073f0073b566f24379168aee3d14f841d789
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 16:44:43 2010 +0000
-
-    libmapper: fix, forgot to add ..linear_range.. and ..linear_scale.. to header.
-
-commit d0dc6a2ed4283586ea3be0f2f785daf22ea7420a
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 16:28:30 2010 +0000
-
-    libmapper: Move mapping range info into a substruct and use a "known" bitfield.
-
-commit e251cfbd260ae43816e077e68c5036573876f0fb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 16:28:20 2010 +0000
-
-    libmapper: for linear mapping, calculate a scale and offset.
-
-commit b5281f28ed3e771c69519a62321886538f67bdb6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 16:28:12 2010 +0000
-
-    libmapper: get rid of the device_type enum, which is not used.
-
-commit 4e02d19371af45fd6b395c958654b06257430ce1
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Aug 4 01:24:52 2010 +0000
-
-    libmapper: Fix all warnings, mostly unused variables.
-    
-    Now possible to use ./configure --enable-debug again, which turns on -Werror.
-
-commit 8320ae3e47e488327d1739f6528771c29251aa09
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 3 22:30:04 2010 +0000
-
-    overhaul of /connect_to handler
-
-commit ce22faff851c520b76566b550dcfd567c99db067
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 3 22:02:55 2010 +0000
-
-    added mapper_router_add_blank_mapping function
-
-commit e863a27f5a318edbea94dd9e90d869ba7a04ab0c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 3 22:01:30 2010 +0000
-
-    moved /connected message to mapping creation functions
-
-commit 52837b7c385893e8548f6eaa7e07c22f240b5c89
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 3 21:10:06 2010 +0000
-
-    libmapper: function to build device name from prefix and ordinal, use everywhere.
-    
-    Previously this was done with sprintf everywhere.  Now this string is
-    built once and cached for later uses.  The function is internally
-    called from a macro to help catch instances where it would return
-    null, i.e., if the ordinal is not yet registered.
-
-commit af4a93957d424301b8ad2cc6f4b6d9bc311b6f98
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 3 21:07:36 2010 +0000
-
-    libmapper: rename 'announce' functions to 'probe' and don't specialize in on_collision().
-    
-    Since proposed resources are announced using the '/probe' message, as
-    differentiated from registered resources that are announced using the
-    '/registered' message, it is better if the source reflects this
-    terminology.  Now instead of a specialized switch in on_collision(),
-    we can use a callback to handle formatting the '/registered' message,
-    so that the resource-allocation logic remains independent of message
-    formatting.  (e.g., the name.ordinal needs special processing to
-    format the '/registered' message.)
-
-commit ea00bb51b9530b84d1b75c557da13bc32692eb5e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 3 15:53:54 2010 +0000
-
-    libmapper: re-enable older test programs.
-    
-    Some of these currently segfault, revealing some erroneous pointer
-    operations in the library.
-
-commit e26591d36795e75e638eaffde80c185500a7b91b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Aug 3 14:36:21 2010 +0000
-
-    libmapper: Fix crashing on connect, bad arguments to lo_send().
-
-commit 3459c8e14ba4a3b24808b18cf6120181da4f936e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Aug 3 13:07:28 2010 +0000
-
-    progress: compiles and runs, but segfaults on /connect
-
-commit f83e51fba5d3537e5d66adb195fcef9588e068a9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Aug 2 21:14:14 2010 +0000
-
-    simplifying creation of mapping connections - do not compile :)
-
-commit a05300b0d724c28e959f82bf6e92a49b1a83378c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sat Jul 31 23:04:26 2010 +0000
-
-    libmapper: added /<device>/connections/get handler
-
-commit 3a5ba8690fad4e29c5962863abc3d09c6b3ce669
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 29 18:26:24 2010 +0000
-
-    admin.c: added /links/get message handlers
-
-commit ed6354d53ee5c676b874622ba4fcdee2f03f7e4c
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Jul 29 18:13:56 2010 +0000
-
-    added /link and /connect automation to test.c
-
-commit a528e7f2d5b6306ca73bc8e34c45efd72a1dc868
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Jul 28 21:50:24 2010 +0000
-
-    Add the pkg-config m4 script for autoconf to the repository.
-
-commit 89d50cf432009e735a0dbf4a1c3eba3d2a3971d9
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 28 21:17:07 2010 +0000
-
-    can now correctly create a mapping with non-default properties, but segfaults unless you create and delete default mapping first
-
-commit 2e44c4d23b4c4889239a58accd72472b85036254
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 28 20:38:54 2010 +0000
-
-    added GUI OSC messages
-
-commit 5f041876f5021c9b628af4cb5e576b8cc412b686
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 28 20:38:26 2010 +0000
-
-    added GUI OSC messages
-
-commit bd8d203356a37e163e3d5a9fe612b8993822f535
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 28 20:14:24 2010 +0000
-
-    libmapper: fixed bugs in /connect_to function when called with additional properties
-
-commit d2624a5d91a55834f32f45267a29b84a90381c3a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 28 17:56:01 2010 +0000
-
-    libmapper: added range invert
-
-commit 4a6e843e497f13c4f37416b6475701bf878d5645
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Tue Jul 27 22:51:41 2010 +0000
-
-    libmapper: added support for "calibrate" scaling type, autocalibration. Also switched expressions generated in "linear" mode to %g to truncate trailing zeros in expression string
-
-commit 8d27bab9ec69f3ec5222dec26077de4ecba27a9d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jul 25 02:11:52 2010 +0000
-
-    reverted some unnecessary changes (from 2068)
-
-commit 2547a9220065f3b6684e0590b3c0f2c7c89f5795
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jul 25 01:50:19 2010 +0000
-
-    - test.c now runs successfully with /link, /unlink, /connect, /disconnect, and /connection/modify.
-    - router struct now stores parameter name without device prepended
-    - /link, /unlink, /connect, /disconnect, /connection/modify handler functions now check for OSC address matches before searching their parameter-space
-
-commit 1c88f504bac9953bf3da5d3cc518534d9510f9a3
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 23 20:03:12 2010 +0000
-
-    /connect_to now working properly
-
-commit 19ff999454b4ed9f305e124d9f2751ef2804442f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 23 18:28:17 2010 +0000
-
-    /connect now working properly - still some problems with /connect_to
-
-commit aecf619aa20e822e464bcdfdd1937916b2f68e0d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 23 13:42:12 2010 +0000
-
-    small changes
-
-commit 27311db5482bd49d87481fe1e30c39aca340ee0f
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 21 02:57:27 2010 +0000
-
-    only destination device responds to /connect message. Signal type still not reported correctly
-
-commit c12e91276d64984af83fb45d84e886fb3ab666f5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jul 21 02:56:31 2010 +0000
-
-    added signal type to data structure
-
-commit 17015f174d1ffd57dd9c3a8877b9dfcfd292fefb
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Jul 20 18:06:43 2010 +0000
-
-    Remove executable permission from C files.
-
-commit 60e018e4e8e2e346e55d80f24b7c01a4b0f2d3d1
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 19 22:35:41 2010 +0000
-
-    cleanup
-
-commit fb14211e48da703d0ed1de0499c12af42c809a85
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 19 22:02:21 2010 +0000
-
-    modified /link protocol to work without storing all device metadata
-
-commit 05d15e2fb9025309ac3bd3636c73f0f04e7a9821
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Mon Jul 19 19:53:59 2010 +0000
-
-    updated definition of mapper_clipping_type
-
-commit ee393e7559a5a1ab05db8d8f6f56c94e3387fa0e
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Sat Jul 17 00:27:00 2010 +0000
-
-    B3 synth
-
-commit ccf1afc46702bc5dcd92f6cc9efa141da42416e7
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 16 20:16:13 2010 +0000
-
-    added Jerome Nika to libmapper AUTHORS
-
-commit b52b3858a9b64e5602fdcf91223d5beb20482bdf
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Jul 14 21:05:09 2010 +0000
-
-    Add a clean command for pkg-config file.
-
-commit 5df58fdfb8ad9c154114ebf3dcbec3a7e4abc67b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Wed Jul 14 21:05:03 2010 +0000
-
-    autogen: Use git to check for git.
-
-commit 9e4b1e31ef7ed326c51bf61e658ff4a8412220be
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Tue Jul 13 15:32:21 2010 +0000
-
-    Problems in /disconnect fixed.
-
-commit 5a519fb01be6911e012062c091897718066e976c
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Wed Jul 7 20:51:04 2010 +0000
-
-    (Almost) final version. Last methods implemented, commented, still little problem with /disconnect...
-
-commit cb8b259198ca33e49061f7a2fdafae93c64992a3
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Tue Jul 6 22:31:47 2010 +0000
-
-    unlink, unconnected. With /unlink, /disconnect, properties for /connect_to, /connexion/modify
-
-commit 0b403004093345ae831fcbfd87c2d19d892406bc
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Mon Jul 5 16:24:57 2010 +0000
-
-    Unlinked and unconnected.
-    Properties added for /connect_to, /unlink and /disconnect implemented but still problems with /disconnect.
-    Missing /connection/modify, and still "unreadable"...
-
-commit f150ee79100b23dd60a5504780a6cbaef08c5d7a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Jul 2 17:02:41 2010 +0000
-
-    update to DOT protocol documentation
-
-commit 274ef7fc45935da5c0230fbaa3034fc00348f558
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Fri Jun 25 16:14:38 2010 +0000
-
-    Unlinked and unconnected version (not yet commented and organized)
-
-commit d7e808a56472602243818458b40b0451ac0d8144
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Jun 17 21:10:32 2010 +0000
-
-    configure: Check for swig and python-config instead of using SWIG_PYTHON macro.
-    
-    It seems AC_PYTHON_DEVEL (used by SWIG_PYTHON) is broken on OS X and
-    Debian/Ubuntu, because it provides compiler flags that don't
-    successfully compile, and it hasn't been maintained since 2006.
-    Instead, use the python-config program to extract required Python
-    flags.  Check for python-config only if SWIG bindings are specified,
-    and use AC_CHECK_PROG to find the swig executable.
-
-commit d3a951ec5039c6d0379e04bcf66108d5b319f517
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Jun 17 21:10:27 2010 +0000
-
-    Depend on an older version of libtool (for OS X)
-
-commit 6af4ac29c8178b507e104b2c1a38bd80dd475e64
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Jun 15 16:25:57 2010 +0000
-
-    configure: Check for programs according to enable options and describe status when done.
-
-commit da9c18f7a05882dbca4aad25ad20b299621020ca
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Jun 15 15:46:49 2010 +0000
-
-    Warn about problems with libssl and libcrypto packaging if Python needs them.
-    
-    Found an annoying problem with compiling against Python.  The
-    configure check would fail because it couldn't link against libssl and
-    libcrypto, neither which is used here.  However, Python wanted them,
-    but the symbolic links for these libraries were not present on
-    Debian-based systems even though the packages are installed.  It turns
-    out the dev packages for these libraries must be installed for
-    AC_PYTHON_DEVEL (which uses Python's distutils to determine library
-    dependencies) to be satisfied.
-    
-    Solution is to either not use AC_PYTHON_DEVEL or to just warn the user
-    that these dev packages need to be installed, so I chose the latter.
-    Unfortunately AC_PYTHON_DEVEL (called by SWIG_PYTHON) doesn't give us
-    an opportunity to provide a message on failure, so we have to add the
-    warning just before calling it.  This doesn't seem to be a problem on
-    OS X, but more testing is needed.
-
-commit 779c1cf4c3ef8f2bd301cd9a34b9ccc14c95e354
-Author: Jérôme Nika <jerome.nika at gmail.com>
-Date:   Mon Jun 14 17:18:14 2010 +0000
-
-    version with expression interpreter with the string received from the terminal
-
-commit a756ebcdbcdf4dd11ff3877de358e2952cedea76
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Jun 9 21:17:41 2010 +0000
-
-    updated mapping message documentation
-
-commit aeef83f402598d6d8dd3a88233bd0d46d058dc90
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue May 4 03:58:22 2010 +0000
-
-    Move signal mapping into its own function, and account for higher-order polynomials.
-    
-    Note that this assumes coefficients are floats.
-
-commit 4f59ff5acf7d896259e3b9723cc81946b1352f95
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue May 4 03:58:17 2010 +0000
-
-    Typo in README.
-
-commit d6471c2c7b9bfbbbf3f9aa515f302d09a4c87cca
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Fri Apr 9 04:09:27 2010 +0000
-
-    changed logout message from "/device/logout" to "/logout"
-
-commit 1eb353cbab86d3b1089599460baf1199fa147b0e
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Thu Mar 18 22:02:40 2010 +0000
-
-    update to DOT message documentation
-
-commit 6b88d68a57483fd3eb71124bd8faf062fe48803a
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 17 19:10:05 2010 +0000
-
-    removed /connection/properties message - replaced with /connected
-
-commit 646cf7e019e827b286fd2dc2188b4740bf02d147
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 17 18:30:59 2010 +0000
-
-    updated documentation of mapping messages to include 2-stage connection, @canAlias and @hash properties
-
-commit 91ba3c09509d13f9a6726d909fd3aaa778814b3d
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Wed Mar 17 17:52:09 2010 +0000
-
-    corrected documentation of mapping messages
-
-commit 9e766c8f76ec8b8149b66d09249ba99592b515b5
-Author: Joseph Malloch <joseph.malloch at gmail.com>
-Date:   Sun Jan 10 21:53:28 2010 +0000
-
-    added message documentation to libmapper/notes/
-
-commit 9c45f1ba44e1a48e0aa68707edea3fa38d859b44
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 4 05:22:19 2010 +0000
-
-    Add data structures for mapping behaviour and do a linear scaling.
-
-commit 486da6c09d9fdd03617f075508168800027e1712
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 4 05:22:14 2010 +0000
-
-    Add a test for sending and receiving through a linear mapping.
-
-commit 83c23ef3f3e096bc165b5acd66666c91c3f0173b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 4 05:22:09 2010 +0000
-
-    Fix erroneous doxygen comments in types_internal.h.
-
-commit f911e4017c106573f4a9e8ce817caa5b53b9b847
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 4 05:22:06 2010 +0000
-
-    Add necessary files to compile a Doxygen internal reference.
-
-commit b29f3509fcb22fe174afe3331ae40589d899cd41
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Mon Jan 4 05:22:01 2010 +0000
-
-    Add a debug trace if no interface was found.
-
-commit 6136d415b17c9276fac29bcee34421dede89e43c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:39 2010 +0000
-
-    Make testrecv wait for and use the signal name.
-
-commit 81d2b5d7a6e1fdf040840f7b7f1753b2aa55d7f6
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:34 2010 +0000
-
-    Wait for both ordinal and port to be allocated before starting server.
-    
-    Otherwise msig_full_name() may return error after port allocation but
-    before ordinal allocation, and handlers can't be registered.
-
-commit 2defc5a12ce0f0579427a0250d5fa6183f2cf9d9
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:25 2010 +0000
-
-    When polling admin, process more than one message at once if available.
-    
-    Processes maximum 10 messages, probably adequate for now.
-
-commit 90b420f992f02196a7984a12dc172c8742960f4b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:19 2010 +0000
-
-    Add a function to get the name of a signal.
-
-commit 57c086eb6e27046e48a1ef7b64caa7d0eb2c6e36
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:14 2010 +0000
-
-    Handle error condition when admin cannot be created.
-    
-    This occurred when an old version of oscdump was used, and the port
-    was reserved non-multicast and thereforenot available.  Instead of
-    segfault, mdev_new() should return NULL.
-
-commit f3e262934197e4cea79f977633cda9bf328d6db7
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:55:02 2010 +0000
-
-    Add a debug option to configure.
-
-commit 1c69f86ef3874f0742e4c812b20a9b8f5280024f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Jan 2 20:54:41 2010 +0000
-
-    In get_interface_addr, encountered a case where sa=0, so check for it.
-    
-    It doesn't seem to be documented what to do in this case, but it would
-    seem natural to at least report the condition in debug mode and then
-    skip the case.  (Instead of segfaulting.)
-
-commit d7013eaa57ae42c2d309ca594c948207ce923e21
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 06:46:48 2009 +0000
-
-    Work around an apparent bug in gcc's optimizer, which breaks grow_ptr_array on O2 or O3.
-
-commit 44c7ba1656743949b1e932fc6367457f58eea225
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 06:22:58 2009 +0000
-
-    Fix using wrong value (dumb mistake) in mval_add_to_message().
-
-commit f02c0683168d360da3b064ddb18ab023dda67bec
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 06:22:55 2009 +0000
-
-    Do not install test programs.
-
-commit 3f96a48fb485ca604d7c4807b78a6aa4b7d0ea9c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 06:22:52 2009 +0000
-
-    Put header files into mapper-0/mapper directory and include extra headers in dist.
-
-commit ece1c8e8d2886c2fc617042c8cc87dc88b6e304b
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 06:22:47 2009 +0000
-
-    Fix trace macro in non-debug mode.
-
-commit df74164dee7a6d618fb41d189e0365999d621182
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 05:17:24 2009 +0000
-
-    Rewrite enumeration of device namespace.
-    
-    The code to do this is in admin, accessing device data structures.  If
-    more cases are found where namespace enumeration would be useful, it
-    might be better to provide an enumerator interface for the input and
-    output lists.
-
-commit 46900773846c619ebbf544105a29f42aac52085f
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 03:55:39 2009 +0000
-
-    In testrecv, send messages in test and actually check whether they were received.
-
-commit d6bbce06228d855cc040465aefdbd31f19f08a97
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 03:22:50 2009 +0000
-
-    Add functionality for specifying receive handlers and opening a server.
-    
-    This commit also refactors the 'trace' debug function into an
-    internally global macro.
-
-commit c867b3c50d8ca3480307d3aa4022dd327c06ed09
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 03:22:15 2009 +0000
-
-    Add a callback field to the signal struct to be used for handling input.
-
-commit 40f2f3b73472f52c9fd314be5e1696990cf331fd
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Tue Dec 29 03:21:19 2009 +0000
-
-    Move controller and admin tests into their own test programs.
-
-commit 6657c004c0c2ad3510a8b3d605889b195012d252
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 25 21:54:36 2009 +0000
-
-    Add functionality to maintain a list of signal mappings.
-
-commit e0d25bf37b8cbfa6fcf592cd82f945c348236f95
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 25 21:54:33 2009 +0000
-
-    Change some string pointers to const.
-
-commit 67c1cbfd074e4e86b116adde8176c9c8030351a0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 25 21:54:30 2009 +0000
-
-    Add some internal structs to handle mappings.
-
-commit ad0cf488dd72f0cf1868469614a80ca7a47bd719
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:22 2009 +0000
-
-    Fix some warnings.
-
-commit 614243f279cca2eb1d2b2a512b03362a1d94cf45
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:21 2009 +0000
-
-    Mistaken double-pointer type for router list in device struct.
-
-commit 342027fecf0d6e2dd6da3a4a3df72f2a4b78ab3e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:19 2009 +0000
-
-    Put 'mapper_' prefix on router routines.
-
-commit 98e71c692f3203be23f4ef4cf071c8aa4f296ff3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:17 2009 +0000
-
-    Add a define to configure.ac to avoid conflicts with pyconfig.h.
-    
-    This is a work-around for an apparent annoyance in Python's header
-    files.  "configure" would fail because Python also defines
-    HAVE_GETTIMEOFDAY.
-
-commit a1e5a40a4db296e95f933b2c28185db869dc4d6d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:15 2009 +0000
-
-    Remove test2.
-
-commit 5317644346966fd9e8198d4a68ede62514156a1c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Thu Dec 24 01:18:13 2009 +0000
-
-    Forgot to add router.c in previous commit.
-
-commit 9ebaa11f364532e4dd7202115cfedf508252ee5e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 18 05:14:59 2009 +0000
-
-    Add a skeleton router interface.
-
-commit 955e9105a7ed081b16a455ed9d04c1496078c58c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 18 05:14:58 2009 +0000
-
-    Add a liblo error handler for admin server.
-
-commit 0b89fa7051c77ced4c94b1dd396c2e08408dc8ef
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 18 05:14:56 2009 +0000
-
-    Call msig_update_scalar() during controller test.
-
-commit 6d5d22857a052caaac7a9071e3a1bfe7fa81f4e0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 18 05:14:54 2009 +0000
-
-    Actually block in mdev_poll() if requested.
-    
-    (This will change to a lo_server_recv_noblock() call in the future.)
-
-commit 82320ee6770ff80973c9ebe3cc4c337fd1da8c64
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Fri Dec 18 05:14:52 2009 +0000
-
-    Add function prototypes for updating signal values.
-
-commit ab25b2a34346a7e5748d96a7fe228a478efc566e
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 05:12:52 2009 +0000
-
-    libmapper: Forgot to remove a line in testmapper testing the name assertion.
-
-commit 250b996d2c2ee3d4b44ce37df4355c66c6a8338d
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:33 2009 +0000
-
-    libmapper: Add an interface to fill in signal definitions easily.
-    
-    Perhaps this could be used to just directly register signals?
-
-commit bbf2c499eb0f747e8e4145b3ab43e39aebabf58c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:31 2009 +0000
-
-    libmapper: Go ahead and require C99.
-
-commit 4c3d5febdd9c1a675c9df629e964a872be5e13b8
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:29 2009 +0000
-
-    libmapper: Hide mapper_device structure properly by putting it in an internal header.
-
-commit 3571b42f1196a30deaaa9ef394b50017a9a33ff0
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:27 2009 +0000
-
-    libmapper: Check for POSIX functions, give errors when gettimeofday not found.
-
-commit f1c272462458f89269be048e90ed6530ccbbaafa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:25 2009 +0000
-
-    libmapper: Re-organization of the data structures into 'admin' and 'device'.
-    
-    A 'device' handles its signals and namespace, the admin deals with
-    talking on the admin bus.  There is some overlap here that needs to be
-    worked out.
-    
-    In any case, abort the 'mapper_method_*' interface in favour of the
-    signal definitions.
-
-commit 18d8f4a6cb4e6b314bee0990f37010b09d5beef3
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sun Dec 6 03:37:21 2009 +0000
-
-    libmapper: Compile the 'test' directory on make.
-
-commit 288feff1c0dab033dd21b1ede830b008294a67de
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:58:26 2009 +0000
-
-    libmapper: Add pkg-config file.
-
-commit c9b98eea4edd79359d6c8a1ebd4a96e239af5c80
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:58:24 2009 +0000
-
-    libmapper: Begin designing a new interface.
-
-commit a11f3841735c0e0f40ca075748adf2b9c4a77bfa
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:58:22 2009 +0000
-
-    libmapper: Fix warnings and get test program to compile.
-
-commit decf4131d780318e4df98e078f85c0bd1f0b9136
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:07:38 2009 +0000
-
-    libmapper: Add autoconf files.
-
-commit ac31bfd9c74cf29a3e14a3e42036baa79e221f25
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:07:35 2009 +0000
-
-    libmapper: Add GNU-standard information files. LGPL license 2.1 or later.
-
-commit 67fd060886e14a2356cb3c8288fa03f0f5f7586c
-Author: Stephen Sinclair <radarsat1 at gmail.com>
-Date:   Sat Dec 5 22:07:32 2009 +0000
-
-    libmapper: Add previous work on C implementation (libmapper) and some new protocol notes.
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index c981bb1..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,883 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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) $(dist_doc_DATA) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/libmapper.pc.in $(top_srcdir)/configure \
-	$(top_srcdir)/jni/Mapper/NativeLib.java.in AUTHORS COPYING \
-	ChangeLog NEWS compile config.guess config.sub depcomp \
-	install-sh ltmain.sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.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 = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = jni/Mapper/NativeLib.java libmapper.pc
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-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__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-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__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"
-DATA = $(dist_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 = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-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
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = src include test examples @SWIGDIR@ @JNI@ @DOXYGEN@ extra
-EXTRA_DIST = libtool ltmain.sh autogen.sh libmapper.pc.in
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libmapper- at MAJOR_VERSION@.pc
-dist_doc_DATA = README COPYING ChangeLog NEWS
-ACLOCAL_AMFLAGS = -I m4
-all: all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
-	@:
-$(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) --foreign'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign 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):
-jni/Mapper/NativeLib.java: $(top_builddir)/config.status $(top_srcdir)/jni/Mapper/NativeLib.java.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-libmapper.pc: $(top_builddir)/config.status $(srcdir)/libmapper.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-dist_docDATA: $(dist_doc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
-	fi; \
-	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-dist_docDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-	fi; \
-	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|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-
-# 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)
-	$(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 \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    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
-	-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=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzip: distdir
-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-	$(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_OPT=$${XZ_OPT--e} 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.lz*) \
-	  lzip -dc $(distdir).tar.lz | $(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 u+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" \
-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-	    $(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:
-	@test -n '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: trying to run $@ with an empty' \
-	       '$$(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	$(am__cd) '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-	   || { 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 $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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-local mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-dist_docDATA 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-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-dist_docDATA uninstall-pkgconfigDATA
-
-.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 am--refresh check check-am clean clean-generic \
-	clean-libtool clean-local ctags ctags-recursive dist dist-all \
-	dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ \
-	dist-xz dist-zip distcheck distclean distclean-generic \
-	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-dist_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-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-dist_docDATA uninstall-pkgconfigDATA
-
-
-libmapper- at MAJOR_VERSION@.pc: libmapper.pc
-	@if ! [ -e $@ ]; then cp -v $< $@; fi
-
-clean-local:
-	-rm -rf libmapper- at MAJOR_VERSION@.pc
-
-# 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.markdown
similarity index 100%
rename from NEWS
rename to NEWS.markdown
diff --git a/README b/README.markdown
similarity index 100%
rename from README
rename to README.markdown
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index 5943253..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1332 +0,0 @@
-# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-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) 2002, 2003, 2005, 2006, 2007, 2008, 2011 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_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.6], [],
-      [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.6])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, 2011 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
-
-# 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,
-# 2010, 2011 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 12
-
-# 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'.
-  rm -rf conftest.dir
-  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
-      ;;
-    msvc7 | msvc7msys | 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='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])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, 2011 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_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,
-# 2011 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 at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to enable 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, 2011 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_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, 2010 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_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])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009,
-# 2011 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_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# ---------------------------------------------------------------------------
-# Adds support for distributing Python modules and packages.  To
-# install modules, copy them to $(pythondir), using the python_PYTHON
-# automake variable.  To install a package with the same name as the
-# automake package, install to $(pkgpythondir), or use the
-# pkgpython_PYTHON automake variable.
-#
-# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
-# locations to install python extension modules (shared libraries).
-# Another macro is required to find the appropriate flags to compile
-# extension modules.
-#
-# If your package is configured with a different prefix to python,
-# users will have to add the install directory to the PYTHONPATH
-# environment variable, or create a .pth file (see the python
-# documentation for details).
-#
-# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
-# cause an error if the version of python installed on the system
-# doesn't meet the requirement.  MINIMUM-VERSION should consist of
-# numbers and dots only.
-AC_DEFUN([AM_PATH_PYTHON],
- [
-  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
-  dnl supported. (2.0 was released on October 16, 2000).
-  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
- python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
-
-  AC_ARG_VAR([PYTHON], [the Python interpreter])
-
-  m4_if([$1],[],[
-    dnl No version check is needed.
-    # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-    fi
-    am_display_PYTHON=python
-  ], [
-    dnl A version check is needed.
-    if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      AC_MSG_CHECKING([whether $PYTHON version >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-			      [AC_MSG_RESULT(yes)],
-			      [AC_MSG_ERROR(too old)])
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
-	[am_cv_pathless_PYTHON],[
-	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-	done])
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  ])
-
-  if test "$PYTHON" = :; then
-  dnl Run any user-specified action, or abort.
-    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-  else
-
-  dnl Query Python for its version number.  Getting [:3] seems to be
-  dnl the best way to do this; it's what "site.py" does in the standard
-  dnl library.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
-  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
-  dnl Use the values of $prefix and $exec_prefix for the corresponding
-  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
-  dnl distinct variables so they can be overridden if need be.  However,
-  dnl general consensus is that you shouldn't need this ability.
-
-  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
-  dnl At times (like when building shared libraries) you may want
-  dnl to know which OS platform Python thinks this is.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
-  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
-
-  dnl Set up 4 directories:
-
-  dnl pythondir -- where to install python scripts.  This is the
-  dnl   site-packages directory, not the python standard library
-  dnl   directory like in previous automake betas.  This behavior
-  dnl   is more consistent with lispdir.m4 for example.
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
-    [am_cv_python_pythondir],
-    [if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pythondir], [$am_cv_python_pythondir])
-
-  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
-  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
-  dnl   more consistent with the rest of automake.
-
-  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-
-  dnl pyexecdir -- directory for installing python extension modules
-  dnl   (shared libraries)
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
-    [am_cv_python_pyexecdir],
-    [if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-
-  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
-  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
-  dnl Run any user-specified action.
-  $2
-  fi
-
-])
-
-
-# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-# ---------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
-# Run ACTION-IF-FALSE otherwise.
-# This test uses sys.hexversion instead of the string equivalent (first
-# word of sys.version), in order to cope with versions such as 2.2c1.
-# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
-AC_DEFUN([AM_PYTHON_CHECK_VERSION],
- [prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
-sys.exit(sys.hexversion < minverhex)"
-  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-
-# Copyright (C) 2001, 2003, 2005, 2011 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_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# 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, 2011  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_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
-dnl
-dnl A few `make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using `$V' instead of `$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001, 2003, 2005, 2011 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_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, 2010 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# _AM_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, 2012 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.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} 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/ax_pthread.m4])
-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])
-m4_include([m4/pkg.m4])
diff --git a/build_darwin_binaries.sh b/build_darwin_binaries.sh
new file mode 100755
index 0000000..e70aff6
--- /dev/null
+++ b/build_darwin_binaries.sh
@@ -0,0 +1,289 @@
+#!/bin/sh
+
+# This script compiles universal binaries of the libmapper library
+# and builds app bundles for the examples and a framework.
+
+ARCHES="i386 x86_64"
+
+SDK="/Developer/SDKs/MacOSX10.5.sdk"
+
+SDKC="--sysroot=$SDK"
+SDKLD="-lgcc_s.1"
+
+# Build darwin binaries for libmapper
+# First argument must be the path to a libmapper source tarball.
+LIBMAPPER_TAR="$1"
+LIBLO_TAR="$2"
+
+LIBMAPPER_VERSION=$(echo $LIBMAPPER_TAR|sed 's,.*libmapper-\(.*\).tar.gz,\1,')
+LIBMAPPER_MAJOR=$(echo $LIBMAPPER_VERSION|sed 's,\([0-9]\)\(\.[0-9]*\)*,\1,')
+
+LIBLO_VERSION=$(echo $LIBLO_TAR|sed 's,.*liblo-\(.*\).tar.gz,\1,')
+LIBLO_MAJOR=$(echo $LIBLO_VERSION|sed 's,\([0-9]\)\(\.[0-9]*\)*,\1,')
+
+if [ -z "$LIBMAPPER_TAR" ] || [ -z "$LIBLO_TAR" ]; then
+    echo Usage: $0 '<libmapper-VERSION.tar.gz>' '<liblo-VERSION.tar.gz>'
+    exit
+fi
+
+# Get absolute paths
+LIBMAPPER_TAR="$PWD/$LIBMAPPER_TAR"
+LIBLO_TAR="$PWD/$LIBLO_TAR"
+
+mkdir -v binaries
+cd binaries
+
+function make_arch()
+{
+    ARCH=$1
+
+    mkdir -v $ARCH
+    cd $ARCH
+
+    tar -xzf "$LIBLO_TAR"
+
+    cd $(basename "$LIBLO_TAR" .tar.gz)
+    if ./configure CFLAGS="-arch $ARCH $SDKC" CXXFLAGS="-arch $ARCH $SDKC $SDKCXX" LDFLAGS="-arch $ARCH $SDKC $SDKLD" --prefix=`pwd`/../install --enable-static --enable-dynamic && make && make install; then
+        cd ..
+    else
+        echo Build error in arch $ARCH
+        exit 1
+    fi
+
+    tar -xzf "$LIBMAPPER_TAR"
+
+    cd $(basename "$LIBMAPPER_TAR" .tar.gz)
+    PREFIX=`pwd`/../install
+    if env PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ./configure --enable-debug CFLAGS="-arch $ARCH $SDKC -I$PREFIX/include" CXXFLAGS="-arch $ARCH $SDKC $SDKCXX -I$PREFIX/include" LDFLAGS="-arch $ARCH $SDKC $SDKLD -L$PREFIX/lib  -Wl,-rpath, at loader_path/Frameworks -llo" --prefix=$PREFIX --enable-static --enable-dynamic; then
+
+        install_name_tool \
+            -id @rpath/lo.framework/Versions/$LIBLO_MAJOR/lo \
+            ../install/lib/liblo.dylib || exit 1
+        install_name_tool \
+            -id @rpath/lo.framework/Versions/$LIBLO_MAJOR/lo \
+            ../install/lib/liblo.7.dylib || exit 1
+
+        if make && make install; then
+            cd ..
+        else
+            echo Build error in arch $ARCH
+            exit 1
+        fi
+    else
+        echo Build error in arch $ARCH
+        exit 1
+    fi
+
+    install_name_tool \
+        -id @rpath/mapper.framework/Versions/$LIBMAPPER_MAJOR/mapper \
+        install/lib/libmapper-$LIBMAPPER_MAJOR.dylib || exit 1
+    install_name_tool \
+        -id @rpath/mapper.framework/Versions/$LIBMAPPER_MAJOR/mapper \
+        install/lib/libmapper-$LIBMAPPER_VERSION.dylib || exit 1
+
+    cd ..
+}
+
+function rebuild_python_extentions()
+{
+    ARCH=$1
+    cd $ARCH
+    PREFIX=`pwd`/install
+
+    cd libmapper-$LIBMAPPER_VERSION/swig
+    make mapper_wrap.c
+
+    gcc-4.2 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -arch $ARCH -pipe -I../src -I../include -I$PREFIX/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c mapper_wrap.c -o mapper_wrap.o
+
+    gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch $ARCH $SDKC $SDKLD mapper_wrap.o $PREFIX/lib/liblo.a $PREFIX/lib/libmapper-0.a -lpthread -o _mapper.so
+
+    cd ../examples/py_tk_gui
+    make pwm_wrap.cxx
+
+    gcc-4.2 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -arch $ARCH -pipe -I../../src -I../../include -I../pwm_synth -I$PREFIX/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c pwm_wrap.cxx -o pwm_wrap.o
+
+    gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch $ARCH $SDKC $SDKLD pwm_wrap.o ../pwm_synth/.libs/libpwm.a -lpthread -o _pwm.so -framework CoreAudio -framework CoreFoundation
+
+    cd ../../../..
+}
+
+function use_lipo()
+{
+    mkdir -v all
+    mkdir -v all/lib
+    for i in i386/install/lib/*.{dylib,a}; do
+        ARCHFILES=""
+        for a in $ARCHES; do
+            ARCHFILES="$ARCHFILES -arch $a $a/install/lib/$(basename $i)"
+        done
+        lipo -create -output all/lib/$(basename $i) $ARCHFILES
+    done
+
+    mkdir -v all/python
+    for i in libmapper-0.2/examples/py_tk_gui/_pwm.so libmapper-0.2/swig/_mapper.so; do
+        ARCHFILES=""
+        for a in $ARCHES; do
+            ARCHFILES="$ARCHFILES -arch $a $a/$i"
+        done
+        lipo -create -output all/python/$(basename $i) $ARCHFILES
+    done
+}
+
+function info_plist()
+{
+    FILENAME=$1
+    NAME=$2
+    EXECNAME=$3
+    cat >$FILENAME <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDisplayName</key>
+	<string>$NAME</string>
+	<key>CFBundleExecutable</key>
+	<string>$EXECNAME</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.idmil.$NAME</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$NAME</string>
+	<key>CFBundleIconFile</key>
+	<string>libmapper_doc.icns</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>$LIBMAPPER_VERSION</string>
+	<key>CFBundleVersion</key>
+	<string>273</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.5</string>
+</dict>
+</plist>
+EOF
+}
+
+function make_bundles()
+{
+    mkdir -v bundles
+
+    APP=bundles/libmapper_PWM_Example.app
+    mkdir -v $APP
+    mkdir -v $APP/Contents
+    mkdir -v $APP/Contents/MacOS
+    mkdir -v $APP/Contents/Resources
+    cp -v all/python/_mapper.so $APP/Contents/MacOS/
+    cp -v all/python/_pwm.so $APP/Contents/MacOS/
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/swig/mapper.py $APP/Contents/MacOS/
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/examples/py_tk_gui/pwm.py $APP/Contents/MacOS/
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/examples/py_tk_gui/tk_pwm.py $APP/Contents/MacOS/
+    echo 'APPL????' >$APP/Contents/PkgInfo
+    info_plist $APP/Contents/Info.plist libmapper_PWM_Example tk_pwm.py
+    cp -v ../icons/libmapper_doc.icns $APP/Contents/Resources/
+
+    APP=bundles/libmapper_Slider_Example.app
+    mkdir -v $APP
+    mkdir -v $APP/Contents
+    mkdir -v $APP/Contents/MacOS
+    mkdir -v $APP/Contents/Resources
+    cp -v all/python/_mapper.so $APP/Contents/MacOS/
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/swig/mapper.py $APP/Contents/MacOS/
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/swig/tkgui.py $APP/Contents/MacOS/
+    echo 'APPL????' >$APP/Contents/PkgInfo
+    info_plist $APP/Contents/Info.plist libmapper_Slider_Example tkgui.py
+    cp -v ../icons/libmapper_doc.icns $APP/Contents/Resources/
+
+    APP=bundles/libmapper_Slider_Launcher.app
+    mkdir -v $APP
+    mkdir -v $APP/Contents
+    mkdir -v $APP/Contents/MacOS
+    mkdir -v $APP/Contents/Resources
+    cp -v i386/libmapper-$LIBMAPPER_VERSION/extra/osx/libmapper_slider_launcher.py $APP/Contents/MacOS/
+    echo 'APPL????' >$APP/Contents/PkgInfo
+    info_plist $APP/Contents/Info.plist libmapper_Slider_Launcher libmapper_slider_launcher.py
+    cp -v ../icons/libmapper_doc.icns $APP/Contents/Resources/
+
+    FRAMEWORK=bundles/mapper.framework
+    mkdir -v $FRAMEWORK
+    mkdir -v $FRAMEWORK/Contents
+    mkdir -v $FRAMEWORK/Versions
+    mkdir -v $FRAMEWORK/Versions/$LIBMAPPER_MAJOR
+    cp -v all/lib/libmapper-$LIBMAPPER_VERSION.dylib \
+        $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/mapper
+    chmod 664 $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/mapper
+    mkdir -v $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/Headers
+    cp -rv i386/install/include/mapper-$LIBMAPPER_MAJOR/mapper/* \
+        $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/Headers/
+    find $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/Headers -type f \
+        -exec chmod 664 {} \;
+    ln -s Versions/$LIBMAPPER_MAJOR/mapper $FRAMEWORK/mapper
+    ln -s Versions/$LIBMAPPER_MAJOR/Headers $FRAMEWORK/Headers
+    ln -s $LIBMAPPER_MAJOR $FRAMEWORK/Versions/Current
+
+    cat >$FRAMEWORK/Contents/Info.plist <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+        <key>CFBundleShortVersionString</key>
+        <string>4.7</string>
+        <key>CFBundleGetInfoString</key>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleExecutable</key>
+	<string>mapper</string>
+</dict>
+</plist>
+EOF
+
+    # Subframework for liblo
+    mkdir $FRAMEWORK/Versions/$LIBMAPPER_MAJOR/Frameworks
+    ln -s Versions/$LIBMAPPER_MAJOR/Frameworks $FRAMEWORK/Frameworks
+    FRAMEWORK=$FRAMEWORK/Versions/0/Frameworks/lo.framework
+    mkdir -v $FRAMEWORK
+    mkdir -v $FRAMEWORK/Contents
+    mkdir -v $FRAMEWORK/Versions
+    mkdir -v $FRAMEWORK/Versions/$LIBLO_MAJOR
+    cp -v all/lib/liblo.dylib $FRAMEWORK/Versions/$LIBLO_MAJOR/lo
+    chmod 664 $FRAMEWORK/Versions/$LIBLO_MAJOR/lo
+    mkdir -v $FRAMEWORK/Versions/$LIBLO_MAJOR/Headers
+    cp -rv i386/install/include/lo/* \
+        $FRAMEWORK/Versions/$LIBLO_MAJOR/Headers/
+    find $FRAMEWORK/Versions/$LIBLO_MAJOR/Headers -type f -exec chmod 664 {} \;
+    ln -s Versions/$LIBLO_MAJOR/lo $FRAMEWORK/lo
+    ln -s Versions/$LIBLO_MAJOR/Headers $FRAMEWORK/Headers
+    ln -s $LIBLO_MAJOR $FRAMEWORK/Versions/Current
+
+    cat >$FRAMEWORK/Contents/Info.plist <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+        <key>CFBundleShortVersionString</key>
+        <string>4.7</string>
+        <key>CFBundleGetInfoString</key>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleExecutable</key>
+	<string>lo</string>
+</dict>
+</plist>
+EOF
+}
+
+for i in $ARCHES; do make_arch $i; done
+
+for i in $ARCHES; do rebuild_python_extentions $i; done
+
+use_lipo
+
+make_bundles
+
+echo Done.
diff --git a/compile b/compile
deleted file mode 100755
index 862a14e..0000000
--- a/compile
+++ /dev/null
@@ -1,343 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2012-03-05.13; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
-# Software Foundation, Inc.
-# Written by Tom Tromey <tromey at 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 at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""	$nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-	# lazily determine how to convert abs files
-	case `uname -s` in
-	  MINGW*)
-	    file_conv=mingw
-	    ;;
-	  CYGWIN*)
-	    file_conv=cygwin
-	    ;;
-	  *)
-	    file_conv=wine
-	    ;;
-	esac
-      fi
-      case $file_conv/,$2, in
-	*,$file_conv,*)
-	  ;;
-	mingw/*)
-	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-	  ;;
-	cygwin/*)
-	  file=`cygpath -m "$file" || echo "$file"`
-	  ;;
-	wine/*)
-	  file=`winepath -w "$file" || echo "$file"`
-	  ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  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'.
-	  eat=1
-	  case $2 in
-	    *.o | *.[oO][bB][jJ])
-	      func_file_conv "$2"
-	      set x "$@" -Fo"$file"
-	      shift
-	      ;;
-	    *)
-	      func_file_conv "$2"
-	      set x "$@" -Fe"$file"
-	      shift
-	      ;;
-	  esac
-	  ;;
-	-I)
-	  eat=1
-	  func_file_conv "$2" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-I*)
-	  func_file_conv "${1#-I}" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-l)
-	  eat=1
-	  func_cl_dashl "$2"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-l*)
-	  func_cl_dashl "${1#-l}"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-L)
-	  eat=1
-	  func_cl_dashL "$2"
-	  ;;
-	-L*)
-	  func_cl_dashL "${1#-L}"
-	  ;;
-	-static)
-	  shared=false
-	  ;;
-	-Wl,*)
-	  arg=${1#-Wl,}
-	  save_ifs="$IFS"; IFS=','
-	  for flag in $arg; do
-	    IFS="$save_ifs"
-	    linker_opts="$linker_opts $flag"
-	  done
-	  IFS="$save_ifs"
-	  ;;
-	-Xlinker)
-	  eat=1
-	  linker_opts="$linker_opts $2"
-	  ;;
-	-*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-	  func_file_conv "$1"
-	  set x "$@" -Tp"$file"
-	  shift
-	  ;;
-	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-	  func_file_conv "$1" mingw
-	  set x "$@" "$file"
-	  shift
-	  ;;
-	*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-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 at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-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
deleted file mode 100755
index d622a44..0000000
--- a/config.guess
+++ /dev/null
@@ -1,1530 +0,0 @@
-#! /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, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-02-10'
-
-# 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, 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 Per Bothner.  Please send patches (context
-# diff format) to <config-patches at 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 at 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, 2012
-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 at 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 tuples: *-*-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 at 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:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-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*:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	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 ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -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 ${UNAME_MACHINE}-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-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 ${UNAME_MACHINE}-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}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-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 at ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes at openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf at swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green at 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 ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
-	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 at 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.sub b/config.sub
deleted file mode 100755
index 6205f84..0000000
--- a/config.sub
+++ /dev/null
@@ -1,1782 +0,0 @@
-#! /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, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-04-18'
-
-# 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, 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.
-
-
-# Please send patches to <config-patches at 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 at 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, 2012
-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/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    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*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-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 \
-	| aarch64 | aarch64_be \
-	| 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 \
-        | be32 | be64 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| le32 | le64 \
-	| 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 \
-	| rl78 | 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 | v850e1 | v850e2 | v850es | v850e2v3 \
-	| 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 | m68hcs12x | picochip)
-		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
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	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-* \
-	| aarch64-* | aarch64_be-* \
-	| 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-* \
-	| be32-* | be64-* \
-	| 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-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| le32-* | le64-* \
-	| 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-* \
-	| rl78-* | 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*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| 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*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-/'`
-		;;
-	msys)
-		basic_machine=i386-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	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
-		;;
-	tile*)
-		basic_machine=$basic_machine-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* | -msys* | -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
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	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
-		;;
-	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
deleted file mode 100755
index 067d739..0000000
--- a/configure
+++ /dev/null
@@ -1,20967 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libmapper 0.3.
-#
-# Report bugs to <dot_mapper at googlegroups.com>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 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
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # 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
-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+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-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
-test -x / || 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 \$(( 1 + 1 )) = 2 || 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"
-  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 :
-  export CONFIG_SHELL
-             # 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
-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+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-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 at gnu.org and
-$0: dot_mapper at googlegroups.com 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_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_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; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # 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 -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-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
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# 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='libmapper'
-PACKAGE_TARNAME='libmapper'
-PACKAGE_VERSION='0.3'
-PACKAGE_STRING='libmapper 0.3'
-PACKAGE_BUGREPORT='dot_mapper at googlegroups.com'
-PACKAGE_URL='http://libmapper.org'
-
-ac_unique_file="src/device.c"
-# 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
-HAVE_AUDIO_FALSE
-HAVE_AUDIO_TRUE
-HAVE_SWIG_FALSE
-HAVE_SWIG_TRUE
-HAVE_PYTHON_FALSE
-HAVE_PYTHON_TRUE
-HAVE_DOXYGEN_FALSE
-HAVE_DOXYGEN_TRUE
-TESTS_FALSE
-TESTS_TRUE
-LIBLO
-liblo_LIBS
-liblo_CFLAGS
-PKG_CONFIG
-DOXYGEN
-RTAUDIO_LIBS
-RTAUDIO_CFLAGS
-JNI
-JNIPATH
-JAR
-JAVAH
-JAVAC
-PYEXT
-SWIGDIR
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-SWIG
-LIBM
-CXXCPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-ac_ct_AR
-AR
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-SED
-LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-ac_ct_CXX
-CXXFLAGS
-CXX
-PTHREAD_CFLAGS
-PTHREAD_LIBS
-PTHREAD_CC
-ax_pthread_config
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-WINDOWS_DLL_FALSE
-WINDOWS_DLL_TRUE
-WINDOWS_FALSE
-WINDOWS_TRUE
-EGREP
-GREP
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-MAJOR_VERSION
-SO_VERSION
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-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_silent_rules
-enable_static
-enable_shared
-enable_dependency_tracking
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_debug
-enable_tests
-enable_docs
-enable_audio
-enable_swig
-enable_jni
-with_jdk_path
-with_liblo
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-CXX
-CXXFLAGS
-CCC
-CXXCPP
-PYTHON
-PKG_CONFIG
-liblo_CFLAGS
-liblo_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
-  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 libmapper 0.3 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/libmapper]
-  --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 libmapper 0.3:";;
-   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]
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --enable-static[=PKGS]  build static libraries [default=no]
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-debug          compile with debug flags
-  --disable-tests         don't build test programs.
-  --disable-docs          don't build the documentation.
-  --disable-audio         don't build the audio examples.
-  --disable-swig          don't build the SWIG bindings.
-  --disable-jni          don't build the Java JNI bindings.
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       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-jdk-path         specify the path to the JDK
-  --without-liblo         compile without liblo, disable OSC
-
-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
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-  PYTHON      the Python interpreter
-  PKG_CONFIG  path to pkg-config utility
-  liblo_CFLAGS
-              C compiler flags for liblo, overriding pkg-config
-  liblo_LIBS  linker flags for liblo, 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 <dot_mapper at googlegroups.com>.
-libmapper home page: <http://libmapper.org>.
-_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
-libmapper configure 0.3
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 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_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_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;}
-( $as_echo "## ------------------------------------------ ##
-## Report this to dot_mapper at googlegroups.com ##
-## ------------------------------------------ ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&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
-
-# 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_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 ||
-	 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_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_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  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
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=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
-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_type
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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_cxx_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_cxx_try_compile
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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_cxx_preproc_warn_flag$ac_cxx_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_cxx_try_cpp
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 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_cxx_try_link
-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 libmapper $as_me 0.3, which was
-generated by GNU Autoconf 2.69.  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
-
-
-
-# libtool version: current:revision:age
-#
-# If the library source code has changed at all since the last update, then
-# increment revision (`c:r:a' becomes `c:r+1:a').
-#
-# If any interfaces have been added, removed, or changed since the last update,
-# increment current, and set revision to 0.
-#
-# If any interfaces have been added since the last public release, then
-# increment age.
-#
-# If any interfaces have been removed since the last public release, then set
-# age to 0.
-SO_VERSION=2:0:0
-
-
-ac_config_headers="$ac_config_headers src/config.h"
-
-
-
-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 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    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 as_fn_executable_p "$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 as_fn_executable_p "$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
-	   as_fn_executable_p "$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 as_fn_executable_p "$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='libmapper'
- VERSION='0.3'
-
-
-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.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable 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=no
-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
-
-
-# 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=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-
-# 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=no
-fi
-
-
-
-
-
-
-
-
-
-# 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
-
-
-
-
-
-
-
-
-
-
-
-MAJOR_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f1)
-
-
-{ $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; }
-
-# Checks for header files.
-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='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $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 as_fn_executable_p "$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 as_fn_executable_p "$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>
-struct stat;
-/* 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
-
-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'.
-  rm -rf conftest.dir
-  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
-      ;;
-    msvc7 | msvc7msys | 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
-
-
-
-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 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"
-      as_fn_executable_p "$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"
-      as_fn_executable_p "$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 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 sys/time.h unistd.h termios.h fcntl.h errno.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$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 arpa/inet.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default"
-if test "x$ac_cv_header_arpa_inet_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ARPA_INET_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in zlib.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in winsock2.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
-if test "x$ac_cv_header_winsock2_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_WINSOCK2_H 1
-_ACEOF
-
-fi
-
-done
-
-ac_fn_c_check_func "$LINENO" "inet_ptoa" "ac_cv_func_inet_ptoa"
-if test "x$ac_cv_func_inet_ptoa" = xyes; then :
-
-$as_echo "#define HAVE_INET_PTOA /**/" >>confdefs.h
-
-fi
-
-ac_fn_c_check_func "$LINENO" "getifaddrs" "ac_cv_func_getifaddrs"
-if test "x$ac_cv_func_getifaddrs" = xyes; then :
-
-$as_echo "#define HAVE_GETIFADDRS /**/" >>confdefs.h
-
-else
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -liphlpapi" >&5
-$as_echo_n "checking for exit in -liphlpapi... " >&6; }
-if ${ac_cv_lib_iphlpapi_exit+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liphlpapi  $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 exit ();
-int
-main ()
-{
-return exit ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_iphlpapi_exit=yes
-else
-  ac_cv_lib_iphlpapi_exit=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_iphlpapi_exit" >&5
-$as_echo "$ac_cv_lib_iphlpapi_exit" >&6; }
-if test "x$ac_cv_lib_iphlpapi_exit" = xyes; then :
-
-      # Need some functions not available before Windows XP
-      CFLAGS="$CFLAGS -DWIN32 -D_WIN32_WINNT=0x501"
-
-$as_echo "#define HAVE_LIBIPHLPAPI /**/" >>confdefs.h
-
-      is_windows=yes
-
-fi
-
-fi
-
-ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
-if test "x$ac_cv_func_gettimeofday" = xyes; then :
-
-$as_echo "#define HAVE_GETTIMEOFDAY /**/" >>confdefs.h
-
-else
-  as_fn_error $? "This is not a POSIX system!" "$LINENO" 5
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
-$as_echo_n "checking for gzread in -lz... " >&6; }
-if ${ac_cv_lib_z_gzread+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz  $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 gzread ();
-int
-main ()
-{
-return gzread ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_z_gzread=yes
-else
-  ac_cv_lib_z_gzread=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_z_gzread" >&5
-$as_echo "$ac_cv_lib_z_gzread" >&6; }
-if test "x$ac_cv_lib_z_gzread" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBZ 1
-_ACEOF
-
-  LIBS="-lz $LIBS"
-
-else
-  as_fn_error $? "zlib not found, see http://www.zlib.net" "$LINENO" 5
-fi
-
-
- if test x$is_windows = xyes; then
-  WINDOWS_TRUE=
-  WINDOWS_FALSE='#'
-else
-  WINDOWS_TRUE='#'
-  WINDOWS_FALSE=
-fi
-
- if test x$is_windows = xyes && test x$enable_shared = xyes; then
-  WINDOWS_DLL_TRUE=
-  WINDOWS_DLL_FALSE='#'
-else
-  WINDOWS_DLL_TRUE='#'
-  WINDOWS_DLL_FALSE=
-fi
-
-
-# Checks for typedefs, structures, and compiler characteristics.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this sort of thing.  */
-  typedef int charset[2];
-  const charset cs = { 0, 0 };
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this sort of thing.  */
-    char tx;
-    char *t = &tx;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; } bx;
-    struct s *b = &bx; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-
-# pthreads
-# 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
-
-ax_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
-        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 pthread_join ();
-int
-main ()
-{
-return pthread_join ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_pthread_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
-        if test x"$ax_pthread_ok" = xno; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case "${host_cpu}-${host_os}" in
-        *solaris*)
-
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
-
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-	*-darwin*)
-	acx_pthread_flags="-pthread $acx_pthread_flags"
-	;;
-esac
-
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
-
-        case $flag in
-                none)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
-$as_echo_n "checking whether pthreads work without any flags... " >&6; }
-                ;;
-
-                -*)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
-                PTHREAD_CFLAGS="$flag"
-                ;;
-
-		pthread-config)
-		# Extract the first word of "pthread-config", so it can be a program name with args.
-set dummy pthread-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_prog_ax_pthread_config+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ax_pthread_config"; then
-  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ax_pthread_config="yes"
-    $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_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
-fi
-fi
-ax_pthread_config=$ac_cv_prog_ax_pthread_config
-if test -n "$ax_pthread_config"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
-$as_echo "$ax_pthread_config" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-		if test x"$ax_pthread_config" = xno; then continue; fi
-		PTHREAD_CFLAGS="`pthread-config --cflags`"
-		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-		;;
-
-                *)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
-                PTHREAD_LIBS="-l$flag"
-                ;;
-        esac
-
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-	             static void routine(void* a) {a=0;}
-	             static void* start_routine(void* a) {return a;}
-int
-main ()
-{
-pthread_t th; pthread_attr_t attr;
-                     pthread_join(th, 0);
-                     pthread_attr_init(&attr);
-                     pthread_cleanup_push(routine, 0);
-                     pthread_create(&th,0,start_routine,0);
-                     pthread_cleanup_pop(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_pthread_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
-
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
-$as_echo_n "checking for joinable pthread attribute... " >&6; }
-	attr_name=unknown
-	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-int
-main ()
-{
-int attr=$attr; return attr;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  attr_name=$attr; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	done
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-
-cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
-_ACEOF
-
-        fi
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
-        flag=no
-        case "${host_cpu}-${host_os}" in
-            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
-            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
-        esac
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
-$as_echo "${flag}" >&6; }
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        # More AIX lossage: must compile with xlc_r or cc_r
-	if test x"$GCC" != xyes; then
-          for ac_prog in xlc_r cc_r
-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_PTHREAD_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$PTHREAD_CC"; then
-  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_PTHREAD_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
-PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
-if test -n "$PTHREAD_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
-$as_echo "$PTHREAD_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PTHREAD_CC" && break
-done
-test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
-
-        else
-          PTHREAD_CC=$CC
-	fi
-else
-        PTHREAD_CC="$CC"
-fi
-
-
-
-
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
-
-$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
-
-        :
-else
-        ax_pthread_ok=no
-
-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
-
-
-
-# Checks for programs.
-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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $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 as_fn_executable_p "$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 as_fn_executable_p "$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
-
-{ $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>
-struct stat;
-/* 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
-
-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'.
-  rm -rf conftest.dir
-  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
-      ;;
-    msvc7 | msvc7msys | 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
-
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-// Check varargs macros.  These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
-#define showlist(...) puts (#__VA_ARGS__)
-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-static void
-test_varargs_macros (void)
-{
-  int x = 1234;
-  int y = 5678;
-  debug ("Flag");
-  debug ("X = %d\n", x);
-  showlist (The first, second, and third items.);
-  report (x>y, "x is %d but y is %d", x, y);
-}
-
-// Check long long types.
-#define BIG64 18446744073709551615ull
-#define BIG32 4294967295ul
-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-#if !BIG_OK
-  your preprocessor is broken;
-#endif
-#if BIG_OK
-#else
-  your preprocessor is broken;
-#endif
-static long long int bignum = -9223372036854775807LL;
-static unsigned long long int ubignum = BIG64;
-
-struct incomplete_array
-{
-  int datasize;
-  double data[];
-};
-
-struct named_init {
-  int number;
-  const wchar_t *name;
-  double average;
-};
-
-typedef const char *ccp;
-
-static inline int
-test_restrict (ccp restrict text)
-{
-  // See if C++-style comments work.
-  // Iterate through items via the restricted pointer.
-  // Also check for declarations in for loops.
-  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
-    continue;
-  return 0;
-}
-
-// Check varargs and va_copy.
-static void
-test_varargs (const char *format, ...)
-{
-  va_list args;
-  va_start (args, format);
-  va_list args_copy;
-  va_copy (args_copy, args);
-
-  const char *str;
-  int number;
-  float fnumber;
-
-  while (*format)
-    {
-      switch (*format++)
-	{
-	case 's': // string
-	  str = va_arg (args_copy, const char *);
-	  break;
-	case 'd': // int
-	  number = va_arg (args_copy, int);
-	  break;
-	case 'f': // float
-	  fnumber = va_arg (args_copy, double);
-	  break;
-	default:
-	  break;
-	}
-    }
-  va_end (args_copy);
-  va_end (args);
-}
-
-int
-main ()
-{
-
-  // Check bool.
-  _Bool success = false;
-
-  // Check restrict.
-  if (test_restrict ("String literal") == 0)
-    success = true;
-  char *restrict newvar = "Another string";
-
-  // Check varargs.
-  test_varargs ("s, d' f .", "string", 65, 34.234);
-  test_varargs_macros ();
-
-  // Check flexible array members.
-  struct incomplete_array *ia =
-    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
-  ia->datasize = 10;
-  for (int i = 0; i < ia->datasize; ++i)
-    ia->data[i] = i * 1.234;
-
-  // Check named initializers.
-  struct named_init ni = {
-    .number = 34,
-    .name = L"Test wide string",
-    .average = 543.34343,
-  };
-
-  ni.number = 58;
-
-  int dynamic_array[ni.number];
-  dynamic_array[ni.number - 1] = 543;
-
-  // work around unused variable warnings
-  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
-	  || dynamic_array[ni.number - 1] != 543);
-
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c99=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c99" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" 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_c99"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
-
-fi
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX="$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
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$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_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  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
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# 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
-
-{ $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_cxx_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_cxx_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_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_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_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CXX"  am_compiler_list=
-
-{ $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_CXX_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'.
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  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
-      ;;
-    msvc7 | msvc7msys | 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_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-
-# libtool
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $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
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $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_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
-    $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_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AS" = x; then
-    AS="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
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
-
-  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 as_fn_executable_p "$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 as_fn_executable_p "$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
-
-  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 as_fn_executable_p "$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 as_fn_executable_p "$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
-
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-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.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-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"
-      as_fn_executable_p "$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 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"
-      as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  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"`env 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 as_fn_executable_p "$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 as_fn_executable_p "$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 glibc/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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_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};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /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
-  ;;
-*-*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*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 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 -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; 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
-
-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
-
-
-
-
-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
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-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 at 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 at 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 '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    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\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # 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\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	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_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 at 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='${wl}-rpath ${wl}$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
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	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
-      ;;
-
-    # 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_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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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
-  ;;
-
-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[23].*) 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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-	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 glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-    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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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"
-
-      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $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; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat 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_cxx_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_cxx_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_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat 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_cxx_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_cxx_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 \"$CXXCPP\" 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
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$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.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-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*
-
-
-  # 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
-  compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  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_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-
-
-# Check whether --with-gnu-ld 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
-
-
-
-
-
-
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$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'
-
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -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
-    { $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; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=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.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${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
-	    hardcode_direct_CXX=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    hardcode_minus_L_CXX=yes
-	    hardcode_libdir_flag_spec_CXX='-L$libdir'
-	    hardcode_libdir_separator_CXX=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        export_dynamic_flag_spec_CXX='${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_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} 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_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`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__CXX"; then
-    lt_cv_aix_libpath__CXX=`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__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then 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_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} 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_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`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__CXX"; then
-    lt_cv_aix_libpath__CXX=`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__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      whole_archive_flag_spec_CXX='$convenience'
-	    fi
-	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  allow_undefined_flag_CXX=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | 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.
-	  hardcode_libdir_flag_spec_CXX=' '
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=yes
-	  file_list_spec_CXX='@'
-	  # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  archive_expsym_cmds_CXX='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, CXX)='true'
-	  enable_shared_with_static_runtimes_CXX=yes
-	  # Don't use ranlib
-	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
-	  postlink_cmds_CXX='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, CXX) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=no
-	  enable_shared_with_static_runtimes_CXX=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    ld_shlibs_CXX=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_CXX='`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_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_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_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="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_CXX="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}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="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
-  ld_shlibs_CXX=no
-  fi
-
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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
-              archive_cmds_CXX='$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
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            archive_cmds_CXX='$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
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-	hardcode_direct_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && 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.
-	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared $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
-	        archive_cmds_CXX='$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
-	    link_all_deplibs_CXX=yes
-	    ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=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.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | 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."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-	      prelink_cmds_CXX='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`"'
-	      old_archive_cmds_CXX='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'
-	      archive_cmds_CXX='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'
-	      archive_expsym_cmds_CXX='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
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`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
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      archive_expsym_cmds_CXX='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
-	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${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_CXX=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.
-	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	  hardcode_direct_absolute_CXX=yes
-	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  ld_shlibs_CXX=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.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-		;;
-	    esac
-
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`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
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          archive_cmds_CXX='$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'
-		  ;;
-	        *)
-	          archive_cmds_CXX='$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
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	      hardcode_libdir_separator_CXX=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    hardcode_libdir_flag_spec_CXX='-R$libdir'
-	    hardcode_shlibpath_var_CXX=no
-	    case $host_os in
-	      solaris2.[0-5] | solaris2.[0-5].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    link_all_deplibs_CXX=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.
-	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $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.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[0-5] | solaris2.[0-5].*) ;;
-		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
-	archive_cmds_need_lc_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-	hardcode_libdir_separator_CXX=':'
-	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-	      '"$old_archive_cmds_CXX"
-	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-	      '"$reload_cmds_CXX"
-	    ;;
-	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$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...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-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
-  # 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 "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       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 "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-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.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-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
-      postdeps_CXX='-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
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-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_CXX='-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
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    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_prog_compiler_pic_CXX=-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_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-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_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      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).
-	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-qpic'
-	    lt_prog_compiler_static_CXX='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-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_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	lt_prog_compiler_can_build_shared_CXX=no
-	;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-{ $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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$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_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=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_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=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_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=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_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $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; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_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
-      export_symbols_cmds_CXX='$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_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      export_symbols_cmds_CXX='$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_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs_CXX=no
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $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_CXX+:} 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_CXX
-	  pic_flag=$lt_prog_compiler_pic_CXX
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-	  allow_undefined_flag_CXX=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_CXX=no
-	  else
-	    lt_cv_archive_cmds_need_lc_CXX=yes
-	  fi
-	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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}'
-
-      ;;
-    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_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  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
-  ;;
-
-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[23].*) 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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-	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 glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  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_CXX\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-    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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = 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
-
-
-
-
-
-
-
-  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_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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-# Check for the math library
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5
-$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; }
-if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmw  $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 _mwvalidcheckl ();
-int
-main ()
-{
-return _mwvalidcheckl ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_mw__mwvalidcheckl=yes
-else
-  ac_cv_lib_mw__mwvalidcheckl=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_mw__mwvalidcheckl" >&5
-$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; }
-if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then :
-  LIBM="-lmw"
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
-$as_echo_n "checking for cos in -lm... " >&6; }
-if ${ac_cv_lib_m_cos+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $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 cos ();
-int
-main ()
-{
-return cos ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_cos=yes
-else
-  ac_cv_lib_m_cos=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_m_cos" >&5
-$as_echo "$ac_cv_lib_m_cos" >&6; }
-if test "x$ac_cv_lib_m_cos" = xyes; then :
-  LIBM="$LIBM -lm"
-fi
-
-  ;;
-*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
-$as_echo_n "checking for cos in -lm... " >&6; }
-if ${ac_cv_lib_m_cos+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $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 cos ();
-int
-main ()
-{
-return cos ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_cos=yes
-else
-  ac_cv_lib_m_cos=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_m_cos" >&5
-$as_echo "$ac_cv_lib_m_cos" >&6; }
-if test "x$ac_cv_lib_m_cos" = xyes; then :
-  LIBM="-lm"
-fi
-
-  ;;
-esac
-
-
-LIBS="$LIBS $LIBM"
-
-# Check options
-# Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then :
-  enableval=$enable_debug; enable_debug=yes
-fi
-
-
-# Check whether --enable-tests was given.
-if test "${enable_tests+set}" = set; then :
-  enableval=$enable_tests;
-else
-  enable_tests=yes
-fi
-
-
-# Check whether --enable-docs was given.
-if test "${enable_docs+set}" = set; then :
-  enableval=$enable_docs;
-else
-  enable_docs=yes
-fi
-
-
-# Check whether --enable-audio was given.
-if test "${enable_audio+set}" = set; then :
-  enableval=$enable_audio;
-else
-  enable_audio=yes
-fi
-
-
-swig_enabled=yes
-# Check whether --enable-swig was given.
-if test "${enable_swig+set}" = set; then :
-  enableval=$enable_swig; swig_enabled=$enableval
-fi
-
-
-jni_enabled=yes
-# Check whether --enable-jni was given.
-if test "${enable_jni+set}" = set; then :
-  enableval=$enable_jni; jni_enabled=$enableval
-fi
-
-
-if test x$swig_enabled = xyes; then
-   # Extract the first word of "swig", so it can be a program name with args.
-set dummy swig; 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_SWIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$SWIG"; then
-  ac_cv_prog_SWIG="$SWIG" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_SWIG="swig"
-    $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
-SWIG=$ac_cv_prog_SWIG
-if test -n "$SWIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
-$as_echo "$SWIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-   if test x$SWIG = x; then
-     swig_enabled=no
-     swig_explain="(swig not found)"
-   else
-
-
-
-
-
-
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.3" >&5
-$as_echo_n "checking whether $PYTHON version >= 2.3... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  as_fn_error $? "too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.3" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.3... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-	for am_cv_pathless_PYTHON in python python2 python3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-	done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; 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_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$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
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-
-
-  if test "$PYTHON" = :; then
-      have_python="no"
-  else
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-    have_python="yes"
-  fi
-
-
-     if test x$have_python = xyes; then
-       SWIGDIR=swig
-
-       PYEXT=$($PYTHON -c "import sys; print {'win32':'pyd','darwin':'so','linux2':'so'}[sys.platform]")
-
-     else
-       swig_enabled=no
-       swig_explain="(python not found)"
-     fi
-   fi
-fi
-
-# Check for JNI
-if test x$jni_enabled = xyes; then
-   JDKPATH=
-   if test -d /usr/lib/jvm/java-7-openjdk-i386; then
-      JDKPATH=/usr/lib/jvm/java-7-openjdk-i386
-   elif test -d /usr/lib/jvm/java-7-openjdk-x86_64; then
-      JDKPATH=/usr/lib/jvm/java-7-openjdk-x86_64
-   elif test -d /usr/lib/jvm/java-6-openjdk; then
-      JDKPATH=/usr/lib/jvm/java-6-openjdk
-   elif test -d /System/Library/Frameworks/JavaVM.framework/Headers; then
-      JDKPATH=/System/Library/Frameworks/JavaVM.framework
-   fi
-
-
-# Check whether --with-jdk-path was given.
-if test "${with_jdk_path+set}" = set; then :
-  withval=$with_jdk_path; JDKPATH="$withval"
-fi
-
-
-   if test x"$JNIPATH" = x; then
-     if test -f "$JDKPATH"/Headers/jni.h; then
-       JNIPATH="$JDKPATH"/Headers
-     elif test -f "$JDKPATH"/include/jni.h; then
-       JNIPATH="$JDKPATH"/include
-     fi
-   fi
-   if test x"$JDKBINPATH" = x; then
-     if test -f "$JDKPATH"/Commands/javac; then
-       JDKBINPATH="$JDKPATH"/Commands
-     elif test -f "$JDKPATH"/bin/javac; then
-       JDKBINPATH="$JDKPATH"/bin
-     fi
-   fi
-
-   # Extract the first word of "javac", so it can be a program name with args.
-set dummy javac; 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_JAVAC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $JAVAC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in "$JDKBINPATH"$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_JAVAC="$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
-JAVAC=$ac_cv_path_JAVAC
-if test -n "$JAVAC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
-$as_echo "$JAVAC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-   # Extract the first word of "javah", so it can be a program name with args.
-set dummy javah; 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_JAVAH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $JAVAH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_JAVAH="$JAVAH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in "$JDKBINPATH"$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_JAVAH="$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
-JAVAH=$ac_cv_path_JAVAH
-if test -n "$JAVAH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
-$as_echo "$JAVAH" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-   # Extract the first word of "jar", so it can be a program name with args.
-set dummy jar; 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_JAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $JAR in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_JAR="$JAR" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in "$JDKBINPATH"$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_JAR="$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
-JAR=$ac_cv_path_JAR
-if test -n "$JAR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
-$as_echo "$JAR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-   if test x$JAVAC = x; then
-     jni_enabled=no
-     jni_explain="(javac not found)"
-   elif test x$JAVAH = x; then
-     jni_enabled=no
-     jni_explain="(javah not found)"
-   elif test x$JAR = x; then
-     jni_enabled=no
-     jni_explain="(jar not found)"
-   else
-     as_ac_Header=`$as_echo "ac_cv_header_$JNIPATH/jni.h" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$JNIPATH/jni.h" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  jni_enabled=yes
-else
-  jni_enabled=no; jni_explain="(jni.h not found)"
-fi
-
-
-     if test x$jni_enabled = xyes; then
-       JNI=jni
-
-
-     fi
-   fi
-fi
-
-# Check for audio libraries supported by RtAudio
-if test x$enable_audio = xyes; then
-
-  # Try ALSA
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_ctl_open in -lasound" >&5
-$as_echo_n "checking for snd_ctl_open in -lasound... " >&6; }
-if ${ac_cv_lib_asound_snd_ctl_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lasound  $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 snd_ctl_open ();
-int
-main ()
-{
-return snd_ctl_open ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_asound_snd_ctl_open=yes
-else
-  ac_cv_lib_asound_snd_ctl_open=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_asound_snd_ctl_open" >&5
-$as_echo "$ac_cv_lib_asound_snd_ctl_open" >&6; }
-if test "x$ac_cv_lib_asound_snd_ctl_open" = xyes; then :
-  RTAUDIO_CFLAGS="-D__LINUX_ALSA__ -D__LITTLE_ENDIAN__"
-     RTAUDIO_LIBS=-lasound
-     audio_explain="(ALSA)"
-fi
-
-
-  # Look for CoreAudio (This could be more sophisticated)
-  echo -n Checking for CoreAudio...
-  if test -e /System/Library/Frameworks/CoreAudio.framework; then
-    RTAUDIO_CFLAGS="-D__MACOSX_CORE__ -D__LITTLE_ENDIAN__"
-    RTAUDIO_LIBS="-framework CoreAudio -framework CoreFoundation"
-    audio_explain="(CoreAudio)"
-    echo yes
-  else
-    echo no
-  fi
-
-  if test -z "$RTAUDIO_CFLAGS"; then
-    enable_audio=no
-    audio_explain="(no supported audio system found.)"
-  fi
-fi
-
-
-
-
-# Doxygen
-if test x$enable_docs = xyes; then
-  # Extract the first word of "doxygen", so it can be a program name with args.
-set dummy doxygen; 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_DOXYGEN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DOXYGEN"; then
-  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DOXYGEN="doc"
-    $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
-DOXYGEN=$ac_cv_prog_DOXYGEN
-if test -n "$DOXYGEN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
-$as_echo "$DOXYGEN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-  if test x$DOXYGEN = x; then
-    enable_docs=no
-    docs_explain="(doxygen not found.)"
-  fi
-fi
-
-# pkg-config
-
-
-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 as_fn_executable_p "$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 as_fn_executable_p "$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
-
-# Check for liblo
-
-# Check whether --with-liblo was given.
-if test "${with_liblo+set}" = set; then :
-  withval=$with_liblo;
-fi
-
-if test x$with_liblo != xno; then :
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liblo" >&5
-$as_echo_n "checking for liblo... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$liblo_CFLAGS"; then
-        pkg_cv_liblo_CFLAGS="$liblo_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblo >= 0.26\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblo >= 0.26") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_liblo_CFLAGS=`$PKG_CONFIG --cflags "liblo >= 0.26" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$liblo_LIBS"; then
-        pkg_cv_liblo_LIBS="$liblo_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblo >= 0.26\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblo >= 0.26") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_liblo_LIBS=`$PKG_CONFIG --libs "liblo >= 0.26" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        liblo_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "liblo >= 0.26"`
-        else
-	        liblo_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "liblo >= 0.26"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$liblo_PKG_ERRORS" >&5
-
-	as_fn_error $? "Package requirements (liblo >= 0.26) were not met:
-
-$liblo_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 liblo_CFLAGS
-and liblo_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}: 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 liblo_CFLAGS
-and liblo_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
-	liblo_CFLAGS=$pkg_cv_liblo_CFLAGS
-	liblo_LIBS=$pkg_cv_liblo_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	:
-fi
-fi
-if test "x$liblo_LIBS" = x; then :
-  with_liblo=no
-fi
-if test x$with_liblo != xno; then :
-
-
-$as_echo "#define HAVE_LIBLO /**/" >>confdefs.h
-
-  LIBLO=liblo
-
-
-  tmpLIBS="$LIBS"
-  LIBS="$LIBS $liblo_LIBS"
-  ac_fn_c_check_func "$LINENO" "lo_address_set_iface" "ac_cv_func_lo_address_set_iface"
-if test "x$ac_cv_func_lo_address_set_iface" = xyes; then :
-
-$as_echo "#define HAVE_LIBLO_SET_IFACE /**/" >>confdefs.h
-
-fi
-
-  ac_fn_c_check_func "$LINENO" "lo_server_new_multicast_iface" "ac_cv_func_lo_server_new_multicast_iface"
-if test "x$ac_cv_func_lo_server_new_multicast_iface" = xyes; then :
-
-$as_echo "#define HAVE_LIBLO_SERVER_IFACE /**/" >>confdefs.h
-
-fi
-
-  ac_fn_c_check_func "$LINENO" "lo_bundle_count" "ac_cv_func_lo_bundle_count"
-if test "x$ac_cv_func_lo_bundle_count" = xyes; then :
-
-$as_echo "#define HAVE_LIBLO_BUNDLE_COUNT /**/" >>confdefs.h
-
-fi
-
-  LIBS="$tmpLIBS"
-
-fi
-
-# Debug mode
-if test x$enable_debug = xyes; then :
-  CFLAGS="-g -O0 -Wall -Werror -DDEBUG `echo $CFLAGS | sed 's/-O2//'`"
-else
-  CFLAGS="$CFLAGS -DNDEBUG"
-fi
-
-# Add -I. so that config.h is found correctly during VPATH builds
-# (see autoconf manual section 4.9)
-CFLAGS="-I. $CFLAGS"
-
- if test x$enable_tests = xyes; then
-  TESTS_TRUE=
-  TESTS_FALSE='#'
-else
-  TESTS_TRUE='#'
-  TESTS_FALSE=
-fi
-
- if test "x$DOXYGEN" != x; then
-  HAVE_DOXYGEN_TRUE=
-  HAVE_DOXYGEN_FALSE='#'
-else
-  HAVE_DOXYGEN_TRUE='#'
-  HAVE_DOXYGEN_FALSE=
-fi
-
- if test "x$have_python" = xyes; then
-  HAVE_PYTHON_TRUE=
-  HAVE_PYTHON_FALSE='#'
-else
-  HAVE_PYTHON_TRUE='#'
-  HAVE_PYTHON_FALSE=
-fi
-
- if test "x$swig_enabled" = xyes; then
-  HAVE_SWIG_TRUE=
-  HAVE_SWIG_FALSE='#'
-else
-  HAVE_SWIG_TRUE='#'
-  HAVE_SWIG_FALSE=
-fi
-
- if test "x$enable_audio" = xyes; then
-  HAVE_AUDIO_TRUE=
-  HAVE_AUDIO_FALSE='#'
-else
-  HAVE_AUDIO_TRUE='#'
-  HAVE_AUDIO_FALSE=
-fi
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile include/Makefile test/Makefile doc/Makefile doc/libmapper.doxyfile swig/Makefile swig/setup.py jni/Makefile jni/Mapper/NativeLib.java examples/Makefile examples/pwm_synth/Makefile examples/py_tk_gui/Makefile examples/py_tk_gui/setup.py extra/Makefile extra/osx/Makefile libmapper.pc"
-
-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
-if test -z "${WINDOWS_TRUE}" && test -z "${WINDOWS_FALSE}"; then
-  as_fn_error $? "conditional \"WINDOWS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WINDOWS_DLL_TRUE}" && test -z "${WINDOWS_DLL_FALSE}"; then
-  as_fn_error $? "conditional \"WINDOWS_DLL\" 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
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${TESTS_TRUE}" && test -z "${TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_SWIG_TRUE}" && test -z "${HAVE_SWIG_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_SWIG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_AUDIO_TRUE}" && test -z "${HAVE_AUDIO_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_AUDIO\" 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 -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-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
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# 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 libmapper $as_me 0.3, which was
-generated by GNU Autoconf 2.69.  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 <dot_mapper at googlegroups.com>.
-libmapper home page: <http://libmapper.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-libmapper config.status 0.3
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 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'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $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"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $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"`'
-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"`'
-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_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"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
-reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
-reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $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 AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-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_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 \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-reload_flag_CXX \
-compiler_CXX \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_static_CXX \
-lt_cv_prog_compiler_c_o_CXX \
-export_dynamic_flag_spec_CXX \
-whole_archive_flag_spec_CXX \
-compiler_needs_object_CXX \
-with_gnu_ld_CXX \
-allow_undefined_flag_CXX \
-no_undefined_flag_CXX \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_separator_CXX \
-exclude_expsyms_CXX \
-include_expsyms_CXX \
-file_list_spec_CXX \
-compiler_lib_search_dirs_CXX \
-predep_objects_CXX \
-postdep_objects_CXX \
-predeps_CXX \
-postdeps_CXX \
-compiler_lib_search_path_CXX; 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 \
-reload_cmds_CXX \
-old_archive_cmds_CXX \
-old_archive_from_new_cmds_CXX \
-old_archive_from_expsyms_cmds_CXX \
-archive_cmds_CXX \
-archive_expsym_cmds_CXX \
-module_cmds_CXX \
-module_expsym_cmds_CXX \
-export_symbols_cmds_CXX \
-prelink_cmds_CXX \
-postlink_cmds_CXX; 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
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
-    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "doc/libmapper.doxyfile") CONFIG_FILES="$CONFIG_FILES doc/libmapper.doxyfile" ;;
-    "swig/Makefile") CONFIG_FILES="$CONFIG_FILES swig/Makefile" ;;
-    "swig/setup.py") CONFIG_FILES="$CONFIG_FILES swig/setup.py" ;;
-    "jni/Makefile") CONFIG_FILES="$CONFIG_FILES jni/Makefile" ;;
-    "jni/Mapper/NativeLib.java") CONFIG_FILES="$CONFIG_FILES jni/Mapper/NativeLib.java" ;;
-    "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
-    "examples/pwm_synth/Makefile") CONFIG_FILES="$CONFIG_FILES examples/pwm_synth/Makefile" ;;
-    "examples/py_tk_gui/Makefile") CONFIG_FILES="$CONFIG_FILES examples/py_tk_gui/Makefile" ;;
-    "examples/py_tk_gui/setup.py") CONFIG_FILES="$CONFIG_FILES examples/py_tk_gui/setup.py" ;;
-    "extra/Makefile") CONFIG_FILES="$CONFIG_FILES extra/Makefile" ;;
-    "extra/osx/Makefile") CONFIG_FILES="$CONFIG_FILES extra/osx/Makefile" ;;
-    "libmapper.pc") CONFIG_FILES="$CONFIG_FILES libmapper.pc" ;;
-
-  *) 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, 2011 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="CXX "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Assembler program.
-AS=$lt_AS
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# 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 PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# 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
-
-# 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
-
-# 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
-
-# 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
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### 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"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_CXX
-reload_cmds=$lt_reload_cmds_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to "yes" if using 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_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
- ;;
-
-  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
-
-
-# Messages to user.
-echo
-echo libmapper configured:
-echo --------------------------------------------------
-echo "building documention...    " $enable_docs $docs_explain
-echo "building tests...          " $enable_tests
-echo "building SWIG bindings...  " $swig_enabled $swig_explain
-echo "building Java bindings...  " $jni_enabled $jni_explain
-echo "building audio examples... " $enable_audio $audio_explain
-if test x$enable_debug = xyes; then :
-  echo "Debug flags enabled."
-fi
-echo --------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 84df9ca..74c52ba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -129,6 +129,8 @@ if test x$jni_enabled = xyes; then
    JDKPATH=
    if test -d /usr/lib/jvm/java-7-openjdk-i386; then
       JDKPATH=/usr/lib/jvm/java-7-openjdk-i386
+   elif test -d /usr/lib/jvm/java-7-openjdk-amd64; then
+      JDKPATH=/usr/lib/jvm/java-7-openjdk-amd64
    elif test -d /usr/lib/jvm/java-7-openjdk-x86_64; then
       JDKPATH=/usr/lib/jvm/java-7-openjdk-x86_64
    elif test -d /usr/lib/jvm/java-6-openjdk; then
@@ -226,7 +228,7 @@ PKG_PROG_PKG_CONFIG
 AC_ARG_WITH([liblo],
   AS_HELP_STRING([--without-liblo],[compile without liblo, disable OSC]))
 AS_IF([test x$with_liblo != xno],[
-  PKG_CHECK_MODULES([liblo], [liblo >= 0.26])])
+  PKG_CHECK_MODULES([liblo], [liblo >= 0.27])])
 AS_IF([test "x$liblo_LIBS" = x],
   [with_liblo=no])
 AS_IF([test x$with_liblo != xno],[
diff --git a/depcomp b/depcomp
deleted file mode 100755
index 25a39e6..0000000
--- a/depcomp
+++ /dev/null
@@ -1,708 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2012-03-27.16; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 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 at 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 outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# A tabulation character.
-tab='	'
-# A newline character.
-nl='
-'
-
-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
-
-if test "$depmode" = msvc7msys; then
-   # This is just like msvc7 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=msvc7
-fi
-
-if test "$depmode" = xlc; then
-   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
-   gccflag=-qmakedep=gcc,-MF
-   depmode=gcc
-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 ' ' "$nl" < "$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.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## 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 "s|.*$object$||" -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 ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$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"
-  ;;
-
-xlc)
-  # 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
-  ;;
-
-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"
-    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -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 anf tcc (Tiny C Compiler) understand '-MD -MF file'.
-  # However on
-  #    $CC -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 ... \
-  #     ...
-  # tcc 0.9.26 (FIXME still under development at the moment of writing)
-  # will emit a similar output, but also prepend the continuation lines
-  # with horizontal tabulation characters.
-  "$@" -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 -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
-    < "$tmpdepfile" > "$depfile"
-  sed '
-    s/[ '"$tab"'][ '"$tab"']*/ /g
-    s/^ *//
-    s/ *\\*$//
-    s/^[^:]*: *//
-    /^$/d
-    /:$/d
-    s/$/ :/
-  ' < "$tmpdepfile" >> "$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"
-      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test "$stat" = 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # 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
-  ;;
-
-#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:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' "$nl" < "$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"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## 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::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$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
index 18e78d0..1d7bb34 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -7,7 +7,8 @@ DOX=libmapper.doxyfile
 
 EXTRA_DIST=expression_syntax.md how_to_compile_and_run.md windows.md	\
            tutorials/tutorial_c.md tutorials/tutorial_introduction.md	\
-           tutorials/tutorial_maxmsp.md tutorials/tutorial_python.md
+           tutorials/tutorial_maxmsp_central.md tutorials/tutorial_maxmsp_multiobj.md \
+           tutorials/tutorial_pure_data.md tutorials/tutorial_python.md
 
 INSTIMAGES=html/doxygen.png
 
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index 3e0fa51..0000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,459 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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)/libmapper.doxyfile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = libmapper.doxyfile
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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@
-MAINTAINERCLEANFILES = Makefile.in 
-CLEANFILES = doxygen-build.stamp
-DOX = libmapper.doxyfile
-EXTRA_DIST = expression_syntax.md how_to_compile_and_run.md windows.md	\
-           tutorials/tutorial_c.md tutorials/tutorial_introduction.md	\
-           tutorials/tutorial_maxmsp.md tutorials/tutorial_python.md
-
-INSTIMAGES = html/doxygen.png
-DOC_STAMPS = html-build.stamp
-DOC_DIR = $(HTML_DIR)
-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) --foreign doc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign 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):
-libmapper.doxyfile: $(top_builddir)/config.status $(srcdir)/libmapper.doxyfile.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
-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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-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-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 all-local check check-am clean clean-generic \
-	clean-libtool clean-local 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-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
-
-
-all-local: doxygen-build.stamp
-
-doxygen-build.stamp: $(DOX) $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h \
-	$(top_srcdir)/include/mapper/*.h
-	@echo '*** Running doxygen ***'
-	doxygen $(DOX)
-	touch doxygen-build.stamp
-
-clean-local:
-	rm -f *~ *.bak $(DOC_STAMPS) || true
-	if test -d html; then rm -fr html; fi
-	if test -d latex; then rm -fr latex; fi
-	if test -d man; then rm -fr man; fi
-
-distclean-local: clean
-	rm -f *.stamp || true
-	if test -d html; then rm -rf html; 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/doc/expression_syntax.md b/doc/expression_syntax.md
index 6888b3e..e4b9178 100644
--- a/doc/expression_syntax.md
+++ b/doc/expression_syntax.md
@@ -1,53 +1,89 @@
 libmapper Expression Syntax
 ===========================
 
-* y=abs(x) — absolute value
+Connections between signals that are maintained by libmapper
+can be configured with optional signal processing in the
+form of an expression.
+
+General Syntax
+--------------
+
+Expressions in libmapper must always be presented in the form
+`y = x`, where `x` refers to the updated source value and `y` is
+the computed value to be forwarded to the destination.
+
+Available Functions
+-------------------
+
+### Absolute value:
+
+* `y = abs(x)` — absolute value
 
 ### Exponential functions:
-* y=exp(x) — returns e raised to the given power
-* y=exp2(x) — returns 2 raised to the given power
-* y=log(x) — computes natural (base e) logarithm (to base e)
-* y=log10(x) — computes common (base 10) logarithm
-* y=logb(x) — extracts exponent of the number
-* y=log2(x)
+* `y = exp(x)` — returns e raised to the given power
+* `y = exp2(x)` — returns 2 raised to the given power
+* `y = log(x)` — computes natural ( base e ) logarithm ( to base e )
+* `y = log10(x)` — computes common ( base 10 ) logarithm
+* `y = log2(x)` – computes the binary ( base 2 ) logarithm
+* `y = logb(x)` — extracts exponent of the number
 
 ### Power functions:
-* y=sqrt(x) — square root
-* y=cbrt(x) — cubic root
-* y=hypot(x,n) — square root of the sum of the squares of two given numbers
-* y=pow(x,n) — raise a to the power b
+* `y = sqrt(x)` — square root
+* `y = cbrt(x)` — cubic root
+* `y = hypot(x, n)` — square root of the sum of the squares of two given numbers
+* `y = pow(x, n)` — raise a to the power b
 
 ### Trigonometric functions:
-* y=sin(x) — sine
-* y=cos(x) — cosine
-* y=tan(x) — tangent
-* y=asin(x) — arc sine
-* y=acos(x) — arc cosine
-* y=atan(x) — arc tangent
-* y=atan2(x, n) — arc tangent, using signs to determine quadrants
+* `y = sin(x)` — sine
+* `y = cos(x)` — cosine
+* `y = tan(x)` — tangent
+* `y = asin(x)` — arc sine
+* `y = acos(x)` — arc cosine
+* `y = atan(x)` — arc tangent
+* `y = atan2(x, n)` — arc tangent, using signs to determine quadrants
 
 ### Hyperbolic functions:
-* y=sinh(x) — hyperbolic sine
-* y=cosh(x) — hyperbolic cosine
-* y=tanh(x) — hyperbolic tangent
+* `y = sinh(x)` — hyperbolic sine
+* `y = cosh(x)` — hyperbolic cosine
+* `y = tanh(x)` — hyperbolic tangent
 
 ### Nearest integer floating point comparisons:
-* y=floor(x) — nearest integer not greater than the given value
-* y=round(x) — nearest integer, rounding away from zero in halfway cases
-* y=ceil(x) — nearest integer not less than the given value
-* y=trunc(x) — nearest integer not greater in magnitude than the given value
+* `y = floor(x)` — nearest integer not greater than the given value
+* `y = round(x)` — nearest integer, rounding away from zero in halfway cases
+* `y = ceil(x)` — nearest integer not less than the given value
+* `y = trunc(x)` — nearest integer not greater in magnitude than the given value
 
 ### Comparison functions:
-* y=min(x,n) – smaller of two values
-* y=max(x,n) – greater of two values
+* `y = min(x, n)` – smaller of two values
+* `y = max(x, n)` – greater of two values
+
+### Random number generation:
+* `y = uniform(x)` — uniform random distribution between 0 and the given value
 
 ### Conversion functions:
-* y=midiToHz(x) — convert MIDI note value to Hz
-* y=hzToMidi(x) — convert Hz value to MIDI note
-* y=uniform(x) — uniform random distribution between 0 and the given value
-
-### Examples using past samples:
-* y=x-x{-1} — 2-sample derivative
-* y=x+x{-1} — 2-sample integral
-* y=y{-1}*0.9+x*0.1 — exponential moving average with weight 0.1
-* y=y{-1}+x-1 — leaky integrator with a constant leak
+* `y = midiToHz(x)` — convert MIDI note value to Hz
+* `y = hzToMidi(x)` — convert Hz value to MIDI note
+
+
+FIR and IIR Filters
+===================
+
+Past samples of expression input and output can be accessed using the notation
+`<variable>{<index>}`. The index specifies the amount of delay in samples, and
+obviously must be `<=0` for the input and `<0` for the output ( i.e. it cannot
+be a value that has not been provided or computed yet ).
+
+Using only delayed samples of the expression *input* `x` we can create **Finite
+Impulse Response** ( FIR ) filters - here are some simple examples:
+
+* `y = x - x{-1}` — 2-sample derivative
+* `y = x + x{-1}` — 2-sample integral
+
+Using delayed samples of the expression *output* `y` we can create **Infinite
+Impulse Response** ( IIR ) filters - here are some simple examples:
+
+* `y = y{-1} * 0.9 + x * 0.1` — exponential moving average with current-sample-weight of `0.1`
+* `y = y{-1} + x - 1` — leaky integrator with a constant leak of `1`
+
+Of course the filter can contain references to past samples of both `x` and `y` -
+currently libmapper will reject expressions referring to sample delays `> 100`.
\ No newline at end of file
diff --git a/doc/how_to_compile_and_run.md b/doc/how_to_compile_and_run.md
index 105a85c..1c01c5d 100644
--- a/doc/how_to_compile_and_run.md
+++ b/doc/how_to_compile_and_run.md
@@ -57,7 +57,7 @@ package on other Linux distributions.
 
 ### Configuring
 
-If you have extract libmapper from a release tarball, run,
+If you have extracted libmapper from a release tarball, run,
 
     ./configure
     
diff --git a/doc/tutorials/tutorial_maxmsp.md b/doc/tutorials/tutorial_maxmsp_central.md
similarity index 92%
copy from doc/tutorials/tutorial_maxmsp.md
copy to doc/tutorials/tutorial_maxmsp_central.md
index 1ecc1bc..286e747 100644
--- a/doc/tutorials/tutorial_maxmsp.md
+++ b/doc/tutorials/tutorial_maxmsp_central.md
@@ -1,6 +1,8 @@
 Getting started
 ===============
 
+Note: this tutorial will introduce the original bindings for MaxMSP (before July 2013). You can access the tutorial for the revised multi-object bindings [here](./maxmsp_multiobj.html).
+
 To start using the _libmapper_ with MaxMSP you will need to:
 
 * Install _libmapper_ for your platform (Linux, OSX, Windows)
@@ -38,7 +40,7 @@ particular interface by using the `@interface` property.
 
 An example of creating a device:
 
-![Creating a device.](./images/maxmsp1.png)
+![Creating a device.](./images/maxmsp_central1.png)
 
 Once the object has initialized, it will output its metadata from the right
 outlet:
@@ -76,7 +78,7 @@ Additional signal properties can also (optionally) be added:
 
 examples:
 
-![Adding signals to a device](./images/maxmsp2.png)
+![Adding signals to a device](./images/maxmsp_central2.png)
 
 The only _required_ parameters here are the signal name,
 and data type.  If no `length` property is provided, the signal is
@@ -100,11 +102,11 @@ it is available.  It is also helpful documentation for users.
 An example of creating a "barebones" `int` scalar output signal with
 no unit, minimum, or maximum information:
 
-![Adding a simple integer output signal](./images/maxmsp3.png)
+![Adding a simple integer output signal](./images/maxmsp_central3.png)
 
 An example of a `float` signal where some more information is provided:
 
-![Adding a floating-point output signal with some optional properties](./images/maxmsp4.png)
+![Adding a floating-point output signal with some optional properties](./images/maxmsp_central4.png)
 
 So far we know how to create a device and to specify an output signal
 for it.
@@ -130,7 +132,7 @@ So in the "sensor 1 voltage" example, assuming that we have some code
 which reads sensor 1's value into a float variable in `[p read_sensor]`,
 the patch becomes:
 
-![Updating a signal](./images/maxmsp5.png)
+![Updating a signal](./images/maxmsp_central5.png)
 
 This is about all that is needed to expose sensor 1's voltage to the
 network as a mappable parameter.  The _libmapper_ GUI can now be used
@@ -180,7 +182,7 @@ message, updates for this signal will be routed to the left output
 of the `[mapper]` object. Let's try making two devices in the same patch
 for testing.
 
-![Sending and receiving signal updates](./images/maxmsp6.png)
+![Sending and receiving signal updates](./images/maxmsp_central6.png)
 
 If you use your mapping GUI to create a link between the two devices
 _sender_ and _receiver_ and a connection between your two signals
@@ -210,7 +212,7 @@ automatically using `learn` mode. You can either send the message
 instantiate your `[mapper]` object with the learn property set as an
 argument:
 
-![Enabling learn mode on a device](./images/maxmsp7.png)
+![Enabling learn mode on a device](./images/maxmsp_central7.png)
 
 the object will watch its inlet for messages formatted as `/<name> value(s)`
 and add any unknown signals automatically. Signals added this way will not
@@ -249,7 +251,7 @@ correctly-formatted JSON with the following structure:
 To load your device definition, simply instantiate your `[mapper]` object with
 the file name as a property:
 
-![Loading a device definition file](./images/maxmsp8.png)
+![Loading a device definition file](./images/maxmsp_central8.png)
 
 Publishing metadata
 ===================
@@ -279,11 +281,11 @@ arguments
 For example, to store a `float` indicating the X position of a device
 `dev`, you could instantiate your object like this:
 
-![Adding extra properties to a device](./images/maxmsp9.png)
+![Adding extra properties to a device](./images/maxmsp_central9.png)
 
 To specify a string property of a signal:
 
-![Adding extra properties to a signal](./images/maxmsp10.png)
+![Adding extra properties to a signal](./images/maxmsp_central10.png)
 
 In general you can use any property name not already in use by the
 device or signal data structure.  Reserved words for signals are: 
diff --git a/doc/tutorials/tutorial_maxmsp.md b/doc/tutorials/tutorial_maxmsp_multiobj.md
similarity index 59%
copy from doc/tutorials/tutorial_maxmsp.md
copy to doc/tutorials/tutorial_maxmsp_multiobj.md
index 1ecc1bc..42ca5c5 100644
--- a/doc/tutorials/tutorial_maxmsp.md
+++ b/doc/tutorials/tutorial_maxmsp_multiobj.md
@@ -1,10 +1,11 @@
 Getting started
 ===============
+Note: this tutorial will introduce the revised bindings for MaxMSP (July 2013). You can access the tutorial for the original bindings using the `[mapper]` object [here](./maxmsp_central.html).
 
 To start using the _libmapper_ with MaxMSP you will need to:
 
 * Install _libmapper_ for your platform (Linux, OSX, Windows)
-* Download the `[mapper]` external object from our [downloads page](../downloads.html).
+* Download the external objects from our [downloads page](../downloads.html).
 Alternatively, you can build the object from
 [source](http://github.com/malloch/mapper-max-pd) instead.
 * Download a [graphical user interface](../downloads.html#GUIs) for
@@ -16,39 +17,54 @@ Devices
 Creating a device
 -----------------
 
-To create a _libmapper_ device, it is necessary to provide a device
-name to the `[mapper]` object using the property `@alias`.
+To create a _libmapper_ device, create an object called `[map.device]`
+with an optional argument specifying the device's name.
 There is an initialization period after a device is created where
 a unique ordinal is chosen to append to the device name.
 This allows multiple devices with the same name to
 exist on the network. If no name is given libmapper will choose a
 name for your device starting with the string "maxmsp".
 
-If desired, a device definition file can be specified with the property
-`@definition` or `@def`, which the external will use to add signals
-to your device. Otherwise, you device will start with no inputs
-or outputs and you will need to add them using messages. In this tutorial,
-we will assume that you do not have a prepared device definition file.
+Your device will start with no inputs or outputs, so it will not yet show
+up in most GUIs.
 
-A third optional parameter of the `[mapper]` object is a network
-interface name.  By default, libmapper will try to guess which network
+You can also provide arbitrary properties to your device using jitter-style
+properties.  By default, libmapper will try to guess which network
 interface to use for mapping, defaulting to the local loopback interface
 ethernet or wifi is not available.  You can force the object to use a
 particular interface by using the `@interface` property.
 
 An example of creating a device:
 
-![Creating a device.](./images/maxmsp1.png)
+![Creating a device.](./images/maxmsp_multiobj1.png)
 
-Once the object has initialized, it will output its metadata from the right
-outlet:
+Once the object has initialized, it will output its metadata from its outlet:
 
 * The complete device name, including an appended ordinal for distinguishing
 between multiple active devices with the same name.
 * The IP address and port in use by the object.
-* The number of input and output signals associated with the object.
+* The number of input and output signals associated with the object
+(none to start).
 * The network interface in use by the object.
 
+If and when this information changes, the object will output the updated
+property.
+
+
+Multiple devices
+----------------
+
+Once you have created a `[map.device]` object in a patcher, it considers
+itself to be the "parent" device for that patcher and all of its subpatchers.
+This means that it you try to create a second copy of the device in the same
+patcher, or in one of its child subpatchers, the object instantiation will fail.
+When the object is created, it checks whether there is a pre-existing device
+that would cause a conflict.
+
+You can, however, create multiple `[map.device]` objects in the same patch as
+long as they are both contained in different subpatchers.
+
+
 Signals
 =======
 
@@ -56,55 +72,45 @@ Now that we have created a device, we only need to know how to
 add signals in order to give our program some input/output functionality.
 
 We'll start with creating a "sender", so we will first talk about how
-to update output signals.
+to create and update output signals.
 
 Creating a signal
 -----------------
 
-Creating a signal requires two pieces of information: 
+Creating input and output signals is accomplished with the `[map.in]` and
+`[map.out]` objects, which requires two pieces of information: 
 
-* a name for the signal (must be unique within a devices inputs or outputs)
+* a name for the signal
 * the signal's data type expressed as a character 'i' for `integer`, 'f'
 for `float`
 
+A third optional integer argument sets the signal's vector length,
+if it is omitted the signal is assumed to have length 1.
 Additional signal properties can also (optionally) be added:
 
-* the signal's vector length
-* the signal's unit
-* the signal's minimum value
-* the signal's maximum value
+* the signal's unit, e.g. `@unit Hz`
+* the signal's minimum value, e.g. `@min 0`
+* the signal's maximum value, e.g. `@max 100`
 
 examples:
 
-![Adding signals to a device](./images/maxmsp2.png)
+![Adding signals to a device](./images/maxmsp_multiobj2.png)
 
-The only _required_ parameters here are the signal name,
-and data type.  If no `length` property is provided, the signal is
-assumed to have length 1.  A signal name should start with "/",
-as this is how it is represented in the OSC address.
-(One will be added if you forget to do this.)
-Finally, supported types are currently 'i' or 'f' for `int` or
-`float` values, respectively.
-
-The other parameters are not strictly required, but the more
-information you provide, the more the mapper can do some things
-automatically.  For example, if `minimum` and `maximum` are provided,
-it will be possible to create linear-scaled connections very quickly.
-If `unit` is provided, the mapper will be able to similarly figure out
-a linear scaling based on unit conversion. (Centimeters to inches for
-example.) Currently automatic unit-based scaling is not a supported
-feature, but will be added in the future.  You can take advantage of
-this future development by simply providing unit information whenever
-it is available.  It is also helpful documentation for users.
-
-An example of creating a "barebones" `int` scalar output signal with
-no unit, minimum, or maximum information:
-
-![Adding a simple integer output signal](./images/maxmsp3.png)
+The only _required_ parameters here are the signal name and data type,
+but the more information you provide, the more the mapper can do some
+things automatically.  For example, if `minimum` and `maximum` are
+provided, it will be possible to create linear-scaled connections very
+quickly.  If `unit` is provided, the mapper will be able to similarly
+figure out a linear scaling based on unit conversion. (Centimeters to
+inches for example.) Currently automatic unit-based scaling is not a
+supported feature, but will be added in the future.  You can take
+advantage of this future development by simply providing unit
+information whenever it is available.  It is also helpful documentation
+for users.
 
 An example of a `float` signal where some more information is provided:
 
-![Adding a floating-point output signal with some optional properties](./images/maxmsp4.png)
+![Adding a floating-point output signal with some optional properties](./images/maxmsp_multiobj3.png)
 
 So far we know how to create a device and to specify an output signal
 for it.
@@ -120,17 +126,15 @@ slider.  However it's getting the data, it must provide it to
 _libmapper_ so that it will be sent to other devices if that signal
 is mapped.
 
-This is accomplished by passing messages to the `[mapper]` object
-starting with the signal name:
-
-    (<signal_name> <value>)
-     |
+This is accomplished by passing ints or floats to the `[map.out]` object.
+In the case of vector signals, a list with the same number of elements
+should be used.
 
 So in the "sensor 1 voltage" example, assuming that we have some code
 which reads sensor 1's value into a float variable in `[p read_sensor]`,
 the patch becomes:
 
-![Updating a signal](./images/maxmsp5.png)
+![Updating a signal](./images/maxmsp_multiobj4.png)
 
 This is about all that is needed to expose sensor 1's voltage to the
 network as a mappable parameter.  The _libmapper_ GUI can now be used
@@ -175,12 +179,13 @@ _zero_ network bandwidth, if they are not mapped.
 Receiving signals
 -----------------
 
-Receiving signals is even easier: after adding an input using the `add input`
-message, updates for this signal will be routed to the left output
-of the `[mapper]` object. Let's try making two devices in the same patch
-for testing.
+Receiving signals is even easier: create a `[map.in]` object with a
+name and type, and updates for this signal will be routed to its outlet.
+The arguments for the `[map.in]` object are identical to `[map.out]`.
+
+Let's try making two devices in the same patch for testing.
 
-![Sending and receiving signal updates](./images/maxmsp6.png)
+![Sending and receiving signal updates](./images/maxmsp_multiobj5.png)
 
 If you use your mapping GUI to create a link between the two devices
 _sender_ and _receiver_ and a connection between your two signals
@@ -199,63 +204,13 @@ between the two float objects and accomplished the same thing, but your
 * It can be edited to provide signal processing, including automatic
  linear scaling, calibration, muting, clipping, or an arbitrary
  expression - even FIR and IIR filters.
- 
-
-Learn mode
-----------
-
-For patches with only outputs, lazy users can also declare the signals
-automatically using `learn` mode. You can either send the message
-"learn 1" to turn on learning ("learn 0" to turn it off) or you can
-instantiate your `[mapper]` object with the learn property set as an
-argument:
-
-![Enabling learn mode on a device](./images/maxmsp7.png)
-
-the object will watch its inlet for messages formatted as `/<name> value(s)`
-and add any unknown signals automatically. Signals added this way will not
-have associated minimum or maximum values, however, so it is usually
-recommended to add the signals explicitly using messages.
-
-Device definitions
-------------------
-
-If you wish, you can declare your libmapper signals using a device definition
-file instead of sending messages to the `[mapper]` object. This file should be
-correctly-formatted JSON with the following structure:
-
-	{
-	     "device" : {
-	        "fileversion" : "dot-1",
-	        "name" : "tester",
-	        "inputs" : [
-	            {
-	                "name" : "/in1",
-	                "type" : "f"
-	            }
-	        ],
-	        "outputs" : [
-	            {
-	                "name" : "/out1",
-	                "type" : "f",
-	                "units" : "cm",
-	                "minimum" : 4.0,
-	                "maximum" : 5.1
-	            }
-	        ]
-	    }
-	}
-
-To load your device definition, simply instantiate your `[mapper]` object with
-the file name as a property:
-
-![Loading a device definition file](./images/maxmsp8.png)
+
 
 Publishing metadata
 ===================
 
 Things like device names, signal units, and ranges, are examples of
-metadata--information about the data you are exposing on the network.
+metadata — information about the data you are exposing on the network.
 
 _libmapper_ also provides the ability to specify arbitrary extra
 metadata in the form of name-value pairs.  These are not interpreted
@@ -279,14 +234,14 @@ arguments
 For example, to store a `float` indicating the X position of a device
 `dev`, you could instantiate your object like this:
 
-![Adding extra properties to a device](./images/maxmsp9.png)
+![Adding extra properties to a device](./images/maxmsp_multiobj6.png)
 
 To specify a string property of a signal:
 
-![Adding extra properties to a signal](./images/maxmsp10.png)
+![Adding extra properties to a signal](./images/maxmsp_multiobj7.png)
 
 In general you can use any property name not already in use by the
 device or signal data structure.  Reserved words for signals are: 
-`device_name` `direction` `length` `max` `min` `name` `type` `unit`
+`device_name` `direction` `length` `name` `type`
 
 for devices, they are: `host` `port` `name`
\ No newline at end of file
diff --git a/doc/tutorials/tutorial_maxmsp.md b/doc/tutorials/tutorial_pure_data.md
similarity index 86%
rename from doc/tutorials/tutorial_maxmsp.md
rename to doc/tutorials/tutorial_pure_data.md
index 1ecc1bc..5ba1eff 100644
--- a/doc/tutorials/tutorial_maxmsp.md
+++ b/doc/tutorials/tutorial_pure_data.md
@@ -1,7 +1,7 @@
 Getting started
 ===============
 
-To start using the _libmapper_ with MaxMSP you will need to:
+To start using the _libmapper_ with Pure Data you will need to:
 
 * Install _libmapper_ for your platform (Linux, OSX, Windows)
 * Download the `[mapper]` external object from our [downloads page](../downloads.html).
@@ -22,7 +22,7 @@ There is an initialization period after a device is created where
 a unique ordinal is chosen to append to the device name.
 This allows multiple devices with the same name to
 exist on the network. If no name is given libmapper will choose a
-name for your device starting with the string "maxmsp".
+name for your device starting with the string "puredata".
 
 If desired, a device definition file can be specified with the property
 `@definition` or `@def`, which the external will use to add signals
@@ -38,7 +38,7 @@ particular interface by using the `@interface` property.
 
 An example of creating a device:
 
-![Creating a device.](./images/maxmsp1.png)
+![Creating a device.](./images/puredata1.png)
 
 Once the object has initialized, it will output its metadata from the right
 outlet:
@@ -76,7 +76,7 @@ Additional signal properties can also (optionally) be added:
 
 examples:
 
-![Adding signals to a device](./images/maxmsp2.png)
+![Adding signals to a device](./images/puredata2.png)
 
 The only _required_ parameters here are the signal name,
 and data type.  If no `length` property is provided, the signal is
@@ -100,11 +100,11 @@ it is available.  It is also helpful documentation for users.
 An example of creating a "barebones" `int` scalar output signal with
 no unit, minimum, or maximum information:
 
-![Adding a simple integer output signal](./images/maxmsp3.png)
+![Adding a simple integer output signal](./images/puredata3.png)
 
 An example of a `float` signal where some more information is provided:
 
-![Adding a floating-point output signal with some optional properties](./images/maxmsp4.png)
+![Adding a floating-point output signal with some optional properties](./images/puredata4.png)
 
 So far we know how to create a device and to specify an output signal
 for it.
@@ -130,7 +130,7 @@ So in the "sensor 1 voltage" example, assuming that we have some code
 which reads sensor 1's value into a float variable in `[p read_sensor]`,
 the patch becomes:
 
-![Updating a signal](./images/maxmsp5.png)
+![Updating a signal](./images/puredata5.png)
 
 This is about all that is needed to expose sensor 1's voltage to the
 network as a mappable parameter.  The _libmapper_ GUI can now be used
@@ -180,7 +180,7 @@ message, updates for this signal will be routed to the left output
 of the `[mapper]` object. Let's try making two devices in the same patch
 for testing.
 
-![Sending and receiving signal updates](./images/maxmsp6.png)
+![Sending and receiving signal updates](./images/puredata6.png)
 
 If you use your mapping GUI to create a link between the two devices
 _sender_ and _receiver_ and a connection between your two signals
@@ -210,46 +210,13 @@ automatically using `learn` mode. You can either send the message
 instantiate your `[mapper]` object with the learn property set as an
 argument:
 
-![Enabling learn mode on a device](./images/maxmsp7.png)
+![Enabling learn mode on a device](./images/puredata7.png)
 
 the object will watch its inlet for messages formatted as `/<name> value(s)`
 and add any unknown signals automatically. Signals added this way will not
 have associated minimum or maximum values, however, so it is usually
 recommended to add the signals explicitly using messages.
 
-Device definitions
-------------------
-
-If you wish, you can declare your libmapper signals using a device definition
-file instead of sending messages to the `[mapper]` object. This file should be
-correctly-formatted JSON with the following structure:
-
-	{
-	     "device" : {
-	        "fileversion" : "dot-1",
-	        "name" : "tester",
-	        "inputs" : [
-	            {
-	                "name" : "/in1",
-	                "type" : "f"
-	            }
-	        ],
-	        "outputs" : [
-	            {
-	                "name" : "/out1",
-	                "type" : "f",
-	                "units" : "cm",
-	                "minimum" : 4.0,
-	                "maximum" : 5.1
-	            }
-	        ]
-	    }
-	}
-
-To load your device definition, simply instantiate your `[mapper]` object with
-the file name as a property:
-
-![Loading a device definition file](./images/maxmsp8.png)
 
 Publishing metadata
 ===================
@@ -271,7 +238,7 @@ Any time there may be extra knowledge about a signal or device, it is
 a good idea to represent it by adding such properties, which can be of
 any OSC-compatible type.  (So, numbers and strings, etc.)
 
-The MaxMSP bindings for libmapper do not currently allow dynamically
+The Pure Data bindings for libmapper do not currently allow dynamically
 changing the properties of a device or signal, however they can be
 declared when the entity is created by using jitter-style property
 arguments
@@ -279,11 +246,11 @@ arguments
 For example, to store a `float` indicating the X position of a device
 `dev`, you could instantiate your object like this:
 
-![Adding extra properties to a device](./images/maxmsp9.png)
+![Adding extra properties to a device](./images/puredata8.png)
 
 To specify a string property of a signal:
 
-![Adding extra properties to a signal](./images/maxmsp10.png)
+![Adding extra properties to a signal](./images/puredata9.png)
 
 In general you can use any property name not already in use by the
 device or signal data structure.  Reserved words for signals are: 
diff --git a/doc/tutorials/tutorial_python.md b/doc/tutorials/tutorial_python.md
index a33b052..47ae735 100644
--- a/doc/tutorials/tutorial_python.md
+++ b/doc/tutorials/tutorial_python.md
@@ -8,8 +8,6 @@ compile the Python bindings.  On Mac OS X, we provide a precompiled
 Framework bundle for 32- and 64-bit Intel platforms, so using it with
 XCode should be a matter of including it in your project.
 
-// TODO: macports/fink/homebrew/etc
-
 Once you have libmapper installed, it can be imported into your program:
 
     import mapper
@@ -61,7 +59,7 @@ interface to use.
 
 An example of creating a device:
 
-    dev = mapper.device( "mydevice" )
+    dev = mapper.device( "my_device" )
 
 Polling the device
 ------------------
@@ -93,7 +91,7 @@ check for any immediate actions and then return without waiting:
 
 An example of calling it with non-blocking behaviour:
 
-    dev.poll( 0 );
+    dev.poll( 0 )
 
 If your polling is in the middle of a processing function or in
 response to a GUI event for example, non-blocking behaviour is
@@ -151,7 +149,7 @@ for input signals there is an additional argument:
 examples:
 
     sig_in = dev.add_input( "/my_input", 1, 'f', "m/s", -10, 10, h )
-    
+
     sig_out = dev.add_output( "/my_output", 4, 'i', None, 0, 1000 )
 
 The only _required_ parameters here are the signal "length", its name,
@@ -181,11 +179,11 @@ in the `handler` parameter.
 An example of creating a "barebones" `int` scalar output signal with
 no unit, minimum, or maximum information:
 
-    outA = dev.add_output( "/outA", 1, 'i', None, None, None );
+    outA = dev.add_output( "/outA", 1, 'i', None, None, None )
 
 or omitting some arguments:
 
-    outA = dev.add_output( "/outA", 1, 'i' );
+    outA = dev.add_output( "/outA", 1, 'i' )
 
 An example of a `float` signal where some more information is provided:
 
@@ -296,12 +294,12 @@ about controlling one parameter: the frequency of the sine.
 
 We need to create a handler function for libmapper to update the pyo synth:
 
-    def frequency_handler(sig, id, f, timetag):
+    def frequency_handler(sig, id, val, timetag):
         try:
-            a.setFreq( f )
+            sine.setFreq( val )
         except:
             print 'exception'
-            print sig, f
+            print sig, val
 
 Then our program will look like this:
 
@@ -310,22 +308,23 @@ Then our program will look like this:
 
     # Some pyo stuff
     synth = Server().boot().start()
-    a = Sine( freq=200, mul=0.5 )
-    out = a()
+    sine = Sine( freq=200, mul=0.5 ).out()
 
-    def freq_handler (sig, id, f, timetag):
+    def freq_handler( sig, id, val, timetag ):
         try:
-            a.setFreq( f )
+            sine.setFreq( val )
         except:
             print 'exception'
-            print sig, f
+            print sig, val
 
-    dev = mapper.device( "pyo_example" )
-    dev.add_input( "freq", 1, 'f', "Hz", 20, 2000, freq_handler )
+    dev = mapper.device( 'pyo_example' )
+    dev.add_input( '/freq', 1, 'f', 'Hz', 20, 2000, freq_handler )
 
-    while 1:
+    while True:
         dev.poll( 100 )
 
+	synth.stop()
+
 Alternately, we can simplify our code by using a `lambda function`
 instead of a separate handler:
 
@@ -334,15 +333,135 @@ instead of a separate handler:
 
     # Some pyo stuff
     synth = Server().boot().start()
-    sine = Sine( freq=200, mul=0.5 )
-    out = sine.out()
+    sine = Sine( freq=200, mul=0.5 ).out()
 
-    dev = mapper.device( "pyo_example" )
-    dev.add_input( "freq", 1, 'f', "Hz", 20, 2000, lambda s, i, f, t: sine.setFreq(f) )
+    dev = mapper.device( 'pyo_example' )
+    dev.add_input( '/freq', 1, 'f', "Hz", 20, 2000, lambda s, i, f, t: sine.setFreq(f) )
 
-    while 1:
+    while True:
         dev.poll( 100 )
 
+	synth.stop()
+
+
+Working with timetags
+=====================
+_libmapper_ uses the `mapper_timetag_t` data structure internally to store
+[NTP timestamps](http://en.wikipedia.org/wiki/Network_Time_Protocol#NTP_timestamps),
+but this value is represented using the `double` type in the python bindings.
+For example, the handler function called when a signal update is received
+contains a `timetag` argument.  This argument indicates the time at
+which the source signal was _sampled_ (in the case of sensor signals)
+or _generated_ (in the case of sequenced or algorithimically-generated
+signals).
+
+The `update` function for output signals is overloaded; calling the function
+without a timetag argument will automatically label the outgoing signal
+update with the current time. In cases where the update should more
+properly be labeled with another time, this can be accomplished by simply
+adding the timetag as a second argument.  This timestamp should only be
+overridden if your program has access to a more accurate measurement
+of the real time associated with the signal update, for example if
+you are writing a driver for an outboard sensor system that provides
+the sampling time.
+
+_libmapper_ also provides helper functions for getting the current
+device-time:
+
+    now = <device>.now()
+
+Working with signal instances
+=============================
+_libmapper_ also provides support for signals with multiple _instances_,
+for example:
+
+* control parameters for polyphonic synthesizers;
+* touches tracked by a multitouch surface;
+* "blobs" identified by computer vision systems;
+* objects on a tabletop tangible user interface;
+* _temporal_ objects such as gestures or trajectories.
+
+The important qualities of signal instances in _libmapper_ are:
+
+* **instances are interchangeable**: if there are semantics attached
+  to a specific instance it should be represented with separate signals
+  instead.
+* **instances can be ephemeral**: signal instances can be dynamically
+  created and destroyed. _libmapper_ will ensure that linked devices
+  share a common understanding of the relatonships between instances
+  when they are mapped.
+* **map once for all instances**: one mapping connection serves to
+  map all of its instances.
+
+All signals possess one instance by default. If you would like to reserve
+more instances you can use:
+
+    <sig>.reserve_instances( int num )
+
+After reserving instances you can update a specific instance:
+
+    <sig>.update_instance( int instance_id,
+                           <value> )
+
+or
+
+    <sig>.update_instance( int instance_id,
+                           <value>,
+                           double timetag )
+
+All of the arguments except one should be familiar from the
+documentation of `msig_update()` presented earlier.
+The `instance_id` argument does not have to be considered as an array
+index - it can be any integer that is convenient for labelling your
+instance. _libmapper_ will internally create a map from your id label
+to one of the preallocated instance structures.
+
+Receiving instances
+-------------------
+You might have noticed earlier that the handler function called when
+a signal update is received has a argument called `id`. Here
+is the function prototype again:
+
+	def frequency_handler( signal, id, value, timetag ):
+
+Under normal usage, the `id` argument will have a value (0 <= n <= num_instances)
+and can be used as an array index. Remember that you will need to reserve
+instances for your input signal using `<sig>.reserve_instances()` if you
+want to receive instance updates.
+
+Instance Stealing
+-----------------
+
+For handling cases in which the sender signal has more instances than
+the receiver signal, the _instance allocation mode_ can be set for an
+input signal to set an action to take in case all allocated instances are in
+use and a previously unseen instance id is received. Use the function:
+
+    <sig>.set_instance_allocation_mode( mapper_instance_allocation_type mode );
+
+The argument `mode` can have one of the following values:
+
+* `mapper.IN_UNDEFINED` Default value, in which no stealing of instances will occur;
+* `mapper.IN_STEAL_OLDEST` Release the oldest active instance and reallocate its
+  resources to the new instance;
+* `mapper.IN_STEAL_NEWEST` Release the newest active instance and reallocate its
+  resources to the new instance;
+
+If you want to use another method for determining which active instance
+to release (e.g. the sound with the lowest volume), you can create an `instance_event_handler` for the signal and write the method yourself:
+
+	def my_handler( sig, id, event, timetag ):
+        # user code chooses which instance to release
+        id = choose_instance_to_release( msig )
+
+        sig.release_instance( id, timetag )
+
+For this function to be called when instance stealing is necessary, we
+need to register it for `mapper.IN_OVERFLOW` events:
+
+    <sig>.set_instance_event_callback( my_handler,
+                                       mapper.IN_OVERFLOW )
+
 
 Publishing metadata
 ===================
@@ -367,13 +486,13 @@ any OSC-compatible type.  (So, numbers and strings, etc.)
 The property interface is through the functions,
 
     set_property( key, value )
-                  
+
 where the value can any OSC-compatible type. This function can be called
 for devices or signals.
 
 For example, to store a `float` indicating the X position of a device
 `dev`, you can call it like this:
-    
+
     dev.set_property( "x", 12.5 )
 
 To specify a string property of a signal:
@@ -396,7 +515,7 @@ Therefore this can provide a unified string-based method for accessing
 any signal property:
 
     props = sig.get_properties()
-    sensingMethod = props['sensingMethod']
+    sensingMethod = props[ 'sensingMethod' ]
 
 Primarily this is an interface meant for network monitors, but may
 come in useful for an application implementing a device.
diff --git a/examples/Makefile.in b/examples/Makefile.in
deleted file mode 100644
index a30f165..0000000
--- a/examples/Makefile.in
+++ /dev/null
@@ -1,772 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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@
- at HAVE_AUDIO_TRUE@@HAVE_SWIG_TRUE at am__append_1 = py_tk_gui
- at HAVE_AUDIO_TRUE@bin_PROGRAMS = pwm_example$(EXEEXT)
-subdir = examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am__pwm_example_SOURCES_DIST = pwm_example.cpp
- at HAVE_AUDIO_TRUE@am_pwm_example_OBJECTS =  \
- at HAVE_AUDIO_TRUE@	pwm_example-pwm_example.$(OBJEXT)
-pwm_example_OBJECTS = $(am_pwm_example_OBJECTS)
-am__DEPENDENCIES_1 =
- at HAVE_AUDIO_TRUE@pwm_example_DEPENDENCIES = pwm_synth/libpwm.la \
- at HAVE_AUDIO_TRUE@	$(top_builddir)/src/libmapper- at MAJOR_VERSION@.la \
- at HAVE_AUDIO_TRUE@	$(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-pwm_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(pwm_example_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(pwm_example_SOURCES)
-DIST_SOURCES = $(am__pwm_example_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
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-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 = pwm_synth py_tk_gui
-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@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = pwm_synth $(am__append_1)
- at HAVE_AUDIO_TRUE@pwm_example_CXXFLAGS = -Wall -I$(top_srcdir)/include $(liblo_CFLAGS)
- at HAVE_AUDIO_TRUE@pwm_example_SOURCES = pwm_example.cpp
- at HAVE_AUDIO_TRUE@pwm_example_LDADD = pwm_synth/libpwm.la \
- at HAVE_AUDIO_TRUE@	$(top_builddir)/src/libmapper- at MAJOR_VERSION@.la \
- at HAVE_AUDIO_TRUE@	@RTAUDIO_LIBS@ $(liblo_LIBS)
-
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .cpp .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) --foreign examples/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign examples/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)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	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
-pwm_example$(EXEEXT): $(pwm_example_OBJECTS) $(pwm_example_DEPENDENCIES) $(EXTRA_pwm_example_DEPENDENCIES) 
-	@rm -f pwm_example$(EXEEXT)
-	$(AM_V_CXXLD)$(pwm_example_LINK) $(pwm_example_OBJECTS) $(pwm_example_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pwm_example-pwm_example.Po at am__quote@
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-pwm_example-pwm_example.o: pwm_example.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwm_example_CXXFLAGS) $(CXXFLAGS) -MT pwm_example-pwm_example.o -MD -MP -MF $(DEPDIR)/pwm_example-pwm_example.Tpo -c -o pwm_example-pwm_example.o `test -f 'pwm_example.cpp' || echo '$(srcdir)/'`pwm_example.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pwm_example-pwm_example.Tpo $(DEPDIR)/pwm_example-pwm_example.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pwm_example.cpp' object='pwm_example-pwm_example.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwm_example_CXXFLAGS) $(CXXFLAGS) -c -o pwm_example-pwm_example.o `test -f 'pwm_example.cpp' || echo '$(srcdir)/'`pwm_example.cpp
-
-pwm_example-pwm_example.obj: pwm_example.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwm_example_CXXFLAGS) $(CXXFLAGS) -MT pwm_example-pwm_example.obj -MD -MP -MF $(DEPDIR)/pwm_example-pwm_example.Tpo -c -o pwm_example-pwm_example.obj `if test -f 'pwm_example.cpp'; then $(CYGPATH_W) 'pwm_example.cpp'; else $(CYGPATH_W) '$(srcdir)/pwm_example.cpp'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pwm_example-pwm_example.Tpo $(DEPDIR)/pwm_example-pwm_example.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pwm_example.cpp' object='pwm_example-pwm_example.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwm_example_CXXFLAGS) $(CXXFLAGS) -c -o pwm_example-pwm_example.obj `if test -f 'pwm_example.cpp'; then $(CYGPATH_W) 'pwm_example.cpp'; else $(CYGPATH_W) '$(srcdir)/pwm_example.cpp'; fi`
-
-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 \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    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 $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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-binPROGRAMS clean-generic clean-libtool 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-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-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-binPROGRAMS
-
-.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-binPROGRAMS \
-	clean-generic clean-libtool 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-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 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-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/examples/pwm_synth/Makefile.in b/examples/pwm_synth/Makefile.in
deleted file mode 100644
index b59cb89..0000000
--- a/examples/pwm_synth/Makefile.in
+++ /dev/null
@@ -1,575 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = examples/pwm_synth
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libpwm_la_LIBADD =
-am__libpwm_la_SOURCES_DIST = pwm.cpp RtAudio.cpp
- at HAVE_AUDIO_TRUE@am_libpwm_la_OBJECTS = libpwm_la-pwm.lo \
- at HAVE_AUDIO_TRUE@	libpwm_la-RtAudio.lo
-libpwm_la_OBJECTS = $(am_libpwm_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libpwm_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libpwm_la_CXXFLAGS) \
-	$(CXXFLAGS) $(libpwm_la_LDFLAGS) $(LDFLAGS) -o $@
- at HAVE_AUDIO_TRUE@am_libpwm_la_rpath =
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libpwm_la_SOURCES)
-DIST_SOURCES = $(am__libpwm_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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@
- at HAVE_AUDIO_TRUE@noinst_LTLIBRARIES = libpwm.la
- at HAVE_AUDIO_TRUE@libpwm_la_CXXFLAGS = -Wall @RTAUDIO_CFLAGS@
- at HAVE_AUDIO_TRUE@libpwm_la_SOURCES = pwm.cpp RtAudio.cpp
- at HAVE_AUDIO_TRUE@libpwm_la_LDFLAGS = -export-dynamic -version-info @SO_VERSION@
- at HAVE_AUDIO_TRUE@EXTRA_DIST = pwm.h RtAudio.h RtError.h RtAudio-readme.txt README.md
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cpp .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) --foreign examples/pwm_synth/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign examples/pwm_synth/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-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_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
-libpwm.la: $(libpwm_la_OBJECTS) $(libpwm_la_DEPENDENCIES) $(EXTRA_libpwm_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libpwm_la_LINK) $(am_libpwm_la_rpath) $(libpwm_la_OBJECTS) $(libpwm_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpwm_la-RtAudio.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpwm_la-pwm.Plo at am__quote@
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-libpwm_la-pwm.lo: pwm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpwm_la_CXXFLAGS) $(CXXFLAGS) -MT libpwm_la-pwm.lo -MD -MP -MF $(DEPDIR)/libpwm_la-pwm.Tpo -c -o libpwm_la-pwm.lo `test -f 'pwm.cpp' || echo '$(srcdir)/'`pwm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libpwm_la-pwm.Tpo $(DEPDIR)/libpwm_la-pwm.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pwm.cpp' object='libpwm_la-pwm.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpwm_la_CXXFLAGS) $(CXXFLAGS) -c -o libpwm_la-pwm.lo `test -f 'pwm.cpp' || echo '$(srcdir)/'`pwm.cpp
-
-libpwm_la-RtAudio.lo: RtAudio.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpwm_la_CXXFLAGS) $(CXXFLAGS) -MT libpwm_la-RtAudio.lo -MD -MP -MF $(DEPDIR)/libpwm_la-RtAudio.Tpo -c -o libpwm_la-RtAudio.lo `test -f 'RtAudio.cpp' || echo '$(srcdir)/'`RtAudio.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libpwm_la-RtAudio.Tpo $(DEPDIR)/libpwm_la-RtAudio.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='RtAudio.cpp' object='libpwm_la-RtAudio.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpwm_la_CXXFLAGS) $(CXXFLAGS) -c -o libpwm_la-RtAudio.lo `test -f 'RtAudio.cpp' || echo '$(srcdir)/'`RtAudio.cpp
-
-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:
-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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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-noinstLTLIBRARIES \
-	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: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES 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/examples/py_tk_gui/Makefile.in b/examples/py_tk_gui/Makefile.in
deleted file mode 100644
index 7f1d7dd..0000000
--- a/examples/py_tk_gui/Makefile.in
+++ /dev/null
@@ -1,446 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = examples/py_tk_gui
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/setup.py.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = setup.py
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = pwm.i tk_pwm.py
-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) --foreign examples/py_tk_gui/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign examples/py_tk_gui/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):
-setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.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
-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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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-local 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 all-local check check-am clean clean-generic \
-	clean-libtool clean-local 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
-
-
-all-local: _pwm.$(PYEXT) $(top_builddir)/examples/pwm_synth/libpwm.la
-
-$(builddir)/%_wrap.cxx $(buildir)/%.py: %.i
-	$(SWIG) -I$(top_srcdir)/examples/pwm_synth -I$(top_srcdir)/include -c++ \
-		-python -o $(builddir)/pwm_wrap.cxx $(srcdir)/pwm.i
-
-# Don't interfere with distutils CFLAGS
-_%.$(PYEXT): $(builddir)/%_wrap.cxx
-	pwd
-	cd $(builddir) && env CFLAGS="" python setup.py build_ext
-	- at mv -v build/lib.*/$@ .
-	- at rm -rf build
-
-clean-local:
-	- at rm -vf _pwm.$(PYEXT) pwm.py pwm_wrap.c
-
-# 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/examples/pyo_example.py b/examples/pyo_example.py
new file mode 100644
index 0000000..08792fb
--- /dev/null
+++ b/examples/pyo_example.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+from pyo import *
+import mapper
+import math
+
+s = Server().boot()
+s.start()
+
+duty = SigTo(value=0.5, time=0.5, init=0.5, add=-0.5)
+freq = SigTo(value=200, time=0.5, init=200)
+amp = SigTo(value=0.5, time=0.5, init=0.0)
+
+p = Phasor(freq=freq, add=Clip(duty, min=-0.5, max=0.5))
+sig = DCBlock(Sig(value=Round(p), mul=[amp, amp])).out()
+
+try:
+    dev = mapper.device("pyo_pwm_example", 9000)
+    dev.add_input("/frequency", 1, 'f', "Hz", 0, 1000, lambda s,i,n,t: freq.setValue(n))
+    dev.add_input("/amplitude", 1, 'f', "normalized", 0, 1, lambda s,i,n,t: amp.setValue(n))
+    dev.add_input("/duty", 1, 'f', "normalized", 0, 1, lambda s,i,n,t: duty.setValue(n))
+
+    while True:
+        dev.poll(5)
+
+finally:
+    s.stop()
\ No newline at end of file
diff --git a/examples/pyside_gui_label_example.py b/examples/pyside_gui_label_example.py
new file mode 100644
index 0000000..c9e2b59
--- /dev/null
+++ b/examples/pyside_gui_label_example.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+
+import sys
+from PySide.QtCore import *
+from PySide.QtGui import *
+import mapper
+
+def h(dev, link, sig, con, action):
+    id = con['src_name']
+    id = int(id[7])
+    if action == mapper.MDEV_LOCAL_ESTABLISHED:
+        gui.labels[id].setText(link['dest_name']+con['dest_name'])
+    else:
+        gui.labels[id].setText('slider%i' %id)
+
+dev = mapper.device("pysideGUI")
+dev.set_connection_callback(h)
+sigs = []
+for i in range(3):
+    sigs.append(dev.add_output('/slider%i' %i, 1, 'f', None, 0, 1))
+
+class gui(QMainWindow):
+    
+    def __init__(self):
+        QMainWindow.__init__(self)
+        self.setGeometry(300, 300, 300, 300)
+        self.setFixedSize(300, 300)
+        self.setWindowTitle('libmapper device gui example')
+        blurb = QLabel('These sliders will be dynamically labeled with the name of destination signals to which they are connected.', self)
+        blurb.setGeometry(5, 0, 290, 50)
+        blurb.setWordWrap(True)
+
+        self.labels = []
+        self.sliders = []
+        for i in range(3):
+            self.sliders.append(QSlider(Qt.Orientation.Horizontal, self))
+            self.sliders[i].setRange(0, 100)
+            self.sliders[i].setGeometry(5, 100+i*75, 290, 20)
+            self.labels.append(QLabel('slider%i' %i, self))
+            self.labels[i].setGeometry(5, 75+i*75, 290, 15)
+
+        self.sliders[0].valueChanged.connect(lambda x: sigs[0].update(x*0.01))
+        self.sliders[1].valueChanged.connect(lambda x: sigs[1].update(x*0.01))
+        self.sliders[2].valueChanged.connect(lambda x: sigs[2].update(x*0.01))
+
+        self.timer = QBasicTimer()
+        self.timer.start(500, self)
+
+    def timerEvent(self, event):
+        if event.timerId() == self.timer.timerId():
+            dev.poll()
+
+        else:
+            QtGui.QFrame.timerEvent(self, event)
+
+app = QApplication(sys.argv)
+gui = gui()
+gui.show()
+sys.exit(app.exec_())
diff --git a/extra/Makefile.in b/extra/Makefile.in
deleted file mode 100644
index cda79ce..0000000
--- a/extra/Makefile.in
+++ /dev/null
@@ -1,625 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = extra
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-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__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-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@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = osx
-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) --foreign extra/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign extra/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 \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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/extra/osx/Makefile.in b/extra/osx/Makefile.in
deleted file mode 100644
index 256a9cb..0000000
--- a/extra/osx/Makefile.in
+++ /dev/null
@@ -1,426 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = extra/osx
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = libmapper_slider_launcher.py
-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) --foreign extra/osx/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign extra/osx/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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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/extra/osx/portfile.txt b/extra/osx/portfile.txt
new file mode 100644
index 0000000..f0582e2
--- /dev/null
+++ b/extra/osx/portfile.txt
@@ -0,0 +1,38 @@
+# $Id$
+
+PortSystem          1.0
+
+name                libmapper
+version             0.3
+categories          net audio
+platforms           darwin
+license             LGPL
+maintainers         gmail.com:joseph.malloch
+description         Distributed system for media control mapping
+long_description    libmapper is a library for discovering and \
+                    connecting real-time control signals
+homepage            http://www.libmapper.org
+master_sites        http://idmil.org/pubfiles/software/libmapper/
+
+checksums           rmd160  \
+                    sha256 
+
+depends_lib         port:liblo \
+                    port:zlib
+
+configure.args      --disable-swig \
+                    --disable-jni \
+                    --disable-audio \
+                    --disable-docs
+
+variant python requires python {
+    configure.args_append  --enable-swig
+}
+
+variant java requires java {
+    configure.args_append --enable-jni
+}
+
+variant docs requires doxygen {
+    configure.args_append --enable-docs
+}
\ No newline at end of file
diff --git a/icons/libmapper.graffle b/icons/libmapper.graffle
new file mode 100644
index 0000000..1b73c36
Binary files /dev/null and b/icons/libmapper.graffle differ
diff --git a/icons/libmapper.icns b/icons/libmapper.icns
new file mode 100644
index 0000000..f79030f
Binary files /dev/null and b/icons/libmapper.icns differ
diff --git a/icons/libmapper.png b/icons/libmapper.png
new file mode 100644
index 0000000..7645253
Binary files /dev/null and b/icons/libmapper.png differ
diff --git a/icons/libmapper.svg b/icons/libmapper.svg
new file mode 100644
index 0000000..7f6ddb4
--- /dev/null
+++ b/icons/libmapper.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="577 65 505 425" width="505pt" height="425pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-12-09 20:30Z</dc:date><!-- Produced by OmniGraffle Professional 4.2.3 beta 1 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -2 5 4" markerWidth="5" markerHeight="4" color="white"><g><path d="M 2.0266666 0 L 0 -.76 L 0 .76 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-4 -2 5 4" markerWidth="5" markerHeight="4" color="white"><g><path d="M -2.0266666 0 L 0 .76 L 0 -.76 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-1 -2 5 4" markerWidth="5" markerHeight="4" color="red"><g><path d="M 2.0266666 0 L 0 -.76 L 0 .76 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-4 -2 5 4" markerWidth="5" markerHeight="4" color="red"><g><path d="M -2.0266666 0 L 0 .76 L 0 -.76 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><radialGradient cx="0" cy="0" r="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#595959" stop-opacity=".2"/><stop offset="1" stop-color="black" stop-opacity=".41999999"/></radialGradient><radialGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(818.76 273.5) scale(307.19253)"/><linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#adadad" stop-opacity="0"/><stop offset="1" stop-color="#b4b4b4" stop-opacity=".48"/></linearGradient><linearGradient id="Obj_Gradient_2" xl:href="#Gradient_2" gradientTransform="translate(877.1438 400.1551) rotate(-107.00001) scale(399.38022)"/><radialGradient cx="0" cy="0" r="1" id="Gradient_3" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white" stop-opacity=".2"/><stop offset="1" stop-color="white" stop-opacity="0"/></radialGradient><radialGradient id="Obj_Gradient_3" xl:href="#Gradient_3" gradientTransform="translate(818.76 273.5) scale(307.19253)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><g><use xl:href="#id70_Graphic" filter="url(#Shadow)"/><use xl:href="#id75_Graphic" filter="url(#Shadow)"/><use xl:href="#id76_Graphic" filter="url(#Shadow)"/><use xl:href="#id77_Graphic" filter="url(#Shadow)"/></g><g id="id70_Graphic"><path d="M 637.76 71 L 999.76 71 C 1027.37427 71 1049.76 93.385765 1049.76 121 L 1049.76 426 C 1049.76 453.61423 1027.37427 476 999.76 476 L 637.76 476 C 610.14575 476 587.76 453.61423 587.76 426 C 587.76 426 587.76 426 587.76 426 L 587.76 121 C 587.76 93.385765 610.14575 71 637.76 71 Z" fill="black"/></g><path d="M 652.705 195.924 C 688.9254 192.77731 724.4477 198.56229 761.377 186.483 C 798.30634 174.40372 833.24323 135.520294 874.303 123.441 C 899.68463 115.97402 927.6863 115.33345 955.87695 115.189644" marker-end="url(#FilledArrow_Marker)" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="15"/><path d="M 673.64282 352.89746 C 704.1985 352.77368 734.59216 352.32156 761.377 344.634 C 803.4633 332.55472 838.671 293.67227 874.303 281.59299 C 909.93494 269.5137 941.56433 275.298 975.19 272.151" marker-start="url(#FilledArrow_Marker_2)" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="15"/><path d="M 673.64282 194.79607 C 704.1985 194.95467 734.5923 195.43549 761.377 203.017 C 803.46313 214.92964 833.24225 253.14635 874.302 265.05899 C 899.68365 272.42294 927.68555 273.08789 955.87646 273.26529" marker-end="url(#FilledArrow_Marker_3)" marker-start="url(#FilledArrow_Marker_4)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="15"/><path d="M 652.6668 352.06183 C 688.8872 355.20853 724.4095 349.42358 761.3388 361.50287 C 798.26813 373.58215 833.205 412.46558 874.26477 424.54486 C 899.6464 432.01184 927.64807 432.6524 955.83875 432.7962" marker-end="url(#FilledArrow_Marker)" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="15"/><g id="id75_Graphic"><path d="M 637.76 71 L 999.76 71 C 1027.37427 71 1049.76 93.385765 1049.76 121 L 1049.76 426 C 1049.76 453.61423 1027.37427 476 999.76 476 L 637.76 476 C 610.14575 476 587.76 453.61423 587.76 426 C 587.76 426 587.76 426 587.76 426 L 587.76 121 C 587.76 93.385765 610.14575 71 637.76 71 Z" fill="url(#Obj_Gradient)"/></g><g id="id76_Graphic"><path d="M 1049.76 190.33823 L 1049.76 121.000084 C 1049.76 93.38576 1027.37427 71 999.7601 71 L 637.75995 71 C 610.14575 71 587.76 93.38576 587.76 121.000084 L 587.76 347.38101 C 709.3136 267.16309 893.76526 205.56306 1049.76 190.33823 Z" fill="url(#Obj_Gradient_2)"/></g><g id="id77_Graphic"><path d="M 637.75995 71 L 637.75995 71 C 610.14575 71 587.76 93.38556 587.76 121.00009 L 587.76 425.9999 C 587.76 425.9999 587.76 425.9999 587.76 425.9999 C 587.76 453.61444 610.14575 476 637.75995 476 L 999.7601 476 C 1027.37427 476 1049.76 453.61444 1049.76 425.9999 L 1049.76 121.00009 C 1049.76 93.38556 1027.37427 71 999.7601 71 Z M 646.25983 78.75009 L 990.7598 78.75009 C 1018.374 78.75009 1040.76025 101.13565 1040.76025 128.75017 L 1040.76025 416.00006 C 1040.76025 443.6142 1018.374 466.00015 990.7598 466.00015 L 646.25983 466.00015 C 618.64563 466.00015 596.2599 443.6142 596.2599 416.00006 C 596.2599 416.00006 596.2599 416.00006 596.2599 416.00006 L 596.2599 128.75017 C 596.2599 101.13565 618.64563 78.75009 646.25983 78.75009 C 646.25983 78.75009 646.25983 78.75009 646.25983 78.75009 Z" fill="url(#Obj_Gradient_3)"/></g></g></g></svg>
diff --git a/icons/libmapper_doc.icns b/icons/libmapper_doc.icns
new file mode 100644
index 0000000..14c323f
Binary files /dev/null and b/icons/libmapper_doc.icns differ
diff --git a/icons/libmapper_doc.png b/icons/libmapper_doc.png
new file mode 100644
index 0000000..d199e57
Binary files /dev/null and b/icons/libmapper_doc.png differ
diff --git a/include/Makefile.in b/include/Makefile.in
deleted file mode 100644
index a5c2678..0000000
--- a/include/Makefile.in
+++ /dev/null
@@ -1,532 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = include
-DIST_COMMON = $(libmapper_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-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__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libmapperdir)"
-HEADERS = $(libmapper_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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@
-libmapperdir = $(includedir)/mapper- at MAJOR_VERSION@/mapper
-libmapper_HEADERS = mapper/mapper.h mapper/mapper_types.h mapper/mapper_db.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) --foreign include/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign include/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-libmapperHEADERS: $(libmapper_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(libmapper_HEADERS)'; test -n "$(libmapperdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libmapperdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libmapperdir)" || exit 1; \
-	fi; \
-	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)$(libmapperdir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libmapperdir)" || exit $$?; \
-	done
-
-uninstall-libmapperHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(libmapper_HEADERS)'; test -n "$(libmapperdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(libmapperdir)'; $(am__uninstall_files_from_dir)
-
-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 $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libmapperdir)"; 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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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 distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-libmapperHEADERS
-
-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-libmapperHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libmapperHEADERS 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 \
-	tags uninstall uninstall-am uninstall-libmapperHEADERS
-
-
-# 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/include/mapper/mapper.h b/include/mapper/mapper.h
index b821d29..ad34b66 100644
--- a/include/mapper/mapper.h
+++ b/include/mapper/mapper.h
@@ -100,6 +100,14 @@ void msig_update_int(mapper_signal sig, int value);
  *  \param value A new scalar value for this signal. */
 void msig_update_float(mapper_signal sig, float value);
 
+/*! Update the value of a scalar signal of type double.
+ *  This is a scalar equivalent to msig_update(), for when passing by
+ *  value is more convenient than passing a pointer.
+ *  The signal will be routed according to external requests.
+ *  \param sig The signal to update.
+ *  \param value A new scalar value for this signal. */
+void msig_update_double(mapper_signal sig, double value);
+
 /*! Get a signal's value.
  *  \param sig      The signal to operate on.
  *  \param timetag  A location to receive the value's time tag.
@@ -118,10 +126,16 @@ int msig_query_remotes(mapper_signal sig, mapper_timetag_t tt);
 
 /**** Instances ****/
 
-/*! Add new instances to the reserve list.
+/*! Add new instances to the reserve list. Note that if instance ids are specified,
+ *  libmapper will not add multiple instances with the same id.
  *  \param sig          The signal to which the instances will be added.
- *  \param num          The number of instances to add. */
-void msig_reserve_instances(mapper_signal sig, int num);
+ *  \param num          The number of instances to add.
+ *  \param ids          Array of integer ids, one for each new instance,
+ *                      or 0 for automatically-generated instance ids.
+ *  \param user_data    Array of user context pointers, one for each new instance,
+ *                      or 0 if not needed.
+ *  \return             Number of instances added. */
+int msig_reserve_instances(mapper_signal sig, int num, int *ids, void **user_data);
 
 /*! Update the value of a specific signal instance.
  *  The signal will be routed according to external requests.
@@ -151,6 +165,11 @@ void msig_update_instance(mapper_signal sig, int instance_id,
 void msig_release_instance(mapper_signal sig, int instance_id,
                            mapper_timetag_t tt);
 
+/*! Remove a specific instance of a signal and free its memory.
+ *  \param sig         The signal to operate on.
+ *  \param instance_id The instance to suspend. */
+void msig_remove_instance(mapper_signal sig, int instance_id);
+
 /*! Get the local id of the oldest active instance.
  *  \param sig         The signal to operate on.
  *  \param instance_id A location to receive the instance id.
@@ -291,10 +310,11 @@ mapper_db_signal msig_properties(mapper_signal sig);
  *  metadata.  Value pointed to will be copied.
  *  \param sig       The signal to operate on.
  *  \param property  The name of the property to add.
- *  \param type      The property OSC type.
- *  \param value     The property OSC value. */
+ *  \param type      The property  datatype.
+ *  \param value     An array of property values.
+ *  \param length    The length of value array. */
 void msig_set_property(mapper_signal sig, const char *property,
-                       lo_type type, lo_arg *value);
+                       char type, void *value, int length);
 
 /*! Remove a property of a signal.
  *  \param sig       The signal to operate on.
@@ -441,14 +461,20 @@ mapper_signal mdev_get_input_by_index(mapper_device dev, int index);
  *         if not found. */
 mapper_signal mdev_get_output_by_index(mapper_device dev, int index);
 
+/*! Get a device's property structure.
+ *  \param dev  The device to operate on.
+ *  \return     A structure containing the device's properties. */
+mapper_db_device mdev_properties(mapper_device dev);
+
 /*! Set a property of a device.  Can be used to provide arbitrary
  *  metadata.  Value pointed to will be copied.
  *  \param dev       The device to operate on.
  *  \param property  The name of the property to add.
- *  \param type      The property OSC type.
- *  \param value     The property OSC value. */
+ *  \param type      The property  datatype.
+ *  \param value     An array of property values.
+ *  \param length    The length of value array. */
 void mdev_set_property(mapper_device dev, const char *property,
-                       lo_type type, lo_arg *value);
+                       char type, void *value, int length);
 
 /*! Remove a property of a device.
  *  \param dev       The device to operate on.
@@ -557,6 +583,7 @@ double mdev_get_clock_offset(mapper_device md);
 typedef enum {
     MDEV_LOCAL_ESTABLISHED,
     MDEV_LOCAL_DESTROYED,
+    MDEV_LOCAL_MODIFIED,
 } mapper_device_local_action_t;
 
 /*! Function to call when a local device link is established or
@@ -575,17 +602,17 @@ typedef void mapper_device_connection_handler(mapper_device dev,
                                               mapper_device_local_action_t action,
                                               void *user);
 
-/*! Add a function to be called when a local device link is
+/*! Set a function to be called when a local device link is
  *  established or destroyed, indicated by the action parameter to the
  *  provided function. */
-void mdev_add_link_callback(mapper_device dev,
+void mdev_set_link_callback(mapper_device dev,
                             mapper_device_link_handler *h, void *user);
 
-/*! Add a function to be called when a local device connection is
+/*! Set a function to be called when a local device connection is
  *  established or destroyed, indicated by the action parameter to the
  *  provided function. Important: if a link is destroyed, this
  *  function will not be called for all connections in the link. */
-void mdev_add_connection_callback(mapper_device dev,
+void mdev_set_connection_callback(mapper_device dev,
                                   mapper_device_connection_handler *h,
                                   void *user);
 
@@ -622,6 +649,9 @@ mapper_admin mapper_admin_new(const char *iface, const char *group, int port);
 /*! Free an admin created with mapper_admin_new(). */
 void mapper_admin_free(mapper_admin admin);
 
+/*! Get the version of libmapper */
+const char *mapper_admin_libversion(mapper_admin admin);
+
 /* @} */
 
 /**** Device database ****/
@@ -720,26 +750,36 @@ void mapper_db_device_done(mapper_db_device_t **s);
  *  \param index    Numerical index of a device property.
  *  \param property Address of a string pointer to receive the name of
  *                  indexed property.  May be zero.
- *  \param type     Address of a lo_type to receive the property value
- *                  type.
- *  \param value    Address of a lo_arg* to receive the property value.
+ *  \param type     A pointer to a location to receive the type of the
+ *                  property value. (Required.)
+ *  \param value    A pointer to a location to receive the address of the
+ *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_device_property_index(mapper_db_device dev, unsigned int index,
-                                    const char **property, lo_type *type,
-                                    const lo_arg **value);
+                                    const char **property, char *type,
+                                    const void **value, int *length);
 
 /*! Look up a device property by name.
  *  \param dev      The device to look at.
  *  \param property The name of the property to retrive.
  *  \param type     A pointer to a location to receive the type of the
  *                  property value. (Required.)
- *  \param value    A pointer a location to receive the address of the
+ *  \param value    A pointer to a location to receive the address of the
  *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_device_property_lookup(mapper_db_device dev,
-                                     const char *property,
-                                     lo_type *type,
-                                     const lo_arg **value);
+                                     const char *property, char *type,
+                                     const void **value, int *length);
+
+/*! Helper for printing typed mapper_prop values.
+ *  \param type     The value type.
+ *  \param length   The vector length of the value.
+ *  \param value    A pointer to the property value to print. */
+void mapper_prop_pp(char type, int length, const void *value);
 
 /* @} */
 
@@ -868,25 +908,30 @@ void mapper_db_signal_done(mapper_db_signal_t **s);
  *  \param index    Numerical index of a signal property.
  *  \param property Address of a string pointer to receive the name of
  *                  indexed property.  May be zero.
- *  \param type     Address of a lo_type to receive the property value type.
- *  \param value    Address of a lo_arg* to receive the property value.
+ *  \param type     A pointer to a location to receive the type of the
+ *                  property value. (Required.)
+ *  \param value    A pointer to a location to receive the address of the
+ *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_signal_property_index(mapper_db_signal sig, unsigned int index,
-                                    const char **property, lo_type *type,
-                                    const lo_arg **value);
+                                    const char **property, char *type,
+                                    const void **value, int *length);
 
 /*! Look up a signal property by name.
  *  \param sig      The signal to look at.
  *  \param property The name of the property to retrive.
- *  \param type     A pointer to a location to receive the type
- *                  of the property value. (Required.)
- *  \param value    A pointer a location to receive the address of the
+ *  \param type     A pointer to a location to receive the type of the
+ *                  property value. (Required.)
+ *  \param value    A pointer to a location to receive the address of the
  *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_signal_property_lookup(mapper_db_signal sig,
-                                     const char *property,
-                                     lo_type *type,
-                                     const lo_arg **value);
+                                     const char *property, char *type,
+                                     const void **value, int *length);
 
 /* @} */
 
@@ -1059,28 +1104,31 @@ void mapper_db_connection_done(mapper_db_connection_t **s);
  *  \param index    Numerical index of a connection property.
  *  \param property Address of a string pointer to receive the name of
  *                  indexed property.  May be zero.
- *  \param type     Address of a lo_type to receive the property value
- *                  type.
- *  \param value    Address of a lo_arg* to receive the property value.
+ *  \param type     A pointer to a location to receive the type of the
+ *                  property value. (Required.)
+ *  \param value    A pointer to a location to receive the address of the
+ *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_connection_property_index(mapper_db_connection con,
                                         unsigned int index,
-                                        const char **property,
-                                        lo_type *type,
-                                        const lo_arg **value);
+                                        const char **property, char *type,
+                                        const void **value, int *length);
 
 /*! Look up a connection property by name.
  *  \param con      The connection to look at.
  *  \param property The name of the property to retrive.
  *  \param type     A pointer to a location to receive the type of the
  *                  property value. (Required.)
- *  \param value    A pointer a location to receive the address of the
+ *  \param value    A pointer to a location to receive the address of the
  *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_connection_property_lookup(mapper_db_connection con,
-                                         const char *property,
-                                         lo_type *type,
-                                         const lo_arg **value);
+                                         const char *property, char *type,
+                                         const void **value, int *length);
 
 /* @} */
 
@@ -1194,26 +1242,30 @@ void mapper_db_link_done(mapper_db_link_t **s);
  *  \param index    Numerical index of a link property.
  *  \param property Address of a string pointer to receive the name of
  *                  indexed property.  May be zero.
- *  \param type     Address of a lo_type to receive the property value
- *                  type.
- *  \param value Address of a lo_arg* to receive the property value.
+ *  \param type     A pointer to a location to receive the type of the
+ *                  property value. (Required.)
+ *  \param value    A pointer to a location to receive the address of the
+ *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_link_property_index(mapper_db_link link, unsigned int index,
-                                  const char **property, lo_type *type,
-                                  const lo_arg **value);
+                                  const char **property, char *type,
+                                  const void **value, int *length);
 
 /*! Look up a link property by name.
  *  \param link     The link to look at.
  *  \param property The name of the property to retrive.
  *  \param type     A pointer to a location to receive the type of the
  *                  property value. (Required.)
- *  \param value    A pointer a location to receive the address of the
+ *  \param value    A pointer to a location to receive the address of the
  *                  property's value. (Required.)
+ *  \param length   A pointer to a location to receive the vector length of
+ *                  the property value. (Required.)
  *  \return Zero if found, otherwise non-zero. */
 int mapper_db_link_property_lookup(mapper_db_link link,
-                                   const char *property,
-                                   lo_type *type,
-                                   const lo_arg **value);
+                                   const char *property, char *type,
+                                   const void **value, int *length);
 
 /* @} */
 
@@ -1229,16 +1281,23 @@ int mapper_db_link_property_lookup(mapper_db_link link,
        general, the monitor interface is useful for building GUI
        applications to control the network. */
 
+typedef enum {
+    AUTOREQ_SIGNALS     = 0x01,
+    AUTOREQ_LINKS       = 0x02,
+    AUTOREQ_CONNECTIONS = 0x04,
+    AUTOREQ_ALL         = 0xFF
+} mapper_monitor_autoreq_mode_t;
+
 /*! Create a network monitor.
  *  \param admin    A previously allocated admin to use.  If 0, an
  *                  admin will be allocated for use with this monitor.
- *  \param enable_autorequest Sets whether the monitor should
- *                            automatically request information on signals,
- *                            links, and connections when it encounters a
- *                            previously-enseen device.
+ *  \param flags    Sets whether the monitor should automatically
+ *                  request information about signals, links, and
+ *                  connections when it encounters a previously-unseen
+ *                  device.
  *  \return The new monitor. */
 mapper_monitor mapper_monitor_new(mapper_admin admin,
-                                  int enable_autorequest);
+                                  mapper_monitor_autoreq_mode_t flags);
 
 /*! Free a network monitor. */
 void mapper_monitor_free(mapper_monitor mon);
@@ -1345,10 +1404,11 @@ int mapper_monitor_batch_request_connections_by_src_device_name(
 int mapper_monitor_batch_request_connections_by_dest_device_name(
     mapper_monitor mon, const char* name, int batch_size);
 
-/*! When auto-request is enabled (enable=1), the monitor automatically
- *  makes requests for information on signals, links, and connections
- *  when it encounters a previously-unseen device. */
-void mapper_monitor_autorequest(mapper_monitor mon, int enable);
+/*! Sets whether the monitor should automatically make requests for
+ *  information on signals, links, and connections when it encounters
+ *  a previously-unseen device.*/
+void mapper_monitor_autorequest(mapper_monitor mon,
+                                mapper_monitor_autoreq_mode_t flags);
 
 /*! Interface to add a link between two devices.
  *  \param mon            The monitor to use for sending the message.
@@ -1376,6 +1436,8 @@ void mapper_monitor_unlink(mapper_monitor mon,
 
 /*! Interface to modify a connection between two signals.
  *  \param mon            The monitor to use for sending the message.
+ *  \param source_signal  Source signal name.
+ *  \param dest_signal    Destination signal name.
  *  \param properties     An optional data structure specifying the
  *                        requested properties of this connection.
  *  \param property_flags Bit flags indicating which properties in the
@@ -1383,6 +1445,8 @@ void mapper_monitor_unlink(mapper_monitor mon,
  *                        applied to the new connection. See the flags
  *                        prefixed by CONNECTION_ in mapper_db.h. */
 void mapper_monitor_connection_modify(mapper_monitor mon,
+                                      const char *source_signal,
+                                      const char *dest_signal,
                                       mapper_db_connection_t *properties,
                                       unsigned int property_flags);
 
@@ -1419,16 +1483,22 @@ void mapper_monitor_disconnect(mapper_monitor mon,
  @{ libmapper primarily uses NTP timetags for communication and
     synchronization. */
 
-/*! Initialize a timetag to the current apping network time.
- *  \param dev      The device whose time we are asking for.
- *  \param timetag  A previously allocated timetag to initialize. */
-void mdev_timetag_now(mapper_device dev,
-                      mapper_timetag_t *tt);
+/*! Initialize a timetag to the current mapping network time.
+ *  \param dev  The device whose time we are asking for.
+ *  \param tt   A previously allocated timetag to initialize. */
+void mdev_now(mapper_device dev,
+              mapper_timetag_t *tt);
+
+/*! Initialize a timetag to the current mapping network time.
+ *  \param dev  The device whose time we are asking for.
+ *  \param tt   A previously allocated timetag to initialize. */
+void mapper_monitor_now(mapper_monitor mon,
+                        mapper_timetag_t *tt);
 
 /*! Return the difference in seconds between two mapper_timetags.
  *  \param a    The minuend.
  *  \param b    The subtrahend.
- *  \return     The difference a-b in seconds between the two timetags. */
+ *  \return     The difference a-b in seconds. */
 double mapper_timetag_difference(mapper_timetag_t a, mapper_timetag_t b);
 
 /*! Add seconds to a given timetag.
@@ -1439,10 +1509,10 @@ void mapper_timetag_add_seconds(mapper_timetag_t *tt, double addend);
 /*! Return value of mapper_timetag as a double-precision floating point value. */
 double mapper_timetag_get_double(mapper_timetag_t tt);
 
-/*! Set value of a mapper_timetag from a double-precision floating point value. */
+/*! Set value of a mapper_timetag from an integer value. */
 void mapper_timetag_set_int(mapper_timetag_t *tt, int value);
 
-/*! Set value of a mapper_timetag from a double-precision floating point value. */
+/*! Set value of a mapper_timetag from a floating point value. */
 void mapper_timetag_set_float(mapper_timetag_t *tt, float value);
 
 /*! Set value of a mapper_timetag from a double-precision floating point value. */
diff --git a/include/mapper/mapper_db.h b/include/mapper/mapper_db.h
index 6677956..32becb4 100644
--- a/include/mapper/mapper_db.h
+++ b/include/mapper/mapper_db.h
@@ -23,8 +23,13 @@ typedef lo_timetag mapper_timetag_t;
 /*! A record that keeps information about a device on the network.
  *  @ingroup devicedb */
 typedef struct _mapper_db_device {
-    char *name;             //!< Device name.
-    uint32_t name_hash;     //!< CRC-32 hash of device name.
+    char *identifier;       /*!< The identifier (prefix) for
+                             *   this device. */
+    char *name;             /*!< The full name for this
+                             *   device, or zero. */
+    int ordinal;
+    uint32_t name_hash;     /*!< CRC-32 hash of full device name
+                             *   in the form <name>.<ordinal> */
     char *host;             //!< Device network host name.
     int port;               //!< Device network port.
     int n_inputs;           //!< Number of associated input signals.
@@ -35,6 +40,7 @@ typedef struct _mapper_db_device {
     int n_connections_out;  //!< Number of associated outgoing connections.
     int version;            //!< Reported device state version.
     void* user_data;        //!< User modifiable data.
+    mapper_timetag_t timetag;
 
     mapper_timetag_t synced; //!< Timestamp of last sync.
 
@@ -64,24 +70,17 @@ typedef struct _mapper_db_device {
  * properties via the mapper_monitor_connect() or
  * mapper_monitor_connection_modify() functions. Should be combined with the
  * above range bitflags. */
-#define CONNECTION_BOUND_MIN     0x0010
-#define CONNECTION_BOUND_MAX     0x0020
-#define CONNECTION_EXPRESSION    0x0040
-#define CONNECTION_MODE          0x0080
-#define CONNECTION_MUTED         0x0100
-#define CONNECTION_ALL           0x01FF
-
-/*! A structure to keep range information, with a bitfield indicating
- *  which parts of the range are known.
- *  @ingroup connectiondb */
-typedef struct _mapper_connection_range {
-    float src_min;              //!< Source minimum.
-    float src_max;              //!< Source maximum.
-    float dest_min;             //!< Destination minimum.
-    float dest_max;             //!< Destination maximum.
-    int known;                  /*!< Bitfield identifying which range
-                                 *   extremities are known. */
-} mapper_connection_range_t;
+#define CONNECTION_BOUND_MIN        0x0010
+#define CONNECTION_BOUND_MAX        0x0020
+#define CONNECTION_EXPRESSION       0x0040
+#define CONNECTION_MODE             0x0080
+#define CONNECTION_MUTED            0x0100
+#define CONNECTION_SEND_AS_INSTANCE 0x0200
+#define CONNECTION_SRC_TYPE         0x0400
+#define CONNECTION_DEST_TYPE        0x0800
+#define CONNECTION_SRC_LENGTH       0x1000
+#define CONNECTION_DEST_LENGTH      0x2000
+#define CONNECTION_ALL              0xFFFF
 
 /*! Describes what happens when the range boundaries are
  *  exceeded.
@@ -141,7 +140,13 @@ typedef struct _mapper_db_connection {
 
     int send_as_instance;       //!< 1 to send as instance, 0 otherwise.
 
-    mapper_connection_range_t range;  //!< Range information.
+    void *src_min;              //!< Array of source minima.
+    void *src_max;              //!< Array of source maxima.
+    void *dest_min;             //!< Array of destination minima.
+    void *dest_max;             //!< Array of destination maxima.
+    int range_known;            /*!< Bitfield identifying which range
+                                 *   extremities are known. */
+
     char *expression;
 
     mapper_mode_type mode;      /*!< Bypass, linear, calibrate, or
@@ -153,17 +158,6 @@ typedef struct _mapper_db_connection {
     struct _mapper_string_table *extra;
 } mapper_db_connection_t, *mapper_db_connection;
 
-/*! A signal value may be one of several different types, so we use a
- *  union to represent this.  The appropriate selection from this
- *  union is determined by the mapper_signal::type variable.
- *  @ingroup signaldb */
-
-typedef union _mapper_signal_value {
-    float f;
-    double d;
-    int i32;
-} mapper_signal_value_t, mval;
-
 /*! A structure that stores the current and historical values and timetags
  *  of a signal. The size of the history arrays is determined by the needs
  *  of connection expressions.
@@ -188,9 +182,7 @@ typedef struct _mapper_signal_history
     void *value;
 
     /*! Timetag for each sample of stored history. */
-    // TODO: switch to mapper_timetag_t;
-    //mapper_timetag_t *timetag;
-    lo_timetag *timetag;
+    mapper_timetag_t *timetag;
 
     struct _mapper_signal_history *next;
 } mapper_signal_history_t;
@@ -215,24 +207,21 @@ typedef struct _mapper_db_signal
     /*! Number of instances. */
     int num_instances;
 
-    /*! Size of the history vector. */
-    int history_size;
-
     /*! The name of this signal, an OSC path.  Must start with '/'. */
-    const char *name;
+    char *name;
 
-    /*! The device name of which this signal is a member. An OSC path.
+    /*! The name of the device owning this signal. An OSC path. 
      *  Must start with '/'. */
-    const char *device_name;
+    char *device_name;
 
     /*! The unit of this signal, or NULL for N/A. */
-    const char *unit;
+    char *unit;
 
     /*! The minimum of this signal, or NULL for no minimum. */
-    mapper_signal_value_t *minimum;
+    void *minimum;
 
     /*! The maximum of this signal, or NULL for no maximum. */
-    mapper_signal_value_t *maximum;
+    void *maximum;
 
     /*! The rate of this signal, or 0 for non-periodic signals. */
     float rate;
@@ -251,8 +240,10 @@ typedef struct _mapper_db_link {
     uint32_t src_name_hash;         //!< CRC-32 hash of src device name.
     char *dest_name;                //!< Destination device name (OSC path).
     uint32_t dest_name_hash;        //!< CRC-32 hash of dest device name.
-    lo_address src_addr;            //!< Address of the source device.
-    lo_address dest_addr;           //!< Address of the destination device.
+    char *src_host;                 //!< IP Address of the source device.
+    int src_port;                   //!< Network port of source device.
+    char *dest_host;                //!< IP Address of the destination device.
+    int dest_port;                  //!< Network port of destination device.
     int num_scopes;                 //!< The number of instance group scopes.
     char **scope_names;             //!< Array of instance group scopes.
     uint32_t *scope_hashes;         //!< Array of CRC-32 scope hashes.
diff --git a/install-sh b/install-sh
deleted file mode 100755
index a9244eb..0000000
--- a/install-sh
+++ /dev/null
@@ -1,527 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2011-01-19.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
-	# Protect names problematic for `test' and other utilities.
-	case $dst_arg in
-	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
-	esac
-	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
-    # Protect names problematic for `test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  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
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 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 problematic for `test' and other utilities.
-  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
-
-    # 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 X"$d" = X && 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/jni/Makefile.am b/jni/Makefile.am
index 82447d0..4f4884b 100644
--- a/jni/Makefile.am
+++ b/jni/Makefile.am
@@ -19,9 +19,12 @@ JCLASSESINTERNAL = Mapper/Device$$Signal.class Mapper/Device$$1.class	\
 
 JJAVA = $(JCLASSES:%.class=%.java)
 
-BUILT_SOURCES = $(JHEADERS) test.class libmapper- at MAJOR_VERSION@.jar
+BUILT_SOURCES = $(JHEADERS) test.class testquery.class testreverse.class \
+    libmapper- at MAJOR_VERSION@.jar
 MOSTLYCLEANFILES = $(BUILT_SOURCES) $(JCLASSES) $(subst $$,\$$,$(JCLASSESINTERNAL)) \
-	$(subst $$,\$$,test$$1.class test$$2.class test$$3.class)
+	$(subst $$,\$$,test$$1.class test$$2.class test$$3.class testquery$$1.class \
+    testquery$$2.class testquery$$3.class testreverse$$1.class testreverse$$2.class \
+    testreverse$$3.class)
 
 Mapper_%.h: Mapper/%.class
 	$(JAVAH) $(subst /,.,$(<:%.class=%))
@@ -37,6 +40,12 @@ Mapper/%.class: Mapper/%.java
 test.class: test.java $(JCLASSES)
 	$(JAVAC) $(JFLAGS) -sourcepath @top_srcdir@/jni -d . $<
 
+testquery.class: testquery.java $(JCLASSES)
+	$(JAVAC) $(JFLAGS) -sourcepath @top_srcdir@/jni -d . $<
+
+testreverse.class: testreverse.java $(JCLASSES)
+	$(JAVAC) $(JFLAGS) -sourcepath @top_srcdir@/jni -d . $<
+
 libmapper- at MAJOR_VERSION@.jar: $(JCLASSES) $(JCLASSESINTERNAL)
 	$(JAR) cvf $@ $(subst $$,\$$,$^)
 	if mkdir -v TestInstances/code; then \
@@ -45,4 +54,4 @@ libmapper- at MAJOR_VERSION@.jar: $(JCLASSES) $(JCLASSESINTERNAL)
 	  ln -v -s ../../$@; \
 	fi # For processing test sketch
 
-EXTRA_DIST = $(JJAVA) test.java $(JHEADERS)
+EXTRA_DIST = $(JJAVA) test.java testquery.java testreverse.java $(JHEADERS)
diff --git a/jni/Makefile.in b/jni/Makefile.in
deleted file mode 100644
index abed14d..0000000
--- a/jni/Makefile.in
+++ /dev/null
@@ -1,670 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = jni
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/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__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libmapperjni_ at MAJOR_VERSION@_la_DEPENDENCIES =  \
-	$(top_builddir)/src/libmapper- at MAJOR_VERSION@.la \
-	$(am__DEPENDENCIES_1)
-am_libmapperjni_ at MAJOR_VERSION@_la_OBJECTS =  \
-	libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo
-libmapperjni_ at MAJOR_VERSION@_la_OBJECTS =  \
-	$(am_libmapperjni_ at MAJOR_VERSION@_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libmapperjni_ at MAJOR_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(libmapperjni_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) \
-	$(libmapperjni_ at MAJOR_VERSION@_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-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_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-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_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libmapperjni_ at MAJOR_VERSION@_la_SOURCES)
-DIST_SOURCES = $(libmapperjni_ at MAJOR_VERSION@_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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 = libmapperjni- at MAJOR_VERSION@.la
-libmapperjni_ at MAJOR_VERSION@_la_CFLAGS = -Wall -I$(top_srcdir)/include $(liblo_CFLAGS) -I at JNIPATH@
-libmapperjni_ at MAJOR_VERSION@_la_SOURCES = mapperjni.c
-libmapperjni_ at MAJOR_VERSION@_la_LDFLAGS = -export-dynamic -version-info @SO_VERSION@
-libmapperjni_ at MAJOR_VERSION@_la_LIBADD = \
-	$(top_builddir)/src/libmapper- at MAJOR_VERSION@.la $(liblo_LIBS)
-
-JHEADERS = Mapper_Device.h Mapper_Device_Signal.h Mapper_Db_Signal.h
-JFLAGS = -source 1.5 -target 1.5
-JCLASSES = Mapper/Db/Signal.class Mapper/InputListener.class	\
-           Mapper/PropertyValue.class Mapper/Device.class		\
-           Mapper/NativeLib.class Mapper/TimeTag.class			\
-           Mapper/InstanceEventListener.class
-
-JCLASSESINTERNAL = Mapper/Device$$Signal.class Mapper/Device$$1.class	\
-                   Mapper/PropertyValue$$PropertyException.class
-
-JJAVA = $(JCLASSES:%.class=%.java)
-BUILT_SOURCES = $(JHEADERS) test.class libmapper- at MAJOR_VERSION@.jar
-MOSTLYCLEANFILES = $(BUILT_SOURCES) $(JCLASSES) $(subst $$,\$$,$(JCLASSESINTERNAL)) \
-	$(subst $$,\$$,test$$1.class test$$2.class test$$3.class)
-
-EXTRA_DIST = $(JJAVA) test.java $(JHEADERS)
-all: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) 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) --foreign jni/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign jni/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-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@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 " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  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
-libmapperjni- at MAJOR_VERSION@.la: $(libmapperjni_ at MAJOR_VERSION@_la_OBJECTS) $(libmapperjni_ at MAJOR_VERSION@_la_DEPENDENCIES) $(EXTRA_libmapperjni_ at MAJOR_VERSION@_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libmapperjni_ at MAJOR_VERSION@_la_LINK) -rpath $(libdir) $(libmapperjni_ at MAJOR_VERSION@_la_OBJECTS) $(libmapperjni_ at MAJOR_VERSION@_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapperjni_ at MAJOR_VERSION@_la-mapperjni.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo: mapperjni.c
- at 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) $(libmapperjni_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo -MD -MP -MF $(DEPDIR)/libmapperjni_ at MAJOR_VERSION@_la-mapperjni.Tpo -c -o libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo `test -f 'mapperjni.c' || echo '$(srcdir)/'`mapperjni.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapperjni_ at MAJOR_VERSION@_la-mapperjni.Tpo $(DEPDIR)/libmapperjni_ at MAJOR_VERSION@_la-mapperjni.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mapperjni.c' object='libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapperjni_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapperjni_ at MAJOR_VERSION@_la-mapperjni.lo `test -f 'mapperjni.c' || echo '$(srcdir)/'`mapperjni.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: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) 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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-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."
-	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-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-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
-
-.MAKE: all check install 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-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
-
-
-Mapper_%.h: Mapper/%.class
-	$(JAVAH) $(subst /,.,$(<:%.class=%))
-	if [ -f $@ ]; then touch $@; fi
-
-Mapper_Db_%.h: Mapper/Db/%.class
-	$(JAVAH) $(subst /,.,$(<:%.class=%))
-	if [ -f $@ ]; then touch $@; fi
-
-Mapper/%.class: Mapper/%.java
-	$(JAVAC) $(JFLAGS) -sourcepath @top_srcdir@/jni -d . $<
-
-test.class: test.java $(JCLASSES)
-	$(JAVAC) $(JFLAGS) -sourcepath @top_srcdir@/jni -d . $<
-
-libmapper- at MAJOR_VERSION@.jar: $(JCLASSES) $(JCLASSESINTERNAL)
-	$(JAR) cvf $@ $(subst $$,\$$,$^)
-	if mkdir -v TestInstances/code; then \
-	  cd TestInstances/code/; \
-	  ln -v -s ../../.libs/*.so .; \
-	  ln -v -s ../../$@; \
-	fi # For processing test sketch
-
-# 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/jni/Mapper/Db/Signal.java b/jni/Mapper/Db/Signal.java
index 2a1159c..de753ff 100644
--- a/jni/Mapper/Db/Signal.java
+++ b/jni/Mapper/Db/Signal.java
@@ -58,13 +58,19 @@ public class Signal
     private native void msig_db_signal_set_unit(long p, String unit);
     private native String msig_db_signal_get_unit(long p);
 
-    Double _minimum;
-    public Double minimum() { return _minimum; }
-    private native Double msig_db_signal_get_minimum(long p);
+    PropertyValue _minimum;
+    public PropertyValue minimum() {
+        _minimum = msig_db_signal_get_minimum(_sigprops);
+        return _minimum;
+    }
+    private native PropertyValue msig_db_signal_get_minimum(long p);
 
-    Double _maximum;
-    public Double maximum() { return _maximum; }
-    private native Double msig_db_signal_get_maximum(long p);
+    PropertyValue _maximum;
+    public PropertyValue maximum() {
+        _maximum = msig_db_signal_get_maximum(_sigprops);
+        return _maximum;
+    }
+    private native PropertyValue msig_db_signal_get_maximum(long p);
 
     double _rate;
     public double rate() { return _rate; }
diff --git a/jni/Mapper/Device.java b/jni/Mapper/Device.java
index 3b9410d..8eef315 100644
--- a/jni/Mapper/Device.java
+++ b/jni/Mapper/Device.java
@@ -7,6 +7,9 @@ import Mapper.Db.*;
 
 public class Device
 {
+    public Device(String name) {
+        _device = mdev_new(name, 0);
+    }
     public Device(String name, int port) {
         _device = mdev_new(name, port);
     }
@@ -47,13 +50,13 @@ public class Device
             checkDevice();
             return msig_is_output(_signal);
         }
-        public void set_minimum(Double minimum) {
+        public void set_minimum(PropertyValue p) {
             checkDevice();
-            msig_set_minimum(_signal, minimum);
+            msig_set_property(_signal, new String("min"), p);
         }
-        public void set_maximum(Double maximum) {
+        public void set_maximum(PropertyValue p) {
             checkDevice();
-            msig_set_maximum(_signal, maximum);
+            msig_set_property(_signal, new String("max"), p);
         }
         public void set_rate(double rate) {
             checkDevice();
@@ -69,28 +72,15 @@ public class Device
             checkDevice();
             msig_remove_property(_signal, property);
         }
-        public int query_remotes(TimeTag tt)
-        {
-            checkDevice();
-            return msig_query_remotes(_signal, tt);
-        }
-        public int query_remotes()
-        {
-            checkDevice();
-            return msig_query_remotes(_signal, null);
-        }
 
         private native String msig_full_name(long sig);
         private native String msig_name(long sig);
         private native boolean msig_is_output(long sig);
-        private native void msig_set_minimum(long sig, Double minimum);
-        private native void msig_set_maximum(long sig, Double maximum);
         private native void msig_set_rate(long sig, double rate);
         public native Mapper.Db.Signal properties();
         private native void msig_set_property(long sig, String property,
                                               PropertyValue p);
         private native void msig_remove_property(long sig, String property);
-        private native int msig_query_remotes(long sig, TimeTag tt);
 
         public native void set_instance_event_callback(
             InstanceEventListener handler, int flags);
@@ -100,7 +90,10 @@ public class Device
                                                  InputListener cb);
         public native InputListener get_instance_callback(int instance_id);
 
-        public native void reserve_instances(int num);
+        public native int reserve_instances(int num);
+        public native int reserve_instances(int[] ids);
+        public native int reserve_instances(int num, InputListener cb);
+        public native int reserve_instances(int[] ids, InputListener cb);
         public native void release_instance(int instance_id, TimeTag tt);
         public void release_instance(int instance_id)
             { release_instance(instance_id, null); }
@@ -183,6 +176,10 @@ public class Device
         public boolean instance_value(int instance_id, double[] value)
             { return instance_value(instance_id, value, null); }
 
+        public native int query_remotes(TimeTag tt);
+        public int query_remotes()
+            { return query_remotes(null); };
+
         public int index()
         {
             checkDevice();
@@ -377,14 +374,12 @@ public class Device
     private native void mdev_start_queue(long _d, TimeTag tt);
     private native void mdev_send_queue(long _d, TimeTag tt);
 
-    public native Signal add_input(String name, int length,
-                                   char type, String unit,
-                                   Double minimum, Double maximum,
+    public native Signal add_input(String name, int length, char type, String unit,
+                                   PropertyValue minimum, PropertyValue maximum,
                                    InputListener handler);
 
-    public native Signal add_output(String name, int length,
-                                    char type, String unit,
-                                    Double minimum, Double maximum);
+    public native Signal add_output(String name, int length, char type, String unit,
+                                    PropertyValue minimum, PropertyValue maximum);
 
     private long _device;
     public boolean valid() {
diff --git a/jni/Mapper/InputListener.java b/jni/Mapper/InputListener.java
index d53eca3..5cdd5ee 100644
--- a/jni/Mapper/InputListener.java
+++ b/jni/Mapper/InputListener.java
@@ -12,4 +12,9 @@ public class InputListener {
                         int instance_id,
                         int[] v,
                         TimeTag tt) {};
+    public void onInput(Mapper.Device.Signal sig,
+                        Mapper.Db.Signal props,
+                        int instance_id,
+                        double[] v,
+                        TimeTag tt) {};
 }
diff --git a/jni/Mapper/NativeLib.java b/jni/Mapper/NativeLib.java
deleted file mode 100644
index ba26735..0000000
--- a/jni/Mapper/NativeLib.java
+++ /dev/null
@@ -1,6 +0,0 @@
-
-package Mapper;
-
-public class NativeLib {
-    public static final String name = "mapperjni-0";
-}
diff --git a/jni/Mapper/PropertyValue.java b/jni/Mapper/PropertyValue.java
index 39f3809..98d759d 100644
--- a/jni/Mapper/PropertyValue.java
+++ b/jni/Mapper/PropertyValue.java
@@ -1,19 +1,28 @@
 
 package Mapper;
+import java.util.Arrays;
 
 /* Contains a value representable by supported types, which correspond
  * with OSC types. */
 public class PropertyValue
 {
-    public PropertyValue()                     { type = 0;           }
-    public PropertyValue(int i)                { setValue('i', i);   }
-    public PropertyValue(float f)              { setValue('f', f);   }
-    public PropertyValue(double d)             { setValue('d', d);   }
-    public PropertyValue(String s)             { setValue('s', s);   }
-    public PropertyValue(char _type, int i)    { setValue(_type, i); }
-    public PropertyValue(char _type, float f)  { setValue(_type, f); }
-    public PropertyValue(char _type, double d) { setValue(_type, d); }
-    public PropertyValue(char _type, String s) { setValue(_type, s); }
+    public PropertyValue()                       { length=0; type = 0; }
+    public PropertyValue(int i)                  { setValue('i', i);   }
+    public PropertyValue(float f)                { setValue('f', f);   }
+    public PropertyValue(double d)               { setValue('d', d);   }
+    public PropertyValue(String s)               { setValue('s', s);   }
+    public PropertyValue(int[] i)                { setValue('i', i);   }
+    public PropertyValue(float[] f)              { setValue('f', f);   }
+    public PropertyValue(double[] d)             { setValue('d', d);   }
+    public PropertyValue(String[] s)             { setValue('s', s);   }
+    public PropertyValue(char _type, int i)      { setValue(_type, i); }
+    public PropertyValue(char _type, float f)    { setValue(_type, f); }
+    public PropertyValue(char _type, double d)   { setValue(_type, d); }
+    public PropertyValue(char _type, String s)   { setValue(_type, s); }
+    public PropertyValue(char _type, int[] i)    { setValue(_type, i); }
+    public PropertyValue(char _type, float[] f)  { setValue(_type, f); }
+    public PropertyValue(char _type, double[] d) { setValue(_type, d); }
+    public PropertyValue(char _type, String[] s) { setValue(_type, s); }
 
     // TODO handle entire set of OSC types
     public class PropertyException extends RuntimeException {
@@ -27,133 +36,339 @@ public class PropertyValue
 
     public Object value() {
         switch (type) {
-        case 'i': return new Integer(_i);
-        case 'f': return new Float(_f);
-        case 'd': return new Double(_d);
-        case 's': return _s;
-        case 'S': return _s;
+            case 'i': {
+                if (length == 1)
+                    return new Integer(_i[0]);
+                else if (length > 1) {
+                    int[] v = _i.clone();
+                    return v;
+                }
+            }
+            case 'f': {
+                if (length == 1)
+                    return new Float(_f[0]);
+                else if (length > 1) {
+                    float[] v = _f.clone();
+                    return v;
+                }
+            }
+            case 'd': {
+                if (length == 1)
+                    return new Double(_d[0]);
+                else if (length > 1) {
+                    double[] v = _d.clone();
+                    return v;
+                }
+            }
+            case 's': {
+                if (length == 1)
+                    return _s[0];
+                else if (length > 1) {
+                    String[] v = _s.clone();
+                    return v;
+                }
+            }
+            case 'S': {
+                if (length == 1)
+                    return _s[0];
+                else if (length > 1) {
+                    String[] v = _s.clone();
+                    return v;
+                }
+            }
         }
         return null;
     }
 
     public int intValue() {
         if (type == 'i')
-            return _i;
+            return _i[0];
         throw new PropertyException();
     }
 
     public float floatValue() {
         if (type == 'f')
-            return _f;
+            return _f[0];
         else if (type == 'i')
-            return _i;
+            return _i[0];
         throw new PropertyException();
     }
 
     public double doubleValue() {
         if (type == 'd')
-            return _d;
+            return _d[0];
         else if (type == 'f')
-            return _f;
+            return _f[0];
         else if (type == 'i')
-            return _i;
+            return _i[0];
         throw new PropertyException();
     }
 
     public String stringValue() {
         if (type == 's' || type == 'S')
-            return _s;
+            return _s[0];
         throw new PropertyException();
     }
 
     public void setValue(char _type, int i) {
         switch (_type) {
-        case 'i':
-            _i = i; break;
-        case 'f':
-            _f = i; break;
-        case 'd':
-            _d = i; break;
-        case 's':
-        case 'S':
-            _s = String.valueOf(i);
-            break;
-        default:
-            throw new PropertyException("Cannot cast int to requested type.");
+            case 'i':
+                _i = new int[1];
+                _i[0] = i;
+                break;
+            case 'f':
+                _f = new float[1];
+                _f[0] = i;
+                break;
+            case 'd':
+                _d = new double[1];
+                _d[0] = i;
+                break;
+            case 's':
+                _s = new String[1];
+                _s[0] = String.valueOf(i);
+                break;
+            case 'S':
+                _s = new String[1];
+                _s[0] = String.valueOf(i);
+                break;
+            default:
+                throw new PropertyException("Cannot cast int to requested type.");
         }
         type = _type;
+        length = 1;
     }
 
     public void setValue(char _type, float f) {
         switch (_type) {
-        case 'i':
-            _i = (int)f; break;
-        case 'f':
-            _f = f; break;
-        case 'd':
-            _d = f; break;
-        case 's':
-        case 'S':
-            _s = String.valueOf(f);
-            break;
-        default:
-            throw new PropertyException("Cannot cast float to requested type.");
+            case 'i':
+                _i = new int[1];
+                _i[1] = (int)f;
+                break;
+            case 'f':
+                _f = new float[1];
+                _f[0] = f;
+                break;
+            case 'd':
+                _d = new double[1];
+                _d[0] = f;
+                break;
+            case 's':
+                _s = new String[1];
+                _s[0] = String.valueOf(f);
+                break;
+            case 'S':
+                _s = new String[1];
+                _s[0] = String.valueOf(f);
+                break;
+            default:
+                throw new PropertyException("Cannot cast float to requested type.");
         }
         type = _type;
+        length = 1;
     }
 
     public void setValue(char _type, double d) {
         switch (_type) {
-        case 'i':
-            _i = (int)d; break;
-        case 'f':
-            _f = (float)d; break;
-        case 'd':
-            _d = d; break;
-        case 's':
-        case 'S':
-            _s = String.valueOf(d);
-            break;
-        default:
-            throw new PropertyException("Cannot cast double to requested type.");
+            case 'i':
+                _i = new int[1];
+                _i[0] = (int)d;
+                break;
+            case 'f':
+                _f = new float[1];
+                _f[0] = (float)d;
+                break;
+            case 'd':
+                _d = new double[1];
+                _d[0] = d;
+                break;
+            case 's':
+                _s = new String[1];
+                _s[0] = String.valueOf(d);
+                break;
+            case 'S':
+                _s = new String[1];
+                _s[0] = String.valueOf(d);
+                break;
+            default:
+                throw new PropertyException("Cannot cast double to requested type.");
         }
         type = _type;
+        length = 1;
     }
 
     public void setValue(char _type, String s) {
         switch (_type) {
-        case 'i':
-            _i = Integer.parseInt(s); break;
-        case 'f':
-            _f = Float.parseFloat(s); break;
-        case 'd':
-            _d = Double.parseDouble(s); break;
-        case 's':
-        case 'S':
-            _s = s; break;
-        default:
-            throw new PropertyException("Cannot cast String to requested type.");
+            case 'i':
+                _i = new int[1];
+                _i[0] = Integer.parseInt(s);
+                break;
+            case 'f':
+                _f = new float[1];
+                _f[0] = Float.parseFloat(s);
+                break;
+            case 'd':
+                _d = new double[1];
+                _d[0] = Double.parseDouble(s);
+                break;
+            case 's':
+                _s = new String[1];
+                _s[0] = s;
+                break;
+            case 'S':
+                _s = new String[1];
+                _s[0] = s;
+                break;
+            default:
+                throw new PropertyException("Cannot cast String to requested type.");
         }
         type = _type;
+        length = 1;
+    }
+
+    public void setValue(char _type, int[] i) {
+        switch (_type) {
+            case 'i':
+                _i = i.clone();
+                break;
+            case 'f':
+                _f = new float[i.length];
+                for (int n = 0; n < i.length; n++)
+                    _f[n] = i[n];
+                break;
+            case 'd':
+                _d = new double[i.length];
+                for (int n = 0; n < i.length; n++)
+                    _d[n] = i[n];
+                break;
+            case 's':
+                _s = new String[i.length];
+                for (int n = 0; n < i.length; n++)
+                    _s[n] = String.valueOf(i[n]);
+                break;
+            case 'S':
+                _s = new String[i.length];
+                for (int n = 0; n < i.length; n++)
+                    _s[n] = String.valueOf(i[n]);
+                break;
+            default:
+                throw new PropertyException("Cannot cast int to requested type.");
+        }
+        type = _type;
+        length = i.length;
+    }
+    
+    public void setValue(char _type, float[] f) {
+        switch (_type) {
+            case 'i':
+                _i = new int[f.length];
+                for (int n = 0; n < f.length; n++)
+                    _i[n] = (int)f[n];
+                break;
+            case 'f':
+                _f = f.clone();
+                break;
+            case 'd':
+                _d = new double[f.length];
+                for (int n = 0; n < f.length; n++)
+                    _d[n] = f[n];
+                break;
+            case 's':
+                _s = new String[f.length];
+                for (int n = 0; n < f.length; n++)
+                    _s[n] = String.valueOf(f[n]);
+                break;
+            case 'S':
+                _s = new String[f.length];
+                for (int n = 0; n < f.length; n++)
+                    _s[n] = String.valueOf(f[n]);
+                break;
+            default:
+                throw new PropertyException("Cannot cast float to requested type.");
+        }
+        type = _type;
+        length = f.length;
+    }
+    
+    public void setValue(char _type, double[] d) {
+        switch (_type) {
+            case 'i':
+                _i = new int[d.length];
+                for (int n = 0; n < d.length; n++)
+                    _i[n] = (int)d[n];
+                break;
+            case 'f':
+                _f = new float[d.length];
+                for (int n = 0; n < d.length; n++)
+                    _f[n] = (float)d[n];
+                break;
+            case 'd':
+                _d = d.clone();
+                break;
+            case 's':
+                _s = new String[d.length];
+                for (int n = 0; n < d.length; n++)
+                    _s[n] = String.valueOf(d[n]);
+                break;
+            case 'S':
+                _s = new String[d.length];
+                for (int n = 0; n < d.length; n++)
+                    _s[n] = String.valueOf(d[n]);
+                break;
+            default:
+                throw new PropertyException("Cannot cast double to requested type.");
+        }
+        type = _type;
+        length = d.length;
+    }
+    
+    public void setValue(char _type, String[] s) {
+        switch (_type) {
+            case 'i':
+                _i = new int[s.length];
+                for (int n = 0; n < s.length; n++)
+                    _i[n] = Integer.parseInt(s[n]);
+                break;
+            case 'f':
+                _f = new float[s.length];
+                for (int n = 0; n < s.length; n++)
+                    _f[n] = Float.parseFloat(s[n]);
+                break;
+            case 'd':
+                _d = new double[s.length];
+                for (int n = 0; n < s.length; n++)
+                    _d[n] = Double.parseDouble(s[n]);
+                break;
+            case 's':
+                _s = s.clone();
+            case 'S':
+                _s = s.clone();
+                break;
+            default:
+                throw new PropertyException("Cannot cast String to requested type.");
+        }
+        type = _type;
+        length = s.length;
     }
 
     public String toString() {
         String s;
         switch (type) {
-        case 'i': s = String.valueOf(_i); break;
-        case 'f': s = String.valueOf(_f); break;
-        case 'd': s = String.valueOf(_d); break;
-        case 's':s = '\''+_s+'\''; break;
-        case 'S': s = '"'+_s+'"'; break;
-        default: s = null;
+            case 'i': s = Arrays.toString(_i); break;
+            case 'f': s = Arrays.toString(_f); break;
+            case 'd': s = Arrays.toString(_d); break;
+            case 's': s = Arrays.toString(_s); break;
+            case 'S': s = Arrays.toString(_s); break;
+            default: s = null;
         }
-        return "<type="+type+", value="+s+">";
+        return "<type="+type+", length="+length+", value="+s+">";
     }
 
     public char type;
+    public int length;
 
-    private int _i;
-    private float _f;
-    private double _d;
-    private String _s;
+    private int[] _i;
+    private float[] _f;
+    private double[] _d;
+    private String[] _s;
 }
diff --git a/jni/Mapper_Db_Signal.h b/jni/Mapper_Db_Signal.h
deleted file mode 100644
index 73d4c50..0000000
--- a/jni/Mapper_Db_Signal.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class Mapper_Db_Signal */
-
-#ifndef _Included_Mapper_Db_Signal
-#define _Included_Mapper_Db_Signal
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_set_name
- * Signature: (JLjava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1set_1name
-  (JNIEnv *, jobject, jlong, jstring);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_name
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1name
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_device_name
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1device_1name
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_is_output
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1is_1output
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_type
- * Signature: (J)C
- */
-JNIEXPORT jchar JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1type
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_length
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1length
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_set_unit
- * Signature: (JLjava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1set_1unit
-  (JNIEnv *, jobject, jlong, jstring);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_unit
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1unit
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_minimum
- * Signature: (J)Ljava/lang/Double;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1minimum
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_maximum
- * Signature: (J)Ljava/lang/Double;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1maximum
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    msig_db_signal_get_rate
- * Signature: (J)D
- */
-JNIEXPORT jdouble JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1rate
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Db_Signal
- * Method:    mapper_db_signal_property_lookup
- * Signature: (JLjava/lang/String;)LMapper/PropertyValue;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_mapper_1db_1signal_1property_1lookup
-  (JNIEnv *, jobject, jlong, jstring);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/jni/Mapper_Device.h b/jni/Mapper_Device.h
deleted file mode 100644
index 60d39c1..0000000
--- a/jni/Mapper_Device.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class Mapper_Device */
-
-#ifndef _Included_Mapper_Device
-#define _Included_Mapper_Device
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     Mapper_Device
- * Method:    mdev_new
- * Signature: (Ljava/lang/String;I)J
- */
-JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1new
-  (JNIEnv *, jobject, jstring, jint);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_free
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1free
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_poll
- * Signature: (JI)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1poll
-  (JNIEnv *, jobject, jlong, jint);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_remove_input
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1remove_1input
-  (JNIEnv *, jobject, jlong, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_remove_output
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1remove_1output
-  (JNIEnv *, jobject, jlong, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_inputs
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1inputs
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_outputs
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1outputs
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_links_in
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1links_1in
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_links_out
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1links_1out
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_connections_in
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1connections_1in
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_num_connections_out
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1num_1connections_1out
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_get_input_by_name
- * Signature: (JLjava/lang/String;Ljava/lang/Integer;)J
- */
-JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1get_1input_1by_1name
-  (JNIEnv *, jobject, jlong, jstring, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_get_output_by_name
- * Signature: (JLjava/lang/String;Ljava/lang/Integer;)J
- */
-JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1get_1output_1by_1name
-  (JNIEnv *, jobject, jlong, jstring, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_get_input_by_index
- * Signature: (JI)J
- */
-JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1get_1input_1by_1index
-  (JNIEnv *, jobject, jlong, jint);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_get_output_by_index
- * Signature: (JI)J
- */
-JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1get_1output_1by_1index
-  (JNIEnv *, jobject, jlong, jint);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_set_property
- * Signature: (JLjava/lang/String;LMapper/PropertyValue;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1set_1property
-  (JNIEnv *, jobject, jlong, jstring, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_remove_property
- * Signature: (JLjava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1remove_1property
-  (JNIEnv *, jobject, jlong, jstring);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_ready
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_mdev_1ready
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_name
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Device_mdev_1name
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_port
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1port
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_ip4
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Device_mdev_1ip4
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_interface
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Device_mdev_1interface
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_ordinal
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1ordinal
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_id
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_mdev_1id
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_start_queue
- * Signature: (JLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1start_1queue
-  (JNIEnv *, jobject, jlong, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    mdev_send_queue
- * Signature: (JLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1send_1queue
-  (JNIEnv *, jobject, jlong, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    add_input
- * Signature: (Ljava/lang/String;ICLjava/lang/String;Ljava/lang/Double;Ljava/lang/Double;LMapper/InputListener;)LMapper/Device/Signal;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1input
-  (JNIEnv *, jobject, jstring, jint, jchar, jstring, jobject, jobject, jobject);
-
-/*
- * Class:     Mapper_Device
- * Method:    add_output
- * Signature: (Ljava/lang/String;ICLjava/lang/String;Ljava/lang/Double;Ljava/lang/Double;)LMapper/Device/Signal;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1output
-  (JNIEnv *, jobject, jstring, jint, jchar, jstring, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/jni/Mapper_Device_Signal.h b/jni/Mapper_Device_Signal.h
deleted file mode 100644
index 359dc5e..0000000
--- a/jni/Mapper_Device_Signal.h
+++ /dev/null
@@ -1,413 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class Mapper_Device_Signal */
-
-#ifndef _Included_Mapper_Device_Signal
-#define _Included_Mapper_Device_Signal
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef Mapper_Device_Signal_IN_UNDEFINED
-#define Mapper_Device_Signal_IN_UNDEFINED 1L
-#undef Mapper_Device_Signal_IN_STEAL_OLDEST
-#define Mapper_Device_Signal_IN_STEAL_OLDEST 2L
-#undef Mapper_Device_Signal_IN_STEAL_NEWEST
-#define Mapper_Device_Signal_IN_STEAL_NEWEST 3L
-#undef Mapper_Device_Signal_N_MAPPER_INSTANCE_ALLOCATION_TYPES
-#define Mapper_Device_Signal_N_MAPPER_INSTANCE_ALLOCATION_TYPES 4L
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_full_name
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Device_00024Signal_msig_1full_1name
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_name
- * Signature: (J)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_Mapper_Device_00024Signal_msig_1name
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_is_output
- * Signature: (J)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_msig_1is_1output
-  (JNIEnv *, jobject, jlong);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_set_minimum
- * Signature: (JLjava/lang/Double;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1minimum
-  (JNIEnv *, jobject, jlong, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_set_maximum
- * Signature: (JLjava/lang/Double;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1maximum
-  (JNIEnv *, jobject, jlong, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_set_rate
- * Signature: (JD)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1rate
-  (JNIEnv *, jobject, jlong, jdouble);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    properties
- * Signature: ()LMapper/Db/Signal;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_properties
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_set_property
- * Signature: (JLjava/lang/String;LMapper/PropertyValue;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1property
-  (JNIEnv *, jobject, jlong, jstring, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_remove_property
- * Signature: (JLjava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1remove_1property
-  (JNIEnv *, jobject, jlong, jstring);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    msig_query_remotes
- * Signature: (JLMapper/TimeTag;)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_msig_1query_1remotes
-  (JNIEnv *, jobject, jlong, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    set_instance_event_callback
- * Signature: (LMapper/InstanceEventListener;I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_set_1instance_1event_1callback
-  (JNIEnv *, jobject, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    set_callback
- * Signature: (LMapper/InputListener;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_set_1callback
-  (JNIEnv *, jobject, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    set_instance_callback
- * Signature: (ILMapper/InputListener;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_set_1instance_1callback
-  (JNIEnv *, jobject, jint, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    get_instance_callback
- * Signature: (I)LMapper/InputListener;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_get_1instance_1callback
-  (JNIEnv *, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    reserve_instances
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_reserve_1instances
-  (JNIEnv *, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    release_instance
- * Signature: (ILMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_release_1instance
-  (JNIEnv *, jobject, jint, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    oldest_active_instance
- * Signature: ()Ljava/lang/Integer;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_oldest_1active_1instance
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    newest_active_instance
- * Signature: ()Ljava/lang/Integer;
- */
-JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_newest_1active_1instance
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    match_instances
- * Signature: (LMapper/Device/Signal;LMapper/Device/Signal;I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_match_1instances
-  (JNIEnv *, jobject, jobject, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    num_active_instances
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_num_1active_1instances
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    num_reserved_instances
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_num_1reserved_1instances
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    active_instance_id
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_active_1instance_1id
-  (JNIEnv *, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    set_instance_allocation_mode
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_set_1instance_1allocation_1mode
-  (JNIEnv *, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    instance_allocation_mode
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_instance_1allocation_1mode
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    num_connections
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_num_1connections
-  (JNIEnv *, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__I
-  (JNIEnv *, jobject, jint);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__F
-  (JNIEnv *, jobject, jfloat);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__D
-  (JNIEnv *, jobject, jdouble);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([I)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3I
-  (JNIEnv *, jobject, jintArray);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([F)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3F
-  (JNIEnv *, jobject, jfloatArray);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([D)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3D
-  (JNIEnv *, jobject, jdoubleArray);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (ILMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__ILMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (FLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__FLMapper_TimeTag_2
-  (JNIEnv *, jobject, jfloat, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: (DLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__DLMapper_TimeTag_2
-  (JNIEnv *, jobject, jdouble, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([ILMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3ILMapper_TimeTag_2
-  (JNIEnv *, jobject, jintArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([FLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3FLMapper_TimeTag_2
-  (JNIEnv *, jobject, jfloatArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update
- * Signature: ([DLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3DLMapper_TimeTag_2
-  (JNIEnv *, jobject, jdoubleArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (IILMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IILMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jint, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (IFLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IFLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jfloat, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (IDLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IDLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jdouble, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (I[ILMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3ILMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jintArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (I[FLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3FLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jfloatArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    update_instance
- * Signature: (I[DLMapper/TimeTag;)V
- */
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3DLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jdoubleArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    value
- * Signature: ([ILMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_value___3ILMapper_TimeTag_2
-  (JNIEnv *, jobject, jintArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    value
- * Signature: ([FLMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_value___3FLMapper_TimeTag_2
-  (JNIEnv *, jobject, jfloatArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    value
- * Signature: ([DLMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_value___3DLMapper_TimeTag_2
-  (JNIEnv *, jobject, jdoubleArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    instance_value
- * Signature: (I[ILMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_instance_1value__I_3ILMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jintArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    instance_value
- * Signature: (I[FLMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_instance_1value__I_3FLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jfloatArray, jobject);
-
-/*
- * Class:     Mapper_Device_Signal
- * Method:    instance_value
- * Signature: (I[DLMapper/TimeTag;)Z
- */
-JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_instance_1value__I_3DLMapper_TimeTag_2
-  (JNIEnv *, jobject, jint, jdoubleArray, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/jni/TestInstances/TestInstances.pde b/jni/TestInstances/TestInstances.pde
new file mode 100644
index 0000000..4aff410
--- /dev/null
+++ b/jni/TestInstances/TestInstances.pde
@@ -0,0 +1,190 @@
+
+/**
+ * libmapper instances example
+ * Adapted from Processing.org Mouse Functions example.
+ */
+
+import Mapper.*;
+
+Circle bover = null;
+boolean locked = false;
+
+Circle circles[] = new Circle[5];
+int bs = 15;
+int count = 0;
+
+Mapper.Device dev = new Mapper.Device("TestInstances", 9000);
+
+Mapper.Device.Signal sig_x_in = null;
+Mapper.Device.Signal sig_y_in = null;
+Mapper.Device.Signal sig_x_out = null;
+Mapper.Device.Signal sig_y_out = null;
+
+void setup() 
+{
+  size(300, 300);
+  colorMode(HSB, 256, 256, 256);
+  ellipseMode(CENTER);
+  textAlign(CENTER, CENTER);
+  frameRate(10);
+
+  /* Note: null for the InputListener, since we are specifying
+   * this later per-instance. */
+  sig_x_in = dev.add_input("x", 1, 'i', "pixels",
+                           (double)0.0, (double)width, null);
+  sig_y_in = dev.add_input("y", 1, 'i', "pixels",
+                           (double)0.0, (double)width, null);
+
+  sig_x_out = dev.add_output("x", 1, 'i', "pixels",
+                             (double)0.0, (double)width);
+  sig_y_out = dev.add_output("y", 1, 'i', "pixels",
+                             (double)0.0, (double)width);
+
+  Mapper.InstanceEventListener evin = new Mapper.InstanceEventListener() {
+    public void onEvent(Mapper.Device.Signal sig,
+                 Mapper.Db.Signal props,
+                 int instance_id,
+                 int event,
+                 TimeTag tt) {
+      sig_x_in.set_instance_callback(instance_id, circles[instance_id-1].lx);
+      sig_y_in.set_instance_callback(instance_id, circles[instance_id-1].ly);
+    };
+  };
+
+  sig_x_in.set_instance_event_callback(evin,
+    Mapper.InstanceEventListener.IN_ALL);
+
+  sig_x_in.reserve_instances(circles.length);
+  sig_y_in.reserve_instances(circles.length);
+  sig_x_out.reserve_instances(circles.length);
+  sig_y_out.reserve_instances(circles.length);
+
+  for (int i=0; i < circles.length; i++) {
+    circles[i] = new Circle(Math.random()*(width-bs*2)+bs,
+                            Math.random()*(height-bs*2)+bs,
+                            Math.random()*256);
+  }
+
+  while (!dev.ready())
+    dev.poll(100);
+
+  frame.setTitle(dev.name());
+}
+
+void stop()
+{
+  dev.free();
+}
+
+void draw() 
+{
+  dev.poll(0);
+
+  background(0);
+
+  Circle sel = null;
+  for (Circle c : circles) {
+    if (c.testMouse() && sel == null)
+      sel = c;
+    c.display();
+  }
+
+  bover = sel;
+}
+
+void mousePressed() {
+  if(bover!=null) {
+    locked = true;
+    bover.pressed();
+  } else {
+    locked = false;
+  }
+}
+
+void mouseDragged() {
+  if(locked) {
+    bover.dragged();
+  }
+}
+
+void mouseReleased() {
+  locked = false;
+}
+
+class Circle
+{
+  float bx;
+  float by;
+  float bdifx = 0.0;
+  float bdify = 0.0;
+  float hue;
+  int id = 0;
+  Mapper.InputListener lx, ly;
+
+  Circle(double _bx, double _by, double _hue) {
+    bx = (float)_bx;
+    by = (float)_by;
+    hue = (float)_hue;
+    id = ++count;
+
+    /* Add listeners for our instance */
+    lx = new Mapper.InputListener() {
+          void onInput(Mapper.Device.Signal sig,
+                       Mapper.Db.Signal props,
+                       int instance_id, int[] v, TimeTag tt) {
+            if (v!=null)
+              bx = v[0];
+          }};
+
+    ly = new Mapper.InputListener() {
+          void onInput(Mapper.Device.Signal sig,
+                       Mapper.Db.Signal props,
+                       int instance_id, int[] v, TimeTag tt) {
+            if (v!=null)
+              by = v[0];
+          }};
+}
+
+  boolean testMouse() {
+    // Test if the cursor is over the circle
+    float dx = mouseX - bx;
+    float dy = mouseY - by;
+    if (Math.sqrt(dx*dx+dy*dy) < bs) {
+      bover = this;
+      if(locked) {
+        stroke(hue, 256, 153);
+        fill(hue, 256, 256);
+      }
+      else {
+        stroke(hue, 0, 256);
+        fill(hue, 256, 153);
+      }
+      return true;
+    }
+
+    stroke(hue, 256, 153);
+    fill(hue, 256, 256);
+    return false;
+  }
+
+  void pressed() {
+    fill(hue, 256, 153);
+    bdifx = mouseX-bx;
+    bdify = mouseY-by;
+  }
+
+  void dragged() {
+    bx = mouseX-bdifx;
+    by = mouseY-bdify;
+  }
+
+  void display() {
+    ellipse(bx, by, bs*2, bs*2);
+    fill(0, 0, 256);
+    text(""+id, bx, by);
+
+    sig_x_out.update_instance(id, (int)bx);
+    sig_y_out.update_instance(id, (int)by);
+  }
+}
+
diff --git a/jni/mapperjni.c b/jni/mapperjni.c
index 8fdd6d9..3581c02 100644
--- a/jni/mapperjni.c
+++ b/jni/mapperjni.c
@@ -102,8 +102,8 @@ static mapper_signal get_signal_from_jobject(JNIEnv *env, jobject obj)
     return 0;
 }
 
-static mapper_timetag_t *get_timetag_from_jobject
-  (JNIEnv *env, jobject obj, mapper_timetag_t *tt)
+static mapper_timetag_t *get_timetag_from_jobject(JNIEnv *env, jobject obj,
+                                                  mapper_timetag_t *tt)
 {
     if (!obj) return 0;
     jclass cls = (*env)->GetObjectClass(env, obj);
@@ -119,8 +119,7 @@ static mapper_timetag_t *get_timetag_from_jobject
     return 0;
 }
 
-static jobject get_jobject_from_timetag
-  (JNIEnv *env, mapper_timetag_t *tt)
+static jobject get_jobject_from_timetag(JNIEnv *env, mapper_timetag_t *tt)
 {
     jobject objtt = 0;
     if (tt) {
@@ -141,6 +140,102 @@ static jobject get_jobject_from_timetag
     return objtt;
 }
 
+static jobject build_PropertyValue(JNIEnv *env, const char type,
+                                   const void *value, const int length)
+{
+    if (length <= 0)
+        return 0;
+
+    jmethodID methodID;
+    jclass cls = (*env)->FindClass(env, "Mapper/PropertyValue");
+
+    switch (type) {
+        case 'i': {
+            if (length == 1) {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(CI)V");
+                if (methodID)
+                    return (*env)->NewObject(env, cls, methodID, type,
+                                             *((int *)value));
+            }
+            else {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(C[I)V");
+                if (methodID) {
+                    jintArray arr = (*env)->NewIntArray(env, length);
+                    (*env)->SetIntArrayRegion(env, arr, 0, length, value);
+                    return (*env)->NewObject(env, cls, methodID, type, arr);
+                }
+            }
+                
+            break;
+        }
+        case 'f': {
+            if (length == 1) {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(CF)V");
+                if (methodID)
+                    return (*env)->NewObject(env, cls, methodID, type,
+                                             *((float *)value));
+            }
+            else {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(C[F)V");
+                if (methodID) {
+                    jfloatArray arr = (*env)->NewFloatArray(env, length);
+                    (*env)->SetFloatArrayRegion(env, arr, 0, length, value);
+                    return (*env)->NewObject(env, cls, methodID, type, arr);
+                }
+            }
+            break;
+        }
+        case 'd': {
+            if (length == 1) {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(CD)V");
+                if (methodID)
+                    return (*env)->NewObject(env, cls, methodID, type,
+                                             *((double *)value));
+            }
+            else {
+                methodID = (*env)->GetMethodID(env, cls, "<init>", "(C[D)V");
+                if (methodID) {
+                    jdoubleArray arr = (*env)->NewDoubleArray(env, length);
+                    (*env)->SetDoubleArrayRegion(env, arr, 0, length, value);
+                    return (*env)->NewObject(env, cls, methodID, type, arr);
+                }
+            }
+            break;
+        }
+        case 's': {
+            if (length == 1) {
+                methodID = (*env)->GetMethodID(env, cls, "<init>",
+                                               "(CLjava/lang/String;)V");
+                if (methodID) {
+                    jobject s = (*env)->NewStringUTF(env, (char *)value);
+                    if (s)
+                        return (*env)->NewObject(env, cls, methodID, type, s);
+                }
+            }
+            else {
+                methodID = (*env)->GetMethodID(env, cls, "<init>",
+                                               "(C[Ljava/lang/String;)V");
+                if (methodID) {
+                    jobjectArray arr = (*env)->NewObjectArray(env, length,
+                        (*env)->FindClass(env, "java/lang/String"),
+                        (*env)->NewStringUTF(env, ""));
+                    int i;
+                    char **strings = (char**)value;
+                    for (i = 0; i < length; i++) {
+                        (*env)->SetObjectArrayElement(env, arr, i,
+                            (*env)->NewStringUTF(env, strings[i]));
+                    }
+                    return (*env)->NewObject(env, cls, methodID, type, arr);
+                }
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    return 0;
+}
+
 /**** Mapper.Device ****/
 
 JNIEXPORT jlong JNICALL Java_Mapper_Device_mdev_1new
@@ -211,6 +306,12 @@ static void java_msig_input_cb(mapper_signal sig, mapper_db_signal props,
             (*genv)->SetIntArrayRegion(genv, varr, 0, props->length, v);
         vobj = (jobject) varr;
     }
+    else if (props->type == 'd' && v) {
+        jdoubleArray varr = (*genv)->NewDoubleArray(genv, props->length);
+        if (varr)
+            (*genv)->SetDoubleArrayRegion(genv, varr, 0, props->length, v);
+        vobj = (jobject) varr;
+    }
 
     if (!vobj && v) {
         char msg[1024];
@@ -249,6 +350,12 @@ static void java_msig_input_cb(mapper_signal sig, mapper_db_signal props,
                                            "LMapper/Db/Signal;"
                                            "I[F"
                                            "LMapper/TimeTag;)V");
+            else if (props->type=='d')
+                mid = (*genv)->GetMethodID(genv, cls, "onInput",
+                                           "(LMapper/Device$Signal;"
+                                           "LMapper/Db/Signal;"
+                                           "I[D"
+                                           "LMapper/TimeTag;)V");
 
             if (mid) {
                 (*genv)->CallVoidMethod(genv, input_cb, mid,
@@ -358,11 +465,10 @@ static jobject create_signal_object(JNIEnv *env, jobject devobj,
 }
 
 JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1input
-  (JNIEnv *env, jobject obj, jstring name, jint length,
-   jchar type, jstring unit, jobject minimum, jobject maximum,
-   jobject listener)
+  (JNIEnv *env, jobject obj, jstring name, jint length, jchar type,
+   jstring unit, jobject minimum, jobject maximum, jobject listener)
 {
-    if (!name || (length<=0) || (type!='f' && type!='i'))
+    if (!name || (length<=0) || (type!='f' && type!='i' && type!='d'))
         return 0;
 
     mapper_device dev = get_device_from_jobject(env, obj);
@@ -371,37 +477,6 @@ JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1input
     const char *cunit = 0;
     if (unit) cunit = (*env)->GetStringUTFChars(env, unit, 0);
 
-    union {
-        float f;
-        int i;
-    } mn, mx;
-
-    if (minimum) {
-        jclass cls = (*env)->GetObjectClass(env, minimum);
-        if (cls) {
-            jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-            if (val) {
-                if (type == 'f')
-                    mn.f = (float)(*env)->GetDoubleField(env, minimum, val);
-                else if (type == 'i')
-                    mn.i = (int)(*env)->GetDoubleField(env, minimum, val);
-            }
-        }
-    }
-
-    if (maximum) {
-        jclass cls = (*env)->GetObjectClass(env, maximum);
-        if (cls) {
-            jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-            if (val) {
-                if (type == 'f')
-                    mx.f = (float)(*env)->GetDoubleField(env, maximum, val);
-                else if (type == 'i')
-                    mx.i = (int)(*env)->GetDoubleField(env, maximum, val);
-            }
-        }
-    }
-
     msig_jni_context ctx =
         (msig_jni_context)calloc(1, sizeof(msig_jni_context_t));
     if (!ctx) {
@@ -410,21 +485,30 @@ JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1input
     }
 
     mapper_signal s = mdev_add_input(dev, cname, length, type, cunit,
-                                     minimum ? &mn : 0,
-                                     maximum ? &mx : 0,
-                                     java_msig_input_cb,
-                                     ctx);
+                                     0, 0, java_msig_input_cb, ctx);
 
     (*env)->ReleaseStringUTFChars(env, name, cname);
     if (unit) (*env)->ReleaseStringUTFChars(env, unit, cunit);
 
+    if (minimum) {
+        jstring minstring = (*env)->NewStringUTF(env, "min");
+        Java_Mapper_Device_00024Signal_msig_1set_1property(env, obj, (jlong)s,
+                                                           minstring, minimum);
+    }
+    if (maximum) {
+        jstring maxstring = (*env)->NewStringUTF(env, "max");
+        Java_Mapper_Device_00024Signal_msig_1set_1property(env, obj, (jlong)s,
+                                                           maxstring, maximum);
+    }
+
     return create_signal_object(env, obj, ctx, listener, s);
 }
 
 JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1output
-  (JNIEnv *env, jobject obj, jstring name, jint length, jchar type, jstring unit, jobject minimum, jobject maximum)
+  (JNIEnv *env, jobject obj, jstring name, jint length, jchar type,
+   jstring unit, jobject minimum, jobject maximum)
 {
-    if (!name || (length<=0) || (type!='f' && type!='i'))
+    if (!name || (length<=0) || (type!='f' && type!='i' && type!='d'))
         return 0;
 
     mapper_device dev = get_device_from_jobject(env, obj);
@@ -433,37 +517,6 @@ JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1output
     const char *cunit = 0;
     if (unit) cunit = (*env)->GetStringUTFChars(env, unit, 0);
 
-    union {
-        float f;
-        int i;
-    } mn, mx;
-
-    if (minimum) {
-        jclass cls = (*env)->GetObjectClass(env, minimum);
-        if (cls) {
-            jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-            if (val) {
-                if (type == 'f')
-                    mn.f = (float)(*env)->GetDoubleField(env, minimum, val);
-                else if (type == 'i')
-                    mn.i = (int)(*env)->GetDoubleField(env, minimum, val);
-            }
-        }
-    }
-
-    if (maximum) {
-        jclass cls = (*env)->GetObjectClass(env, maximum);
-        if (cls) {
-            jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-            if (val) {
-                if (type == 'f')
-                    mx.f = (float)(*env)->GetDoubleField(env, maximum, val);
-                else if (type == 'i')
-                    mx.i = (int)(*env)->GetDoubleField(env, maximum, val);
-            }
-        }
-    }
-
     msig_jni_context ctx =
         (msig_jni_context)calloc(1, sizeof(msig_jni_context_t));
     if (!ctx) {
@@ -471,13 +524,22 @@ JNIEXPORT jobject JNICALL Java_Mapper_Device_add_1output
         return 0;
     }
 
-    mapper_signal s = mdev_add_output(dev, cname, length, type, cunit,
-                                      minimum ? &mn : 0,
-                                      maximum ? &mx : 0);
+    mapper_signal s = mdev_add_output(dev, cname, length, type, cunit, 0, 0);
 
     (*env)->ReleaseStringUTFChars(env, name, cname);
     if (unit) (*env)->ReleaseStringUTFChars(env, unit, cunit);
 
+    if (minimum) {
+        jstring minstring = (*env)->NewStringUTF(env, "min");
+        Java_Mapper_Device_00024Signal_msig_1set_1property(env, obj, (jlong)s,
+                                                           minstring, minimum);
+    }
+    if (maximum) {
+        jstring maxstring = (*env)->NewStringUTF(env, "max");
+        Java_Mapper_Device_00024Signal_msig_1set_1property(env, obj, (jlong)s,
+                                                           maxstring, maximum);
+    }
+
     return create_signal_object(env, obj, ctx, 0, s);
 }
 
@@ -605,43 +667,65 @@ JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1set_1property
     jclass cls = (*env)->GetObjectClass(env, value);
     if (cls) {
         jfieldID typeid = (*env)->GetFieldID(env, cls, "type", "C");
-        if (typeid) {
+        jfieldID lengthid = (*env)->GetFieldID(env, cls, "length", "I");
+        if (typeid && lengthid) {
             char type;
-            lo_arg a, *pa=&a;
+            int length = 1;
+            void *propval = 0;
             jfieldID valf = 0;
             jobject o;
             type = (*env)->GetCharField(env, value, typeid);
+            length = (*env)->GetIntField(env, value, lengthid);
             switch (type)
             {
-            case 'i':
-                valf = (*env)->GetFieldID(env, cls, "_i", "I");
-                a.i = (*env)->GetIntField(env, value, valf);
-                break;
-            case 'f':
-                valf = (*env)->GetFieldID(env, cls, "_f", "F");
-                a.f = (*env)->GetFloatField(env, value, valf);
-                break;
-            case 'd':
-                valf = (*env)->GetFieldID(env, cls, "_d", "D");
-                a.d = (*env)->GetDoubleField(env, value, valf);
-                break;
-            case 's':
-            case 'S':
-                valf = (*env)->GetFieldID(env, cls, "_s", "Ljava/lang/String;");
-                o = (*env)->GetObjectField(env, value, valf);
-                pa = (lo_arg*)(*env)->GetStringUTFChars(env, o, 0);
-                break;
-            }
-            if (valf) {
-                mdev_set_property(dev, ckey, type, pa);
-                if (pa != &a)
-                    (*env)->ReleaseStringUTFChars(env, o, (const char*)pa);
+                case 'i':
+                    valf = (*env)->GetFieldID(env, cls, "_i", "[I");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetIntArrayElements(env, o, NULL);
+                    mdev_set_property(dev, ckey, type, propval, length);
+                    (*env)->ReleaseIntArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 'f':
+                    valf = (*env)->GetFieldID(env, cls, "_f", "[F");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetFloatArrayElements(env, o, NULL);
+                    mdev_set_property(dev, ckey, type, propval, length);
+                    (*env)->ReleaseFloatArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 'd':
+                    valf = (*env)->GetFieldID(env, cls, "_d", "[D");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetDoubleArrayElements(env, value, NULL);
+                    mdev_set_property(dev, ckey, type, propval, length);
+                    (*env)->ReleaseDoubleArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 's':
+                case 'S':
+                    valf = (*env)->GetFieldID(env, cls, "_s", "[Ljava/lang/String;");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    // need to unpack string array and rebuild
+                    jstring jstrings[length];
+                    const char *cstrings[length];
+                    int i;
+                    for (i = 0; i < length; i++) {
+                        jstrings[i] = (jstring) (*env)->GetObjectArrayElement(env, o, i);
+                        cstrings[i] = (*env)->GetStringUTFChars(env, jstrings[i], 0);
+                    }
+                    if (length == 1)
+                        mdev_set_property(dev, ckey, type, (void*)&cstrings[0], 1);
+                    else
+                        mdev_set_property(dev, ckey, type, (void*)&cstrings, length);
+                    for (i = 0; i < length; i++)
+                        (*env)->ReleaseStringUTFChars(env, jstrings[i], cstrings[i]);
+                    break;
             }
         }
     }
     (*env)->ReleaseStringUTFChars(env, key, ckey);
 }
 
+// TODO: add generic device properties functions
+
 JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1remove_1property
   (JNIEnv *env, jobject obj, jlong d, jstring key)
 {
@@ -714,18 +798,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1start_1queue
 {
     mapper_device dev = (mapper_device)ptr_jlong(d);
 
-    jclass cls = (*env)->GetObjectClass(env, objtt);
-    if (cls) {
-        jfieldID secid = (*env)->GetFieldID(env, cls, "sec", "J");
-        jfieldID fracid = (*env)->GetFieldID(env, cls, "frac", "J");
-        if (secid && fracid) {
-            mapper_timetag_t tt;
-            tt.sec = (float)(*env)->GetDoubleField(env, objtt, secid);
-            tt.frac = (int)(*env)->GetDoubleField(env, objtt, fracid);
-
-            mdev_start_queue(dev, tt);
-        }
-    }
+    mapper_timetag_t tt, *ptt=0;
+    ptt = get_timetag_from_jobject(env, objtt, &tt);
+    if (ptt)
+        mdev_start_queue(dev, *ptt);
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1send_1queue
@@ -733,18 +809,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_mdev_1send_1queue
 {
     mapper_device dev = (mapper_device)ptr_jlong(d);
 
-    jclass cls = (*env)->GetObjectClass(env, objtt);
-    if (cls) {
-        jfieldID secid = (*env)->GetFieldID(env, cls, "sec", "J");
-        jfieldID fracid = (*env)->GetFieldID(env, cls, "frac", "J");
-        if (secid && fracid) {
-            mapper_timetag_t tt;
-            tt.sec = (float)(*env)->GetDoubleField(env, objtt, secid);
-            tt.frac = (int)(*env)->GetDoubleField(env, objtt, fracid);
-
-            mdev_send_queue(dev, tt);
-        }
-    }
+    mapper_timetag_t tt, *ptt=0;
+    ptt = get_timetag_from_jobject(env, objtt, &tt);
+    if (ptt)
+        mdev_send_queue(dev, *ptt);
 }
 
 /**** Mapper.Device.Signal ****/
@@ -787,66 +855,6 @@ JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_msig_1is_1output
     return 0;
 }
 
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1minimum
-  (JNIEnv *env, jobject obj, jlong s, jobject minimum)
-{
-    mapper_signal sig=(mapper_signal)ptr_jlong(s);
-    if (sig) {
-        mapper_db_signal p = msig_properties(sig);
-
-        union {
-            float f;
-            int i;
-        } mn;
-
-        if (minimum) {
-            jclass cls = (*env)->GetObjectClass(env, minimum);
-            if (cls) {
-                jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-                if (val) {
-                    if (p->type == 'f')
-                        mn.f = (float)(*env)->GetDoubleField(env, minimum, val);
-                    else if (p->type == 'i')
-                        mn.i = (int)(*env)->GetDoubleField(env, minimum, val);
-                    msig_set_minimum(sig, &mn);
-                }
-            }
-        }
-        else
-            msig_set_minimum(sig, 0);
-    }
-}
-
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1maximum
-  (JNIEnv *env, jobject obj, jlong s, jobject maximum)
-{
-    mapper_signal sig=(mapper_signal)ptr_jlong(s);
-    if (sig) {
-        mapper_db_signal p = msig_properties(sig);
-
-        union {
-            float f;
-            int i;
-        } mx;
-
-        if (maximum) {
-            jclass cls = (*env)->GetObjectClass(env, maximum);
-            if (cls) {
-                jfieldID val = (*env)->GetFieldID(env, cls, "value", "D");
-                if (val) {
-                    if (p->type == 'f')
-                        mx.f = (float)(*env)->GetDoubleField(env, maximum, val);
-                    else if (p->type == 'i')
-                        mx.i = (int)(*env)->GetDoubleField(env, maximum, val);
-                    msig_set_minimum(sig, &mx);
-                }
-            }
-        }
-        else
-            msig_set_maximum(sig, 0);
-    }
-}
-
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1rate
   (JNIEnv *env, jobject obj, jlong s, jdouble rate)
 {
@@ -855,10 +863,12 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1rate
         msig_set_rate(sig, (float)rate);
 }
 
-JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_msig_1query_1remotes
-  (JNIEnv *env, jobject obj, jlong s, jobject objtt)
+JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_query_1remotes
+  (JNIEnv *env, jobject obj, jobject objtt)
 {
-    mapper_signal sig = (mapper_signal)ptr_jlong(s);
+    mapper_signal sig = get_signal_from_jobject(env, obj);
+    if (!sig)
+        return 0;
     if (objtt)
     {
         mapper_timetag_t tt, *ptt;
@@ -887,37 +897,56 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_msig_1set_1property
     jclass cls = (*env)->GetObjectClass(env, value);
     if (cls) {
         jfieldID typeid = (*env)->GetFieldID(env, cls, "type", "C");
-        if (typeid) {
+        jfieldID lengthid = (*env)->GetFieldID(env, cls, "length", "I");
+        if (typeid && lengthid) {
             char type;
-            lo_arg a, *pa=&a;
+            int length;
+            void *propval = 0;
             jfieldID valf = 0;
             jobject o;
             type = (*env)->GetCharField(env, value, typeid);
+            length = (*env)->GetIntField(env, value, lengthid);
             switch (type)
             {
-            case 'i':
-                valf = (*env)->GetFieldID(env, cls, "_i", "I");
-                a.i = (*env)->GetIntField(env, value, valf);
-                break;
-            case 'f':
-                valf = (*env)->GetFieldID(env, cls, "_f", "F");
-                a.f = (*env)->GetFloatField(env, value, valf);
-                break;
-            case 'd':
-                valf = (*env)->GetFieldID(env, cls, "_d", "D");
-                a.d = (*env)->GetDoubleField(env, value, valf);
-                break;
-            case 's':
-            case 'S':
-                valf = (*env)->GetFieldID(env, cls, "_s", "Ljava/lang/String;");
-                o = (*env)->GetObjectField(env, value, valf);
-                pa = (lo_arg*)(*env)->GetStringUTFChars(env, o, 0);
-                break;
-            }
-            if (valf) {
-                msig_set_property(sig, ckey, type, pa);
-                if (pa != &a)
-                    (*env)->ReleaseStringUTFChars(env, o, (const char*)pa);
+                case 'i':
+                    valf = (*env)->GetFieldID(env, cls, "_i", "[I");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetIntArrayElements(env, o, NULL);
+                    msig_set_property(sig, ckey, type, propval, length);
+                    (*env)->ReleaseIntArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 'f':
+                    valf = (*env)->GetFieldID(env, cls, "_f", "[F");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetFloatArrayElements(env, o, NULL);
+                    msig_set_property(sig, ckey, type, propval, length);
+                    (*env)->ReleaseFloatArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 'd':
+                    valf = (*env)->GetFieldID(env, cls, "_d", "[D");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    propval = (*env)->GetDoubleArrayElements(env, o, NULL);
+                    msig_set_property(sig, ckey, type, propval, length);
+                    (*env)->ReleaseDoubleArrayElements(env, o, propval, JNI_ABORT);
+                    break;
+                case 's':
+                case 'S':
+                    valf = (*env)->GetFieldID(env, cls, "_s", "[Ljava/lang/String;");
+                    o = (*env)->GetObjectField(env, value, valf);
+                    jstring jstrings[length];
+                    const char *cstrings[length];
+                    int i;
+                    for (i = 0; i < length; i++) {
+                        jstrings[i] = (jstring) (*env)->GetObjectArrayElement(env, o, i);
+                        cstrings[i] = (*env)->GetStringUTFChars(env, jstrings[i], 0);
+                    }
+                    if (length == 1)
+                        msig_set_property(sig, ckey, type, (void*)&cstrings[0], 1);
+                    else
+                        msig_set_property(sig, ckey, type, (void*)&cstrings, length);
+                    for (i = 0; i < length; i++)
+                        (*env)->ReleaseStringUTFChars(env, jstrings[i], cstrings[i]);
+                    break;
             }
         }
     }
@@ -954,6 +983,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__ILMapper_TimeTag_2
         float v = (float)value;
         msig_update(sig, &v, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        double v = (double)value;
+        msig_update(sig, &v, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__FLMapper_TimeTag_2
@@ -976,6 +1009,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__FLMapper_TimeTag_2
     else if (props->type == 'f') {
         msig_update(sig, &value, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        double v = (double)value;
+        msig_update(sig, &v, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__DLMapper_TimeTag_2
@@ -999,6 +1036,9 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update__DLMapper_TimeTag_2
         float v = (float)value;
         msig_update(sig, &v, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        msig_update(sig, &value, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3ILMapper_TimeTag_2
@@ -1030,6 +1070,14 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3ILMapper_TimeTag
             msig_update(sig, arraycopy, 0, ptt ? *ptt : MAPPER_NOW);
             free(arraycopy);
         }
+        else if (props->type == 'd') {
+            double *arraycopy = malloc(sizeof(double)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (double)array[i];
+            msig_update(sig, arraycopy, 0, ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseIntArrayElements(env, value, array, JNI_ABORT);
     }
 }
@@ -1046,7 +1094,7 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3FLMapper_TimeTag
         throwIllegalArgumentLength(env, sig, length);
         return;
     }
-    if (props->type != 'f') {
+    if (props->type == 'i') {
         throwIllegalArgumentTruncate(env, sig);
         return;
     }
@@ -1056,7 +1104,17 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3FLMapper_TimeTag
 
     jfloat *array = (*env)->GetFloatArrayElements(env, value, 0);
     if (array) {
-        msig_update(sig, array, 0, ptt ? *ptt : MAPPER_NOW);
+        if (props->type == 'f') {
+            msig_update(sig, array, 0, ptt ? *ptt : MAPPER_NOW);
+        }
+        else {
+            double *arraycopy = malloc(sizeof(double)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (double)array[i];
+            msig_update(sig, arraycopy, 0, ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseFloatArrayElements(env, value, array, JNI_ABORT);
     }
 }
@@ -1073,7 +1131,7 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3DLMapper_TimeTag
         throwIllegalArgumentLength(env, sig, length);
         return;
     }
-    if (props->type != 'f') {
+    if (props->type == 'i') {
         throwIllegalArgumentTruncate(env, sig);
         return;
     }
@@ -1083,13 +1141,18 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update___3DLMapper_TimeTag
 
     jdouble *array = (*env)->GetDoubleArrayElements(env, value, 0);
     if (array) {
-        float *arraycopy = malloc(sizeof(float)*length);
-        int i;
-        for (i=0; i<length; i++)
-            arraycopy[i] = (float)array[i];
+        if (props->type == 'd') {
+            msig_update(sig, array, 0, ptt ? *ptt : MAPPER_NOW);
+        }
+        else {
+            float *arraycopy = malloc(sizeof(float)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (float)array[i];
+            msig_update(sig, arraycopy, 0, ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseDoubleArrayElements(env, value, array, JNI_ABORT);
-        msig_update(sig, arraycopy, 0, ptt ? *ptt : MAPPER_NOW);
-        free(arraycopy);
     }
 }
 
@@ -1156,6 +1219,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IILMappe
         float v = (float)value;
         msig_update_instance(sig, id, &v, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        double v = (double)value;
+        msig_update_instance(sig, id, &v, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IFLMapper_TimeTag_2
@@ -1178,6 +1245,10 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IFLMappe
     else if (props->type == 'f') {
         msig_update_instance(sig, id, &value, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        double v = (double)value;
+        msig_update_instance(sig, id, &v, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IDLMapper_TimeTag_2
@@ -1201,6 +1272,9 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__IDLMappe
         float v = (float)value;
         msig_update_instance(sig, id, &v, 1, ptt ? *ptt : MAPPER_NOW);
     }
+    else if (props->type == 'd') {
+        msig_update_instance(sig, id, &value, 1, ptt ? *ptt : MAPPER_NOW);
+    }
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3ILMapper_TimeTag_2
@@ -1233,6 +1307,15 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3ILMap
                                  ptt ? *ptt : MAPPER_NOW);
             free(arraycopy);
         }
+        else if (props->type == 'd') {
+            double *arraycopy = malloc(sizeof(double)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (double)array[i];
+            msig_update_instance(sig, id, arraycopy, 0,
+                                 ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseIntArrayElements(env, value, array, JNI_ABORT);
     }
 }
@@ -1249,7 +1332,7 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3FLMap
         throwIllegalArgumentLength(env, sig, length);
         return;
     }
-    if (props->type != 'f') {
+    if (props->type == 'i') {
         throwIllegalArgumentTruncate(env, sig);
         return;
     }
@@ -1259,7 +1342,18 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3FLMap
 
     jfloat *array = (*env)->GetFloatArrayElements(env, value, 0);
     if (array) {
-        msig_update_instance(sig, id, array, 0, ptt ? *ptt : MAPPER_NOW);
+        if (props->type == 'f') {
+            msig_update_instance(sig, id, array, 0, ptt ? *ptt : MAPPER_NOW);
+        }
+        else {
+            double *arraycopy = malloc(sizeof(double)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (double)array[i];
+            msig_update_instance(sig, id, arraycopy, 0,
+                                 ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseFloatArrayElements(env, value, array, JNI_ABORT);
     }
 }
@@ -1276,7 +1370,7 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3DLMap
         throwIllegalArgumentLength(env, sig, length);
         return;
     }
-    if (props->type != 'f') {
+    if (props->type == 'i') {
         throwIllegalArgumentTruncate(env, sig);
         return;
     }
@@ -1286,14 +1380,19 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_update_1instance__I_3DLMap
 
     jdouble *array = (*env)->GetDoubleArrayElements(env, value, 0);
     if (array) {
-        float *arraycopy = malloc(sizeof(float)*length);
-        int i;
-        for (i=0; i<length; i++)
-            arraycopy[i] = (float)array[i];
+        if (props->type == 'd') {
+            msig_update_instance(sig, id, array, 0, ptt ? *ptt : MAPPER_NOW);
+        }
+        else if (props->type == 'f') {
+            float *arraycopy = malloc(sizeof(float)*length);
+            int i;
+            for (i=0; i<length; i++)
+                arraycopy[i] = (float)array[i];
+            msig_update_instance(sig, id, arraycopy, 0,
+                                 ptt ? *ptt : MAPPER_NOW);
+            free(arraycopy);
+        }
         (*env)->ReleaseDoubleArrayElements(env, value, array, JNI_ABORT);
-        msig_update_instance(sig, id, arraycopy, 0,
-                             ptt ? *ptt : MAPPER_NOW);
-        free(arraycopy);
     }
 }
 
@@ -1362,25 +1461,35 @@ JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_value___3FLMapper_Time
         int i;
         switch (props->type)
         {
-        case 'i': {
-            int *value = msig_value(sig, &tt);
-            if (!value) {
-                (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jfloat)value[i];
-        } break;
-
-        case 'f': {
-            float *value = msig_value(sig, &tt);
-            if (!value) {
-                (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }            
-            for (i=0; i < props->length; i++)
-                array[i] = (jfloat)value[i];
-        } break;
+            case 'i': {
+                int *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
+
+            case 'f': {
+                float *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
+
+            case 'd': {
+                double *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
         }
 
         (*env)->ReleaseFloatArrayElements(env, ar, array, 0);
@@ -1421,25 +1530,35 @@ JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_value___3DLMapper_Time
         int i;
         switch (props->type)
         {
-        case 'i': {
-            int *value = msig_value(sig, &tt);
-            if (!value) {
-                (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jdouble)value[i];
-        } break;
-
-        case 'f': {
-            float *value = msig_value(sig, &tt);
-            if (!value) {
-                (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jdouble)value[i];
-        } break;
+            case 'i': {
+                int *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
+
+            case 'f': {
+                float *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
+
+            case 'd': {
+                double *value = msig_value(sig, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
         }
 
         (*env)->ReleaseDoubleArrayElements(env, ar, array, 0);
@@ -1525,25 +1644,35 @@ JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_instance_1value__I_3FL
         int i;
         switch (props->type)
         {
-        case 'i': {
-            int *value = msig_instance_value(sig, id, &tt);
-            if (!value) {
-                (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jfloat)value[i];
-        } break;
-
-        case 'f': {
-            float *value = msig_instance_value(sig, id, &tt);
-            if (!value) {
-                (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jfloat)value[i];
-        } break;
+            case 'i': {
+                int *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
+
+            case 'f': {
+                float *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
+
+            case 'd': {
+                double *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseFloatArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jfloat)value[i];
+            } break;
         }
 
         (*env)->ReleaseFloatArrayElements(env, ar, array, 0);
@@ -1584,25 +1713,35 @@ JNIEXPORT jboolean JNICALL Java_Mapper_Device_00024Signal_instance_1value__I_3DL
         int i;
         switch (props->type)
         {
-        case 'i': {
-            int *value = msig_instance_value(sig, id, &tt);
-            if (!value) {
-                (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jdouble)value[i];
-        } break;
-
-        case 'f': {
-            float *value = msig_instance_value(sig, id, &tt);
-            if (!value) {
-                (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
-                return JNI_FALSE;
-            }
-            for (i=0; i < props->length; i++)
-                array[i] = (jdouble)value[i];
-        } break;
+            case 'i': {
+                int *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
+
+            case 'f': {
+                float *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
+
+            case 'd': {
+                double *value = msig_instance_value(sig, id, &tt);
+                if (!value) {
+                    (*env)->ReleaseDoubleArrayElements(env, ar, array, JNI_ABORT);
+                    return JNI_FALSE;
+                }
+                for (i=0; i < props->length; i++)
+                    array[i] = (jdouble)value[i];
+            } break;
         }
 
         (*env)->ReleaseDoubleArrayElements(env, ar, array, 0);
@@ -1692,19 +1831,9 @@ JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1minimum
 {
     mapper_db_signal props = (mapper_db_signal)ptr_jlong(p);
 
-    if (props->minimum)
-    {
-        jclass cls = (*env)->FindClass(env, "java/lang/Double");
-        if (cls) {
-            jmethodID methodID = (*env)->GetMethodID(env, cls,
-                                                     "<init>", "(D)V");
-            if (methodID)
-                return (*env)->NewObject(env, cls, methodID,
-                                         *(props->minimum));
-        }
-    }
-
-    return 0;
+    if (!props->minimum)
+        return 0;
+    return build_PropertyValue(env, props->type, props->minimum, props->length);
 }
 
 JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1maximum
@@ -1712,19 +1841,9 @@ JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1maximum
 {
     mapper_db_signal props = (mapper_db_signal)ptr_jlong(p);
 
-    if (props->maximum)
-    {
-        jclass cls = (*env)->FindClass(env, "java/lang/Double");
-        if (cls) {
-            jmethodID methodID = (*env)->GetMethodID(env, cls,
-                                                     "<init>", "(D)V");
-            if (methodID)
-                return (*env)->NewObject(env, cls, methodID,
-                                         *(props->maximum));
-        }
-    }
-
-    return 0;
+    if (!props->maximum)
+        return 0;
+    return build_PropertyValue(env, props->type, props->maximum, props->length);
 }
 
 JNIEXPORT jdouble JNICALL Java_Mapper_Db_Signal_msig_1db_1signal_1get_1rate
@@ -1739,54 +1858,14 @@ JNIEXPORT jobject JNICALL Java_Mapper_Db_Signal_mapper_1db_1signal_1property_1lo
 {
     mapper_db_signal props = (mapper_db_signal)ptr_jlong(p);
     const char *cprop = (*env)->GetStringUTFChars(env, property, 0);
-    lo_type t;
-    const lo_arg *a;
+    char type;
+    int length;
+    const void *value;
     jobject o = 0;
 
-    if (mapper_db_signal_property_lookup(props, cprop, &t, &a))
-        goto done;
-
-    jmethodID methodID;
-    jclass cls = (*env)->FindClass(env, "Mapper/PropertyValue");
-    if (cls) {
-        switch (t) {
-        case 'i':
-            methodID = (*env)->GetMethodID(env, cls,
-                                           "<init>", "(CI)V");
-            if (methodID)
-                return (*env)->NewObject(env, cls, methodID, t, a->i);
-            break;
-        case 'f':
-            methodID = (*env)->GetMethodID(env, cls,
-                                           "<init>", "(CF)V");
-            if (methodID)
-                return (*env)->NewObject(env, cls, methodID, t, a->f);
-            break;
-        case 'd':
-            methodID = (*env)->GetMethodID(env, cls,
-                                           "<init>", "(CD)V");
-            if (methodID)
-                return (*env)->NewObject(env, cls, methodID, t, a->d);
-            break;
-        case 's':
-        case 'S':
-            methodID = (*env)->GetMethodID(env, cls,
-                                           "<init>", "(CLjava/lang/String;)V");
-            if (methodID) {
-                jobject s = (*env)->NewStringUTF(env, &a->s);
-                if (s)
-                    return (*env)->NewObject(env, cls, methodID, t, s);
-            }
-            break;
-        default:
-            // TODO handle all OSC types
-            // Not throwing an exception here because this data comes
-            // from the network: just ignore unknown types.
-            break;
-        }
-    }
+    if (!mapper_db_signal_property_lookup(props, cprop, &type, &value, &length))
+        o = build_PropertyValue(env, type, value, length);
 
-  done:
     (*env)->ReleaseStringUTFChars(env, property, cprop);
     return o;
 }
@@ -1839,7 +1918,8 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_set_1instance_1callback
   (JNIEnv *env, jobject obj, jint instance_id, jobject data)
 {
     mapper_signal sig = get_signal_from_jobject(env, obj);
-    if (!sig) return;
+    if (!sig)
+        return;
     jobject prev = (jobject)msig_get_instance_data(sig, instance_id);
     if (prev)
         (*env)->DeleteGlobalRef(env, prev);
@@ -1858,16 +1938,66 @@ JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_get_1instance_1callback
   (JNIEnv *env, jobject obj, jint instance_id)
 {
     mapper_signal sig = get_signal_from_jobject(env, obj);
-    if (!sig) return 0;
+    if (!sig)
+        return 0;
     return (jobject)msig_get_instance_data(sig, instance_id);
 }
 
-JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_reserve_1instances
+JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_reserve_1instances__I
   (JNIEnv *env, jobject obj, jint num)
 {
     mapper_signal sig = get_signal_from_jobject(env, obj);
-    if (!sig) return;
-    msig_reserve_instances(sig, num);
+    if (!sig)
+        return 0;
+    return msig_reserve_instances(sig, num, 0, 0);
+}
+
+JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_reserve_1instances___3I
+(JNIEnv *env, jobject obj, jintArray ids)
+{
+    mapper_signal sig = get_signal_from_jobject(env, obj);
+    if (!sig)
+        return 0;
+    int length = (*env)->GetArrayLength(env, ids);
+    jint *array = (*env)->GetIntArrayElements(env, ids, 0);
+    if (array) {
+        int reserved = msig_reserve_instances(sig, length, array, 0);
+        (*env)->ReleaseIntArrayElements(env, ids, array, JNI_ABORT);
+        return reserved;
+    }
+    return 0;
+}
+
+JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_reserve_1instances__ILMapper_InputListener_2
+(JNIEnv *env, jobject obj, jint num, jobject data)
+{
+    mapper_signal sig = get_signal_from_jobject(env, obj);
+    if (!sig)
+        return 0;
+    jobject ref = data ? (*env)->NewGlobalRef(env, data) : 0;
+    int i, reserved = 0;
+    for (i=0; i<num; i++)
+        reserved += msig_reserve_instances(sig, 1, 0, (void**)&ref);
+    return reserved;
+}
+
+JNIEXPORT jint JNICALL Java_Mapper_Device_00024Signal_reserve_1instances___3ILMapper_InputListener_2
+(JNIEnv *env, jobject obj, jintArray ids, jobject data)
+{
+    mapper_signal sig = get_signal_from_jobject(env, obj);
+    if (!sig)
+        return 0;
+    int length = (*env)->GetArrayLength(env, ids);
+    jint *array = (*env)->GetIntArrayElements(env, ids, 0);
+    if (array) {
+        jobject ref = data ? (*env)->NewGlobalRef(env, data) : 0;
+        int i, reserved = 0;
+        for (i=0; i<length; i++)
+            reserved += msig_reserve_instances(sig, 1, &array[i], (void**)&ref);
+        (*env)->ReleaseIntArrayElements(env, ids, array, JNI_ABORT);
+        return reserved;
+    }
+    return 0;
 }
 
 JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_release_1instance
@@ -1880,6 +2010,14 @@ JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_release_1instance
     msig_release_instance(sig, instance_id, ptt ? *ptt : MAPPER_NOW);
 }
 
+JNIEXPORT void JNICALL Java_Mapper_Device_00024Signal_remove_1instance
+(JNIEnv *env, jobject obj, jint instance_id)
+{
+    mapper_signal sig = get_signal_from_jobject(env, obj);
+    if (!sig) return;
+    msig_remove_instance(sig, instance_id);
+}
+
 JNIEXPORT jobject JNICALL Java_Mapper_Device_00024Signal_oldest_1active_1instance
   (JNIEnv *env, jobject obj)
 {
diff --git a/jni/test.java b/jni/test.java
index f504e72..36194f2 100644
--- a/jni/test.java
+++ b/jni/test.java
@@ -5,7 +5,7 @@ import java.util.Arrays;
 
 class test {
     public static void main(String [] args) {
-        final Device dev = new Device("javatest", 9000);
+        final Device dev = new Device("javatest");
 
         // This is how to ensure the device is freed when the program
         // exits, even on SIGINT.  The Device must be declared "final".
@@ -18,8 +18,9 @@ class test {
                     }
             });
 
-        Mapper.Device.Signal inp1 = dev.add_input("insig1", 1, 'f', "Hz", 2.0, null,
-            new InputListener() {
+        Mapper.Device.Signal inp1 = dev.add_input("insig1", 1, 'f', "Hz",
+                                                  new PropertyValue('f', 2.0),
+                                                  null, new InputListener() {
                 public void onInput(Mapper.Device.Signal sig,
                                     Mapper.Db.Signal props,
                                     int instance_id,
@@ -32,8 +33,12 @@ class test {
 
         System.out.println("Input signal name: "+inp1.name());
 
-        Signal out1 = dev.add_output("outsig1", 1, 'i', "Hz", 0.0, 1.0);
-        Signal out2 = dev.add_output("outsig2", 1, 'f', "Hz", 0.0, 1.0);
+        Signal out1 = dev.add_output("outsig1", 1, 'i', "Hz",
+                                     new PropertyValue('i', 0.0),
+                                     new PropertyValue('i', 1.0));
+        Signal out2 = dev.add_output("outsig2", 1, 'f', "Hz",
+                                     new PropertyValue(0.0f),
+                                     new PropertyValue(1.0f));
 
         System.out.println("Output signal index: "+out1.index());
         System.out.println("Zeroeth output signal name: "+dev.get_output_by_index(0).name());
@@ -44,22 +49,31 @@ class test {
         dev.set_property("deletethis", new PropertyValue("should not see me"));
         dev.remove_property("deletethis");
 
-        out1.set_property("width", new PropertyValue(128));
+        out1.set_property("width", new PropertyValue(new int[] {10, 11, 12}));
         out1.set_property("height", new PropertyValue(6.25));
-        out1.set_property("depth", new PropertyValue("test"));
+        out1.set_property("depth", new PropertyValue(new String[]{"one","two"}));
         out1.set_property("deletethis", new PropertyValue("or me"));
         out1.remove_property("deletethis");
+        out1.set_minimum(new PropertyValue(12));
 
-        System.out.println("Setting name of out1 to `/out1test'.");
+        System.out.println("Signal properties:");
+        System.out.println("  Setting name of out1 to `/out1test'.");
         out1.properties().set_name("/out1test");
-        System.out.println("Name of out1: " + out1.properties().name());
+        System.out.println("  Name of out1: " + out1.properties().name());
 
-        System.out.println("Looking up `height': "
+        System.out.println("  Looking up `height': "
                            + out1.properties().property_lookup("height"));
-        System.out.println("Looking up `width': "
+        System.out.println("  Looking up `width': "
                            + out1.properties().property_lookup("width"));
-        System.out.println("Looking up `depth': "
+        System.out.println("  Looking up `depth': "
                            + out1.properties().property_lookup("depth"));
+        System.out.println("  Looking up `deletethis': "
+                           + out1.properties().property_lookup("deletethis")
+                           + " (should be null)");
+        System.out.println("  Looking up minimum: "
+                           + out1.properties().minimum());
+        System.out.println("  Looking up maximum: "
+                           + out1.properties().maximum());
 
         System.out.println("Waiting for ready...");
         while (!dev.ready()) {
@@ -105,43 +119,55 @@ class test {
         System.out.println(inp1.name() + " allocation mode: "
                            + inp1.instance_allocation_mode());
 
-        out1.reserve_instances(3);
+        out1.reserve_instances(new int[]{10, 11, 12});
         out1.update_instance(10, -8);
         out1.update_instance(10, new int[]{-8});
         out1.instance_value(10, new int[]{0});
         out1.release_instance(10);
 
         out2.reserve_instances(3);
-        out2.update_instance(20, 14.2f);
-        out2.update_instance(20, new float[]{21.9f});
-        out2.instance_value(20, new float[]{0});
-        out2.update_instance(20, 12.3);
-        out2.update_instance(20, new double[]{48.12});
-        out2.instance_value(20, new double[]{0});
-        out2.release_instance(20);
-
-        System.out.println(inp1.name() + " instance 10 cb is "
-                           + inp1.get_instance_callback(10));
-        inp1.set_instance_callback(10, new InputListener() {
+        out2.update_instance(0, 14.2f);
+        out2.update_instance(1, new float[]{21.9f});
+        out2.instance_value(1, new float[]{0});
+        out2.update_instance(0, 12.3);
+        out2.update_instance(1, new double[]{48.12});
+        out2.instance_value(1, new double[]{0});
+        out2.release_instance(1);
+
+        inp1.reserve_instances(3, new InputListener() {
                 public void onInput(Mapper.Device.Signal sig,
                                     Mapper.Db.Signal props,
                                     int instance_id,
                                     float[] v,
                                     TimeTag tt) {
                     System.out.println("in onInput() for "
-                                       +props.name()+" instance 10: "
+                                       +props.name()+" instance "
+                                       +instance_id+": "
                                        +Arrays.toString(v));
                 }});
-        System.out.println(inp1.name() + " instance 10 cb is "
-                           + inp1.get_instance_callback(10));
-        inp1.set_instance_callback(10, null);
-        System.out.println(inp1.name() + " instance 10 cb is "
-                           + inp1.get_instance_callback(10));
+        System.out.println(inp1.name() + " instance 1 cb is "
+                           + inp1.get_instance_callback(1));
+        inp1.set_instance_callback(1, new InputListener() {
+                public void onInput(Mapper.Device.Signal sig,
+                                    Mapper.Db.Signal props,
+                                    int instance_id,
+                                    float[] v,
+                                    TimeTag tt) {
+                    System.out.println("in onInput() for "
+                                       +props.name()+" instance 1: "
+                                       +Arrays.toString(v));
+                }});
+        System.out.println(inp1.name() + " instance 1 cb is "
+                           + inp1.get_instance_callback(1));
+        inp1.set_instance_callback(1, null);
+        System.out.println(inp1.name() + " instance 1 cb is "
+                           + inp1.get_instance_callback(1));
 
+        out1.update(i);
         while (i >= 0) {
             System.out.print("Updated value to: " + i);
 
-            // Note, we are testing an implicit cast form int to float
+            // Note, we are testing an implicit cast from int to float
             // here because we are passing a double[] into
             // out1.value().
             if (out1.value(ar, tt))
diff --git a/jni/testquery.java b/jni/testquery.java
new file mode 100644
index 0000000..5ecfff7
--- /dev/null
+++ b/jni/testquery.java
@@ -0,0 +1,64 @@
+
+import Mapper.*;
+import Mapper.Device.*;
+import java.util.Arrays;
+
+class testquery {
+    public static void main(String [] args) {
+        final Device dev = new Device("javatestquery");
+
+        // This is how to ensure the device is freed when the program
+        // exits, even on SIGINT.  The Device must be declared "final".
+        Runtime.getRuntime().addShutdownHook(new Thread()
+            {
+                @Override
+                public void run()
+                    {
+                        dev.free();
+                    }
+            });
+
+        Mapper.Device.Signal inp1 = dev.add_input("insig1", 1, 'f', "Hz", null,
+                                                  null, new InputListener() {
+            public void onInput(Mapper.Device.Signal sig,
+                                Mapper.Db.Signal props,
+                                int instance_id,
+                                float[] v,
+                                TimeTag tt) {
+                    System.out.println("in onInput(): "+Arrays.toString(v));
+                }});
+
+        Signal out1 = dev.add_output("outsig1", 1, 'i', "Hz", null, null);
+        out1.set_callback(
+            new InputListener() {
+            public void onInput(Mapper.Device.Signal sig,
+                                Mapper.Db.Signal props,
+                                int instance_id,
+                                int[] v,
+                                TimeTag tt) {
+                    System.out.println("in onQueryResponse(): "+Arrays.toString(v));
+                }});
+
+        System.out.println("Waiting for ready...");
+        while (!dev.ready()) {
+            dev.poll(100);
+        }
+        System.out.println("Device is ready.");
+
+        System.out.println("Device name: "+dev.name());
+        System.out.println("Device port: "+dev.port());
+        System.out.println("Device ordinal: "+dev.ordinal());
+        System.out.println("Device interface: "+dev.iface());
+        System.out.println("Device ip4: "+dev.ip4());
+
+        int i = 100;
+        while (--i >= 0) {
+            dev.poll(100);
+            inp1.update(new float[] {i});
+            System.out.println("  Updated input value: " + i);
+            System.out.println("  Querying...");
+            out1.query_remotes();
+        }
+        dev.free();
+    }
+}
diff --git a/jni/testreverse.java b/jni/testreverse.java
new file mode 100644
index 0000000..5b0c65f
--- /dev/null
+++ b/jni/testreverse.java
@@ -0,0 +1,62 @@
+
+import Mapper.*;
+import Mapper.Device.*;
+import java.util.Arrays;
+
+class testreverse {
+    public static void main(String [] args) {
+        final Device dev = new Device("javatestreverse");
+
+        // This is how to ensure the device is freed when the program
+        // exits, even on SIGINT.  The Device must be declared "final".
+        Runtime.getRuntime().addShutdownHook(new Thread()
+            {
+                @Override
+                public void run()
+                    {
+                        dev.free();
+                    }
+            });
+
+        Mapper.Device.Signal inp1 = dev.add_input("insig1", 1, 'f', "Hz", null,
+                                                  null, new InputListener() {
+                public void onInput(Mapper.Device.Signal sig,
+                                    Mapper.Db.Signal props,
+                                    int instance_id,
+                                    float[] v,
+                                    TimeTag tt) {
+                    System.out.println("in onInput(): "+Arrays.toString(v));
+                }});
+
+        Signal out1 = dev.add_output("outsig1", 1, 'i', "Hz", null, null);
+        out1.set_callback(
+            new InputListener() {
+                public void onInput(Mapper.Device.Signal sig,
+                                    Mapper.Db.Signal props,
+                                    int instance_id,
+                                    int[] v,
+                                    TimeTag tt) {
+                    System.out.println("in onOutput(): "+Arrays.toString(v));
+                }});
+
+        System.out.println("Waiting for ready...");
+        while (!dev.ready()) {
+            dev.poll(100);
+        }
+        System.out.println("Device is ready.");
+
+        System.out.println("Device name: "+dev.name());
+        System.out.println("Device port: "+dev.port());
+        System.out.println("Device ordinal: "+dev.ordinal());
+        System.out.println("Device interface: "+dev.iface());
+        System.out.println("Device ip4: "+dev.ip4());
+
+        int i = 100;
+        while (i >= 0) {
+            dev.poll(100);
+            --i;
+            inp1.update(new int[] {i});
+        }
+        dev.free();
+    }
+}
diff --git a/libtool b/libtool
deleted file mode 100755
index 6c29629..0000000
--- a/libtool
+++ /dev/null
@@ -1,10249 +0,0 @@
-#! /bin/bash
-
-# libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (libmapper) 0.3
-# Libtool was configured on host minipod:
-# 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, 2011 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="CXX "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Whether or not to build static libraries.
-build_old_libs=no
-
-# Whether or not to build shared libraries.
-build_libtool_libs=yes
-
-# Assembler program.
-AS="as"
-
-# DLL creation program.
-DLLTOOL="dlltool"
-
-# Object dumper program.
-OBJDUMP="objdump"
-
-# Which release of libtool.m4 was used?
-macro_version=2.4.2
-macro_revision=1.3337
-
-# What type of objects to build.
-pic_mode=default
-
-# Whether or not to optimize for fast installation.
-fast_install=yes
-
-# Shell to use when invoking shell scripts.
-SHELL="/bin/bash"
-
-# An echo program that protects backslashes.
-ECHO="printf %s\\n"
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=":"
-
-# The host system.
-host_alias=
-host=i686-pc-linux-gnu
-host_os=linux-gnu
-
-# The build system.
-build_alias=
-build=i686-pc-linux-gnu
-build_os=linux-gnu
-
-# A sed program that does not truncate output.
-SED="/bin/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="/bin/grep"
-
-# An ERE matcher.
-EGREP="/bin/grep -E"
-
-# A literal string matcher.
-FGREP="/bin/grep -F"
-
-# A BSD- or MS-compatible name lister.
-NM="/usr/bin/nm -B"
-
-# Whether we need soft or hard links.
-LN_S="ln -s"
-
-# What is the maximum length of a command?
-max_cmd_len=1572864
-
-# Object file suffix (normally "o").
-objext=o
-
-# Executable file suffix (normally "").
-exeext=
-
-# whether the shell understands "unset".
-lt_unset=unset
-
-# turn spaces into newlines.
-SP2NL="tr \\040 \\012"
-
-# turn newlines into spaces.
-NL2SP="tr \\015\\012 \\040\\040"
-
-# convert $build file names to $host format.
-to_host_file_cmd=func_convert_file_noop
-
-# convert $build files to toolchain format.
-to_tool_file_cmd=func_convert_file_noop
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method="pass_all"
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd="\$MAGIC_CMD"
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=""
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob="no"
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd="printf %s\\n"
-
-# The archiver.
-AR="ar"
-
-# Flags to create an archive.
-AR_FLAGS="cru"
-
-# How to feed a file listing to the archiver.
-archiver_list_spec="@"
-
-# A symbol stripping program.
-STRIP="strip"
-
-# Commands used to install an old-style archive.
-RANLIB="ranlib"
-old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
-old_postuninstall_cmds=""
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=no
-
-# A C compiler.
-LTCC="gcc -std=gnu99"
-
-# LTCC compiler flags.
-LTCFLAGS="-I. -g -O2 -DNDEBUG"
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"
-
-# Specify filename containing input files for $NM.
-nm_file_list_spec="@"
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=
-
-# The name of the directory that contains temporary libtool files.
-objdir=.libs
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=file
-
-# Must we lock files when doing compilation?
-need_locks="no"
-
-# Manifest tool.
-MANIFEST_TOOL=":"
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=""
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=""
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=""
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=""
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=""
-
-# Old archive suffix (normally "a").
-libext=a
-
-# Shared library suffix (normally ".so").
-shrext_cmds=".so"
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=""
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=no
-
-# Do we need a version for libraries?
-need_version=no
-
-# Library versioning type.
-version_type=linux
-
-# Shared library runtime path variable.
-runpath_var=LD_RUN_PATH
-
-# Shared library path variable.
-shlibpath_var=LD_LIBRARY_PATH
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=no
-
-# Format of library name prefix.
-libname_spec="lib\$name"
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
-
-# The coded name of the library, if different from the real name.
-soname_spec="\${libname}\${release}\${shared_ext}\$major"
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=""
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=""
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=""
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=""
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=yes
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec="/usr/lib/gcc/i686-linux-gnu/4.7 /usr/lib/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib "
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/i386-linux-gnu/mesa /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib "
-
-# Whether dlopen is supported.
-dlopen_support=unknown
-
-# Whether dlopen of programs is supported.
-dlopen_self=unknown
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=unknown
-
-# Commands to strip libraries.
-old_striplib="strip --strip-debug"
-striplib="strip --strip-unneeded"
-
-
-# The linker used to build libraries.
-LD="/usr/bin/ld"
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# Commands used to build an old-style archive.
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
-
-# A language specific compiler.
-CC="gcc -std=gnu99"
-
-# Is the compiler the GNU compiler?
-with_gcc=yes
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=" -fno-builtin"
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC -DPIC"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag="-static"
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=no
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=no
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object="no"
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build a shared archive.
-archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
-	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
-	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
-	    \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=""
-module_expsym_cmds=""
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld="yes"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that enforces no undefined symbols.
-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="\${wl}-rpath \${wl}\$libdir"
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=no
-
-# 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=no
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=no
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=no
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=no
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=no
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=""
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=""
-
-# Specify filename containing input files.
-file_list_spec=""
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=""
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=""
-postdep_objects=""
-predeps=""
-postdeps=""
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=""
-
-# ### END LIBTOOL CONFIG
-
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 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.
-
-# 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)
-#       --no-warn            don't display warning messages
-#       --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.2 Debian-2.4.2-1ubuntu2
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool at 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.2 Debian-2.4.2-1ubuntu2"
-TIMESTAMP=""
-package_revision=1.3337
-
-# 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'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${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 ()
-{
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-} # Extended-shell func_dirname implementation
-
-
-# func_basename file
-func_basename ()
-{
-    func_basename_result="${1##*/}"
-} # Extended-shell func_basename 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 ()
-{
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"
-} # Extended-shell func_dirname_and_basename 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 ()
-{
-    # 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
-
-
-# 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=${PATH_SEPARATOR-:}
-     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-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-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 ()
-{
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
-} # Extended-shell func_split_short_opt 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 ()
-{
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}
-} # Extended-shell func_split_long_opt 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}+=\${2}"
-} # Extended-shell func_append 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}+=\\ \$func_quote_for_eval_result"
-} # Extended-shell func_append_quoted implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-    func_arith_result=$(( $* ))
-} # Extended-shell func_arith implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=${#1}
-} # Extended-shell func_len implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac
-} # Extended-shell func_lo2o implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=${1%.*}.lo
-} # Extended-shell func_xform 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_warning=:
-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
-preserve_args+=" $opt"
-			;;
-      --no-warning|--no-warn)
-			opt_warning=false
-preserve_args+=" $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-preserve_args+=" $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-preserve_args+=" $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-preserve_args+=" $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-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" = : || 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_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)
-          pie_flag+=" $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  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.
-	  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 | *.go | *.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
-      removelist+=" $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    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
-	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
-	command+=" -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      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
-	  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
-	libdirs+=" $opt"
-
-      elif test -f "$opt"; then
-	if func_lalib_unsafe_p "$opt"; then
-	  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" || 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"
-    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
-	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"
-      install_prog+=" $func_quote_for_eval_result"
-      if test -n "$arg2"; then
-	func_quote_for_eval "$arg2"
-      fi
-      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"
-	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.
-	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 "*) ;;
-	  *) current_libdirs+=" $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs+=" $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	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" && 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_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $tool_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) ;;
-	  *) 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 ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  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 -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            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
-      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)
-	  compile_command+=" @OUTPUT@"
-	  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.
-	    compile_command+=" @SYMFILE@"
-	    finalize_command+=" @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles+=" $arg"
-	    else
-	      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 "*) ;;
-		*) 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
-#	      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
-		      dlfiles+=" $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles+=" $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  libobjs+=" $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  non_pic_objects+=" $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  non_pic_objects+=" $non_pic_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
-		  libobjs+=" $pic_object"
-		  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 "*) ;;
-	    *) rpath+=" $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath+=" $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs+=" $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags+=" $qarg"
-	  compiler_flags+=" $qarg"
-	  prev=
-	  compile_command+=" $qarg"
-	  finalize_command+=" $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags+=" $qarg"
-	  prev=
-	  compile_command+=" $qarg"
-	  finalize_command+=" $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags+=" $qarg"
-	  compiler_flags+=" $wl$qarg"
-	  prev=
-	  compile_command+=" $wl$qarg"
-	  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.
-	  compile_command+=" $link_static_flag"
-	  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*)
-	  compile_command+=" $arg"
-	  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]:[\\/]* | =*) deplibs+=" $arg" ;;
-	    *) deplibs+=" -L$dir" ;;
-	  esac
-	  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;;
-	  *) dllsearchpath+=":$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) 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
-	    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
-	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)
-	compiler_flags+=" $arg"
-	compile_command+=" $arg"
-	finalize_command+=" $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	compiler_flags+=" $arg"
-	compile_command+=" $arg"
-	finalize_command+=" $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) 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 "*) ;;
-	*) 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"
-	  arg+=" $func_quote_for_eval_result"
-	  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"
-	  arg+=" $wl$func_quote_for_eval_result"
-	  compiler_flags+=" $wl$func_quote_for_eval_result"
-	  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"
-        compile_command+=" $arg"
-        finalize_command+=" $arg"
-        compiler_flags+=" $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	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
-		dlfiles+=" $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      dlprefiles+=" $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    libobjs+=" $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    non_pic_objects+=" $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    non_pic_objects+=" $non_pic_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
-	    libobjs+=" $pic_object"
-	    non_pic_objects+=" $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	deplibs+=" $arg"
-	old_deplibs+=" $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles+=" $func_resolve_sysroot_result"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles+=" $func_resolve_sysroot_result"
-	  prev=
-	else
-	  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
-	compile_command+=" $arg"
-	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\"
-      compile_command+=" $arg"
-      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 "*) specialdeplibs+=" $deplib" ;;
-	esac
-      fi
-      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 "*) specialdeplibs+=" $pre_post_deps" ;;
-	  esac
-	  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 "*) ;;
-	    *) 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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags+=" $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) 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 "*) ;;
-		    * ) 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"
-	    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"
-	    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 "*) ;;
-	    *) 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.
-	      newdlprefiles+=" $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      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 "*) ;;
-	      *) 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" && dlfiles+=" $dlopen"
-	  test -n "$dlpreopen" && 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.
-	    convenience+=" $ladir/$objdir/$old_library"
-	    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 "*) specialdeplibs+=" $deplib" ;;
-		esac
-	      fi
-	      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.
-	    dlprefiles+=" $lib $dependency_libs"
-	  else
-	    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
-	    notinst_path+=" $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    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"
-	        newdlprefiles+=" $dir/$linklib"
-	      else
-	        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" && \
-	          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
-	        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" && \
-	          dlpreconveniencelibs+=" $dir/$old_library"
-	      # Otherwise, use the dlname, so that lt_dlopen finds it.
-	      elif test -n "$dlname"; then
-	        newdlprefiles+=" $dir/$dlname"
-	      else
-	        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
-	  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"
-	         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 "*) specialdeplibs+=" $deplib" ;;
-	      esac
-	    fi
-	    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:"*) ;;
-	      *) temp_rpath+="$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath+=" $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) 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
-	      notinst_deplibs+=" $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      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 "*) ;;
-	      *) compile_rpath+=" $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) 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$absdir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      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:"*) ;;
-	      *) compile_shlibpath+="$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) finalize_shlibpath+="$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:"*) ;;
-	      *) finalize_shlibpath+="$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    add_dir+=" -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 "*) ;;
-		   *) xrpath+=" $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs+=" $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  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 "*)
-                specialdeplibs+=" $func_resolve_sysroot_result" ;;
-	      esac
-	    fi
-	    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
-		      compiler_flags+=" ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      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 "*) ;;
-	    *) lib_search_path+=" $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) tmp_libs+=" $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs+=" $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  tmp_libs+=" $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"
-      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!"
-	  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
-	  # correct linux to gnu/linux during the next big refactor
-	  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) # correct to gnu/linux during the next big refactor
-	  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.
-	  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"
-      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
-	       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
-	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"
-	  temp_xrpath+=" -R$func_replace_sysroot_result"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath+=" $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) dlfiles+=" $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) dlprefiles+=" $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
-	    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
-	      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 "*)
-		    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
-		    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
-		;;
-	      *)
-		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 "*)
-		      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
-		      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
-		;;
-	      *)
-		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 "*)
-		  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
-			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.
-	      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 "*)
-		  newdeplibs+=" $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs+=" $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.
-	      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 "*)
-	    new_libs+=" -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs+=" $deplib" ;;
-	  esac
-	  ;;
-	*) 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
-	# Remove ${wl} instances when linking with ld.
-	# FIXME: should test the right _cmds variable.
-	case $archive_cmds in
-	  *\$LD\ *) wl= ;;
-        esac
-	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"*)
-		    ;;
-		  *)
-		    hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath+=" $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) 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 "dep_rpath=\"$hardcode_libdir_flag_spec\""
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      rpath+="$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
-	  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"
-	  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
-		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
-	  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 "*) ;;
-	  *)
-	    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"
-	    generated+=" $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    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\"
-	  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
-	    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
-	    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
-		  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
-	      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
-	      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"
-	  generated+=" $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  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"
-	  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])
-	      compile_command+=" ${wl}-bind_at_load"
-	      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 "*)
-	    new_libs+=" -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs+=" $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs+=" $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command+=" $compile_deplibs"
-      finalize_command+=" $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath+=" $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath+=" $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) 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;;
-	  *) dllsearchpath+=":$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath+=":$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath+=" $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) 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
-	    rpath+="$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    rpath+="$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
-	    oldobjs+=" $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated+=" $gentop"
-
-	func_extract_archives $gentop $addlibs
-	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"
-	  generated+=" $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  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"
-	  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"
-	      oldobjs+=" $gentop/$newobj"
-	      ;;
-	    *) oldobjs+=" $obj" ;;
-	    esac
-	  done
-	fi
-	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-	tool_oldlib=$func_to_tool_file_result
-	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
-	    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"
-		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs+=" ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      -L*)
-		func_stripname -L '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		newdependency_libs+=" -L$func_replace_sysroot_result"
-		;;
-	      -R*)
-		func_stripname -R '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		newdependency_libs+=" -R$func_replace_sysroot_result"
-		;;
-	      *) 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"
-		newdlfiles+=" ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      *) 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"
-		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
-	      newdlfiles+=" $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      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) RM+=" $arg"; rmforce=yes ;;
-      -*) RM+=" $arg" ;;
-      *) 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 "*) ;;
-	  *) 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
-	    rmfiles+=" $odir/$n"
-	  done
-	  test -n "$old_library" && rmfiles+=" $odir/$old_library"
-
-	  case "$opt_mode" in
-	  clean)
-	    case " $library_names " in
-	    *" $dlname "*) ;;
-	    *) test -n "$dlname" && rmfiles+=" $odir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && 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
-	    rmfiles+=" $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles+=" $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
-	    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
-	      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
-	    rmfiles+=" $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles+=" $odir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      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
-
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD="/usr/bin/ld"
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# Commands used to build an old-style archive.
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
-
-# A language specific compiler.
-CC="g++"
-
-# Is the compiler the GNU compiler?
-with_gcc=yes
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=" -fno-builtin"
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC -DPIC"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag="-static"
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=no
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=no
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object="no"
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build a shared archive.
-archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="\$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"
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=""
-module_expsym_cmds=""
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld="yes"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that enforces no undefined symbols.
-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="\${wl}-rpath \${wl}\$libdir"
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=no
-
-# 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=no
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=no
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=no
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=no
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=no
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=""
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=""
-
-# Specify filename containing input files.
-file_list_spec=""
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs="/usr/lib/gcc/i686-linux-gnu/4.7 /usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu /usr/lib/gcc/i686-linux-gnu/4.7/../../../../lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /usr/lib/gcc/i686-linux-gnu/4.7/../../.."
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects="/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/4.7/crtbeginS.o"
-postdep_objects="/usr/lib/gcc/i686-linux-gnu/4.7/crtendS.o /usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crtn.o"
-predeps=""
-postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path="-L/usr/lib/gcc/i686-linux-gnu/4.7 -L/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.7/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/4.7/../../.."
-
-# ### END LIBTOOL TAG CONFIG: CXX
diff --git a/ltmain.sh b/ltmain.sh
deleted file mode 100644
index 0096fe6..0000000
--- a/ltmain.sh
+++ /dev/null
@@ -1,9661 +0,0 @@
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 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.
-
-# 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)
-#       --no-warn            don't display warning messages
-#       --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.2 Debian-2.4.2-1ubuntu2
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool at 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.2 Debian-2.4.2-1ubuntu2"
-TIMESTAMP=""
-package_revision=1.3337
-
-# 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'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${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=${PATH_SEPARATOR-:}
-     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-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-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_warning=:
-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-warning|--no-warn)
-			opt_warning=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 | *.go | *.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_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $tool_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 ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  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 -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  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$absdir"
-		# 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
-	  # correct linux to gnu/linux during the next big refactor
-	  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) # correct to gnu/linux during the next big refactor
-	  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
-	# Remove ${wl} instances when linking with ld.
-	# FIXME: should test the right _cmds variable.
-	case $archive_cmds in
-	  *\$LD\ *) wl= ;;
-        esac
-	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_append 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 "dep_rpath=\"$hardcode_libdir_flag_spec\""
-	  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
-	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-	tool_oldlib=$func_to_tool_file_result
-	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"
-		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-		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
deleted file mode 100644
index 828104c..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,8001 +0,0 @@
-# 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, 2011 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, 2011 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([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-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 at 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) 2011 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)],
-  [Go],			[_LT_LANG(GO)],
-  [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
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC],     [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-  fi
-fi
-if test -z "$GOC"; then
-  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _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([AC_PROG_GO],
-  [LT_LANG(GO)],
-  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-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 there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 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 -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; 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([TAG])
-# ---------------------------------
-# 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\"`'
-    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-  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
-  ;;
-*-*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*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	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 \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_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
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  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"`env 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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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
-  ;;
-
-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[[23]].*) 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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-	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 glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-    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 # correct to gnu/linux during the next big refactor
-  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 # correct to gnu/linux during the next big refactor
-  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 at 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 glibc/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};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /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 at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _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 at _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 '
-      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-      fi
-      ;;
-    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\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-	  # 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\ F* | *Sun*Fortran*)
-	  _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 '
-	  ;;
-	*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,'
-	  ;;
-        *Intel*\ [[CF]]*Compiler*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	  ;;
-	*Portland\ Group*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  ;;
-	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 at 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 at 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(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      _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_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 at 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)='${wl}-rpath ${wl}$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(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	_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
-      ;;
-
-    # 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_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_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_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 at 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
-        ;;
-
-      freebsd2.*)
-        # 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
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-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_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_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_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# 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=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# Go 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_GO_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_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# 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
deleted file mode 100644
index 5d9acd8..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,384 +0,0 @@
-# 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@<:@=PKGS@:>@],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [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
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# 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
deleted file mode 100644
index 07a8602..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_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
deleted file mode 100644
index c573da9..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# 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
deleted file mode 100755
index 86a8fc3..0000000
--- a/missing
+++ /dev/null
@@ -1,331 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2012-01-06.13; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at 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
-  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 at 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.
-    ;;
-
-  *)
-    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
-    ;;
-
-  *)
-    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/notes/DOT-messages.txt b/notes/DOT-messages.txt
new file mode 100644
index 0000000..b11e11e
--- /dev/null
+++ b/notes/DOT-messages.txt
@@ -0,0 +1,210 @@
+name_allocation - multicast group 224.0.1.3 port 7571
+{
+	ID = random_number
+	SEND: "/name/request <class> <ID>"
+	if ((receive "/name/available <tentative_name> <number>") AND (<number> == <ID>))
+		SEND: "/name/probe <tentative_name>"
+	else if timeout
+	{
+		tentative_name = class.<ordinal>
+		SEND: "/name/probe <tentative_name>"
+	}
+	
+	while (got_name==0)
+	{
+		if ((receive "/name/registered <name>" AND (<name> == <tentative_name>))
+		{
+			choose new tentative_name by changing <ordinal>
+			SEND: "/name/probe <tentative_name>"
+		}
+		else if timeout
+		{
+			my_name = tentative_name
+			SEND: "/name/registered <my_name>"
+			got_name = 1
+		}
+	}
+	while(1) 
+	{
+		if ((receive "/name/probe <my_name>")
+			SEND: "/name/registered <my_name>"
+			
+		if (<ordinal>==1)			// become name request server for <class>
+			switch (received OSC)
+			{
+				CASE: "/name/registered <class>.<ordinal>"
+					if (<class>==<myclass>)
+						store <ordinal> for reference
+					break
+				CASE: "/name/request <class> <ID>"
+					if (<class>==<my_class>)
+					{
+						choose an unused ordinal
+						SEND: "/name/available <class>.<suggested_ordinal> <ID>"
+					}
+					break
+			}
+		}
+	}
+}
+
+port_allocation - multicast group 224.0.1.3 port 7572
+{
+	ID = random_number
+	SEND: "/port/request <ID>"
+	if ((receive "/port/available <tentative_port> <number>") AND (<number> == <ID>))
+		SEND: "/port/probe <tentative_port>"
+	
+	while (got_port==0)
+	{
+		if ((receive "/port/registered <port>") AND (<port> == <tentative_port>))
+		{
+			choose new tentative_port
+			SEND: "/port/probe <tentative_port>"
+		}
+		else if timeout
+		{
+			my_port = tentative_port
+			SEND: "/port/registered <my_port>"
+			got_port = 1
+		}
+	}
+	
+	while(1) 
+	{
+		if ((receive "/port/probe <my_port>")
+			SEND: "/port/registered <my_port>"
+	
+		if <my_port> = starting port	// become port request server
+		{
+			switch (received OSC)
+			{
+				CASE: "/port/registered <port>"
+					store <port> for reference
+					break
+				CASE: "/port/request <ID>"
+					choose an unsused port
+					SEND: "/port/available <suggested_port> <ID>"
+					break
+			}
+		}
+	}
+}
+
+mapping administration - multicast group 224.0.1.3 port 7570
+{
+	once port and name are established
+		SEND: "/who"
+	when destroyed
+		SEND: "/logout <my_name>"
+
+	switch (received OSC)
+	{
+		CASE: "/who"
+			SEND: "/registered <my_name> @numInputs <numInputs> @numOutputs <numOutputs> @IP <IP> @port <my_port> @canAlias <canAlias> @hash <hash>"
+			break
+*		CASE: "/registered <name> @numInputs <numInputs> @numOutputs <numOutputs> @IP <IP> @port <port>" AND <name>!=my_name
+			store name, IP, and port for reference
+			break
+			
+		CASE: "/my_name/info/get"
+			SEND: "/registered <my_name> @numInputs <numInputs> @numOutputs <numOutputs> @IP <IP> @port <my_port> @canAlias <canAlias> @hash <hash>"
+			break
+		CASE: "/my_name/namespace/get"
+			for (parameters)
+				SEND: "/my_name/namespace/<input/output> /<parameter_name> @type <dataType> @units <units> @minimum <minimum> @maximum <maximum>"
+			break
+		CASE: "/my_name/namespace/input/get"
+			for (input parameters)
+				SEND: "/my_name/namespace/input /<parameter_name> @type <dataType> @units <units> @minimum <minimum> @maximum <maximum>"
+			break
+		CASE: "/my_name/namespace/output/get"
+			for (output parameters)
+				SEND: "/my_name/namespace/output /<parameter_name> @type <dataType> @units <units> @minimum <minimum> @maximum <maximum>"
+			break
+*		CASE: "/<device_name>/namespace/<input/output> <namespace and meta-data>
+			break
+		CASE: "/link /<other_device> /my_name"
+			if (not already linked)
+			{
+				SEND: "/link_to /<other_device> /my_name @IP <IP> @port <port> @type <type> @min <min> @max <max>
+			}
+		CASE: "/link_to /my_name /<other_device> <properties>"
+			if (not already linked)
+			{
+				create network link to device
+				SEND: "/linked /my_name /<other_device>"
+			}
+			break
+		CASE: "/unlink /my_name /<other_device>"
+			destroy network link to other device
+			SEND: "/unlinked /my_name /<other_device>"
+			break
+*		CASE: "/unlinked /<device1> <device2>
+			break;
+		CASE: "/unlink /<other_device> /my_name"
+			destroy feedback network link to other device
+			SEND: "/fb/unlinked /my_name /<other_device>"
+			break
+			
+		CASE: "/my_name/links/get" OR "/*/links/get"
+			for (links_to_other_devices)
+				SEND: "/linked /my_name /<other_device>"
+			break
+			
+		CASE: "/connect /<other_device>/<src_parameter_name> /my_name/<dest_parameter_name> [optional properties: @scaling, @range, @expression, @clipMin, @clipMax]"
+			if (<dest_parameter_name> exists)
+				create feedback mapping connection
+				SEND: "/connect_to /<other_device>/<src_parameter_name> /my_name/<dest_parameter_name> @type <my_type> @range <my_range>"
+			break
+		CASE: "/connect_to /my_name/<src_parameter_name> /<other_device>/<dest_parameter_name> [optional properties: @scaling, @range, @expression, @clipMin, @clipMax @canAlias]"
+			if (<src_parameter_name> exists)
+			{
+				create mapping connection
+				SEND: "/connected /my_name/<parameter_name> /<other_device>/<parameter_name> @scaling <bypass|mute|linear|expression|calibrate> @range <source_min> <source_max> <dest_min> <dest_max> @expression <expression> @clipMin <none/mute/clamp/wrap/fold> @clipMax <none/mute/clamp/wrap/fold>"
+			}
+			break
+*		CASE: "/connected /<other_device>/<src_parameter_name> /my_name/<dest_parameter_name> [optional properties: @scaling, @range, @expression, @clipMin, @clipMax @canAlias]"
+			break
+		CASE: "/disconnect /my_name/<parameter_name> /<other_device>/<parameter_name>"
+			destroy mapping connection
+			SEND: "/disconnected /my_name/<parameter_name> /<other_device>/<parameter_name>"
+			break
+*		CASE: "/disconnected <device1> <device2>
+			break
+
+		CASE: "/my_name/connections/get"
+			for (connections)
+			{
+				SEND: "/connected /my_name/<parameter_name> /<other_device>/<parameter_name> @scaling <bypass|mute|linear|expression|calibrate> @range <source_min> <source_max> <dest_min> <dest_max> @expression <expression> @clipMin <none|mute|clamp|wrap|fold> @clipMax <none|mute|clamp|wrap|fold>"
+			}
+			break
+
+		CASE: "/connection/modify /my_name/<parameter_name> /<other_device>/<parameter_name> [connection properties]"
+			alter mapping connection per received properties
+			SEND: "/connected /my_name/<parameter_name> /<other_device>/<parameter_name> @scaling <bypass|mute|linear|expression|calibrate> @range <source_min> <source_max> <dest_min> <dest_max> @expression <expression> @clipMin <none|mute|clamp|wrap|fold> @clipMax <none|mute|clamp|wrap|fold>"
+			break
+	}
+}
+
+GUI - multicast group 224.0.1.3 port 7570
+{
+	on load:
+		SEND: "/who"
+	switch (received OSC)
+	{
+		CASE: "/registered <name> @numInputs <numInputs> @numOutputs <numOutputs> @IP <IP> @port <port>" AND <name>!=my_name
+			store name, IP, and port for reference
+			break
+		CASE: "/<device_name>/namespace/<input/output> /<device_name>.ID/<parameter_name> [optional properties: @type, @units, @min, @max]"
+			break
+		CASE: "/linked /<device1> <device2>
+			break;
+		CASE: "/unlinked /<device1> <device2>
+			break;
+		CASE: "/connected /<other_device>/<src_parameter_name> /my_name/<dest_parameter_name> [optional properties: @scaling, @range, @expression, @clipMin, @clipMax @canAlias]"
+			break
+		CASE: "/disconnected <device1> <device2>
+			break
+	}
+}
\ No newline at end of file
diff --git a/notes/GUI-messages.txt b/notes/GUI-messages.txt
new file mode 100644
index 0000000..f2f4b92
--- /dev/null
+++ b/notes/GUI-messages.txt
@@ -0,0 +1,20 @@
+GUI - multicast group 224.0.1.3 port 7570
+{
+	on load:
+		SEND: "/who"
+	switch (received OSC)
+	{
+		CASE: "/registered <device_name> [optional properties: @numInputs @numOutputs @IP @port @canAlias]"
+			break
+		CASE: "/<device_name>/namespace/<input/output> /<device_name>.ID/<parameter_name> [optional properties: @type, @units, @min, @max]"
+			break
+		CASE: "/linked /<device1_name> /<device2_name>"
+			break;
+		CASE: "/unlinked /<device1_name> /<device2_name>"
+			break;
+		CASE: "/connected /<device1_name>/<parameter_name> /device2_name/<parameter_name> [optional properties: @scaling, @range, @expression, @clipMin, @clipMax @canAlias]"
+			break
+		CASE: "/disconnected /<device1_name>/<parameter_name> /device2_name/<parameter_name>"
+			break
+	}
+}
\ No newline at end of file
diff --git a/notes/behaviour.hs b/notes/behaviour.hs
new file mode 100644
index 0000000..6d98495
--- /dev/null
+++ b/notes/behaviour.hs
@@ -0,0 +1,97 @@
+
+import IO
+
+data SignalUnits = NA | Normalized | Boolean deriving (Show, Eq)
+
+data SignalValue = SignalInt Int | SignalFloat Float | Empty deriving (Show)
+
+toSignalFloat :: SignalValue -> SignalValue
+toSignalFloat (SignalInt i) = SignalFloat (fromIntegral i)
+toSignalFloat (SignalFloat f) = SignalFloat f
+toSignalFloat Empty = Empty
+
+instance Eq SignalValue where
+    _ == Empty = False
+    Empty == _ = False
+    (SignalInt a) == (SignalInt b) = a == b
+    (SignalFloat a) == (SignalFloat b) = a == b
+    a == b = (toSignalFloat a) == (toSignalFloat b)
+
+-- Type of signal is 'f' or 'i' with an optional array size.
+data SignalType = SigTypeFloat (Maybe Int) | SigTypeInt (Maybe Int)
+    deriving (Eq)
+
+instance Show SignalType where
+    show (SigTypeInt Nothing) = "i"
+    show (SigTypeFloat Nothing) = "f"
+    show (SigTypeInt (Just i)) = ("i["++(show i)++"]")
+    show (SigTypeFloat (Just i)) = ("f["++(show i)++"]")
+
+data Signal = Signal {
+      sigName :: String,
+      sigMin :: SignalValue,
+      sigMax :: SignalValue,
+      sigUnits :: SignalUnits,
+      sigType :: SignalType
+} deriving (Show, Eq)
+
+-- A normalized signal is a float value not in an array with min=0 and max=1.
+-- A boolean signal is an integer value 0 or 1, not in an array.
+newSignal :: SignalUnits -> String -> Signal
+newSignal u n
+  | u == Normalized = Signal n (SignalFloat 0.0) (SignalFloat 1.0) u (SigTypeFloat Nothing)
+  | u == Boolean    = Signal n (SignalInt 0) (SignalInt 1) u (SigTypeInt Nothing)
+
+data Device = Controller {
+      deviceRootName :: String,
+      deviceOutputs :: [Signal]
+    }
+ | Synth {
+      deviceRootName :: String,
+      deviceInputs :: [Signal]
+    }
+ | Router {
+      deviceRootName :: String,
+      deviceInputs :: [Signal],
+      deviceOutputs :: [Signal]
+    } deriving (Show, Eq)
+
+data MessageValue =
+    MsgValString String
+  | MsgValInt Int
+  | MsgValFloat Float
+  deriving (Eq)
+
+instance Show MessageValue where
+    show (MsgValString s) = s
+    show (MsgValInt i)    = show i
+    show (MsgValFloat f)  = show f
+
+data Message = Message { msgPath :: String, msgArgs :: [MessageValue] }
+  deriving (Show, Eq)
+
+receive :: Message -> String
+receive (Message path args) = "received " ++ path
+  ++ (foldl1 (++) $ map (\x -> (++) " " (show x)) args)
+
+dispatch :: Message -> String
+dispatch (Message "/link" [MsgValString a, MsgValString b])
+  = "linking " ++ a ++ " and " ++ b
+dispatch (Message a b) = "Unknown message " ++ a ++ " " ++ (show b)
+
+adc1 = newSignal Normalized "adc1"
+pin2 = newSignal Boolean "pin2"
+pin3 = Signal "pin2" (SignalFloat 0.0) Empty NA (SigTypeFloat (Just 2))
+
+tstick = Controller "tstick" [adc1]
+modal = Synth "modal" [pin2, pin3]
+
+main :: IO ()
+main = do
+  putStrLn $ show $ receive $ Message "/link" [(MsgValString "/tstick/1"),
+                                               (MsgValString "/modal/1")]
+  putStrLn $ show $ dispatch $ Message "/link" [(MsgValString "/tstick/1"),
+                                                (MsgValString "/modal/1")]
+  putStrLn $ show $ dispatch $ Message "/link" [(MsgValString "/tstick/1"),
+                                                (MsgValString "/modal/1"),
+                                                (MsgValInt 2)]
diff --git a/notes/behaviour.txt b/notes/behaviour.txt
new file mode 100644
index 0000000..5d51fc0
--- /dev/null
+++ b/notes/behaviour.txt
@@ -0,0 +1,162 @@
+
+device:
+  root_name (string)
+  name (string) = $root_name/$(unique name)
+  class (string)
+  numInputs (integer) = $(length inputs)
+  numOutputs (integer) = $(length outputs)
+  inputs (signal list)
+  outputs (signal list)
+
+signal:
+  name (string)
+  type (type_id)
+  minimum (value $units)
+  maximum (value $units)
+  units (unit_id)
+
+unit_id:
+  na
+  normalized = (range 0 1)
+  degrees = (range 0 360)
+  radians = (range 0 pi*2) = degrees*pi/180
+  volts = voltage
+  ohms
+  amps = amperes
+  decimeters = dm = meters/10
+  centimeters = cm = meters/100
+  millimeters = mm = meters/1000
+  meters
+  inches
+  feet = 12*inches
+
+type_id:
+  f
+  i
+  array = type_id[integer]
+
+on /$name/namespace/get
+  <- send ( (map (/$name/namespace/input  /$name/$signal <@type $type> <@min $min> <@max $max> <@units $units>) inputs)
+          : (map (/$name/namespace/output /$name/$signal <@type $type> <@min $min> <@max $max> <@units $units>) outputs) )
+
+on /link <$name1> <$name2>
+  <- send /linked <$name1> <$name2>
+
+on /unlink <$name1> <$name2>
+  <- send /unlinked <$name1> <$name2>
+
+NOTE: certain values of some properties can imply that other properties must be known
+
+property:
+  expression = $exp
+  scaling = 'expression' -> required expression
+  clipping 'minimum' $operation
+  clipping 'maximum' $operation
+
+on /connect <$in> <$out> [property list]
+  <- send /connected <$in> <$out>
+
+
+dot.admin
+=========
+
+admin bus
+---------
+
+multicast_send group 224.0.1.3 port 7570
+multicast_recv group 224.0.1.3 port 7570
+
+devices
+-------
+
+route /who /registered
+
+/registered -> store in local coll
+
+/who -> answer if name and port are allocated
+
+answer /who -> /registered <name> @class <deviceClass> @IP <ip> @port <port>
+                                  @inputs <n> @outputs <n>
+
+where <name> is <basename>/<id>
+
+loadbang -> random wait ((rand 1000) + 500) -> del 4000
+
+random wait -> dot.namealloc group 224.0.1.3 port 7571
+            -> dot.portalloc group 224.0.1.3 port 7572 starting at 4000
+            -> get local IP address based on chosen local NIC
+
+
+link-unlink
+-----------
+
+route /link /unlink /connect /disconnect /connection/modify
+      /connection/properties/get /disconnected /connected
+
+/link, /unlink, /disconnected, /connected -> #0-from_admin
+
+/connect -> link & connect -> delays /connect by 300 ms, sends /link for known devices (in #0-device_coll) -> #0-from_admin
+
+/disconnect -> squeuedlim 50 -> #0-from_admin
+
+/connection/modify -> /modify -> #0-from_admin
+
+/connection/properties/get -> /properties/get -> #0-from_admin
+
+
+local input
+-----------
+
+#0-from_admin -> link-unlink -> thispatcher, mappingcoll
+
+link-unlink: route /link /unlink /links/get
+
+/link -> store in #0-linked, create dot.router -> thispatcher
+
+/unlink -> remove from #0-linked, delete dot.route -> thispatcher
+
+/links/get -> dump #0-linked -> #0-to_admin
+
+mappingcoll: route /connections/get /clear /load /save /view /length
+                   /disconnect /connect /modify /properties/default
+                   /properties/get /lookup
+
+/connections/get -> dump #0-mapped -> /connected -> #0-to_admin
+
+;; note: do load, save, view only apply to mapper GUI?
+/clear -> clear #0-mapped, /cleared -> #0-to_admin
+
+/load -> read #0-mapped
+
+/save -> write #0-mapped
+
+/view -> open #0-mapped
+
+/length -> length #0-mapped -> ?
+
+/disconnect -> remove from #0-mapped -> /disconnected -> #0-to_admin
+
+/connect -> add to #0-mapped -> /connected -> #0-to_admin
+
+/modify -> set property value -> if master_mode -> /connection/properties
+
+/properties/default -> ?
+
+/properties/get -> /connection/properties
+
+properties are: @clipMax, @clipMin, @repetition, @expression, @range, @scaling
+
+/lookup -> route /source /destination /index -> dump source, destination, index from #0-mapped -> ?
+
+
+device definition
+-----------------
+
+#0-from_admin -> route /namespace/get
+
+/namespace/get -> ../namespace/numInputs, ../namespace/numOutputs,
+                  dump #0-inputNamespace -> /input,
+                  dump #0-outputNamespace -> /output
+
+from user -> route add input, add output, add both ->
+             store #0-inputNamespace, store #0-outputNamespace
diff --git a/notes/c_interface.txt b/notes/c_interface.txt
new file mode 100644
index 0000000..214463a
--- /dev/null
+++ b/notes/c_interface.txt
@@ -0,0 +1,28 @@
+
+The realistic plan is to create a C mapper library, with SWIG bindings
+for Python, Scheme, Java, etc.  How would a C application deal with
+the mapper.
+
+Controller: Have a collection of output signals, so the application
+can broadcast these to a router, and the mapper library will handle
+announcing the namespace on the admin bus.
+
+Router: The router is a middle layer residing controller-side,
+accepting signals from the controller but transforming them with
+mapping definitions before transmitting on the network.
+
+Synthesizers: Have a collection of input signals, so the application
+can specify what happens when a new signal value is acquired.
+
+A common API to register "signals", consisting of either a function
+interface, or for convenience a pointer-to-value interface.  Provide a
+non-blocking update routine that must be called regularly.  A signal
+value can be updated by a function call.
+
+Signals can consist of floats, ints, bools, or arrays of these.  Each
+signal has a name, an optional unit, and optional value range.
+
+A device must be registered with a name---this will not block, but
+setting the name triggers port/name allocation on the admin bus.  A
+flag is set when the name and port have been specified, an optional
+callback can be provided.
diff --git a/notes/messages.txt b/notes/messages.txt
new file mode 100644
index 0000000..b7b3cd8
--- /dev/null
+++ b/notes/messages.txt
@@ -0,0 +1,93 @@
+
+Messages exchanged by the mapper
+================================
+
+Discovery (Device)
+------------------
+
+on: /device/who
+
+respond: /registered <name> @class <deviceClass> @IP <ip> @port <port> @inputs <n> @outputs <n>
+
+controller: /device/registered /tstick/1 @inputs 1 @outputs 52 @class /tstick @IP 192.168.0.3 @port 8001
+
+synth: /device/registered /granul8/1 @inputs 80 @outputs 0 @class /granul8 @IP 192.168.0.4 @port 8000
+
+Device Connections (Router)
+---------------------------
+
+on: /link /tstick/1 /granul8/1
+
+respond: /linked /tstick/1 /granul8/1
+
+on: /unlink /tstick/1 /granul8/1
+
+respond: /unlinked /tstick/1 /granul8/1
+
+Signal Connections (Router)
+---------------------------
+
+on: /connect /tstick/1/raw/pressure/1 /granul8/1/gain @scaling expression @expression x*10 @clipping minimum 0
+
+respond:  /connected /tstick/1/raw/pressure/1 /granul8/1/gain
+
+example: /properties /tstick/1/raw/pressure/1 /granul8/1/gain @scaling expression
+
+example: /properties /tstick/1/raw/pressure/1 /granul8/1/gain @expression x*10
+
+example: /properties /tstick/1/raw/pressure/1 /granul8/1/gain @clipping minimum 0
+
+on: /disconnect /tstick/1/raw/pressure/1 /granul8/1/gain
+
+respond: /disconnected /tstick/1/raw/pressure/1 /granul8/1/gain
+
+Connection Properties (Router)
+------------------------------
+
+on: /connection/properties/get /tstick/1/raw/pressure/1 /granul8/1/gain
+
+on: /connection/modify /tstick/1/raw/pressure/1 /granul8/1/gain <desired properties, @scaling...>
+
+respond: /connection/properties /tstick/1/raw/pressure/1 /granul8/1/gain <@scaling...>
+
+Namespace (Device)
+------------------
+
+on: /tstick/namespace/get
+
+respond: /tstick/namespace/output /tstick/raw/piezo @type i @min 0 @max 255 @units na
+
+Router
+------
+
+on: /router/connections
+
+respond: /router/connected <input> <output> <mapping properties>
+
+Unknown messages
+----------------
+
+/add
+/available
+/clear
+/cleared
+/connections/get
+/default
+/delete
+/device/logout
+/display
+/dump
+/filter
+/length
+/links/get
+/load
+/lookup
+../namespace/numInputs <i>
+../namespace/numOutputs <i>
+/prefix
+/probe
+remove/
+/request
+/request b 1 2000
+/save
+/view
diff --git a/notes/recorded_messages.txt b/notes/recorded_messages.txt
new file mode 100644
index 0000000..cb7d5d7
--- /dev/null
+++ b/notes/recorded_messages.txt
@@ -0,0 +1,55 @@
+/modify "/output/2/channel/1" "/input/2/channel/4" "@scaling" "expression" "@expression" "(x-10)" "*" 80 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@scaling" "expression" 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@expression" "(x-10)" "*" 80 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@clipping" "none" 
+/device/who 
+/device/*/links/get 
+/device "/output/1" "@IP" "132.206.14.194" "@port" 4003 "@class" "/output" "@outputs" 10 "@inputs" 0 
+/device "/input/2" "@IP" "132.206.14.194" "@port" 4000 "@class" "/input" "@inputs" 10 "@outputs" 0 
+/device "/input/3" "@IP" "132.206.14.194" "@port" 4002 "@class" "/input" "@inputs" 10 "@outputs" 0 
+/device "/output/2" "@IP" "132.206.14.194" "@port" 4004 "@class" "/output" "@outputs" 10 "@inputs" 0 
+/linked "/output/2" "/input/2" 
+/output/2/namespace/get 
+/output/2/connections/get 
+/input/2/namespace/get 
+/input/2/connections/get 
+/output/2/namespace/output "/output/2/channel/1" "@type" "f" "@min" 0 "@max" 256 
+/output/2/namespace/output "/output/2/channel/2" "@type" "f" "@min" 0 "@max" 256 
+/connected "/output/2/channel/1" "/input/2/channel/3" "@scaling" "bypass" "@clipping" "none" 
+/connected "/output/2/channel/1" "/input/2/channel/4" "@scaling" "expression" "@expression" "(x-10)" "*" 80 "@clipping" "none" 
+/input/2/namespace/input "/input/2/channel/3" "@type" "f" "@min" 0 "@max" 256 
+/input/2/namespace/input "/input/2/channel/4" "@type" "f" "@min" 0 "@max" 256 
+/properties/get "/output/2/channel/1" "/input/2/channel/4" 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@scaling" "expression" "@expression" "(x-10)" "*" 80 "@clipping" "none" 
+/modify "/output/2/channel/1" "/input/2/channel/4" "@scaling" "bypass" 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@scaling" "bypass" 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@expression" "(x-10)" "*" 80 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@clipping" "none" 
+/properties/get "/output/2/channel/1" "/input/2/channel/3" 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@scaling" "bypass" "@clipping" "none" 
+/modify "/output/2/channel/1" "/input/2/channel/3" "@scaling" "linear" 0 256 0 256 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@scaling" "linear" 0.000000 0.000000 256.000000 0.000000 "@expression" "(x" "-" "0.000000)" "*" 256.000000 "+" 1.000000 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@clipping" "none" 
+/modify "/output/2/channel/1" "/input/2/channel/3" "@scaling" "calibrating" 0 256 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@scaling" "calibrating" 0 256 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@clipping" "none" 
+/modify "/output/2/channel/1" "/input/2/channel/3" "@scaling" "expression" "@expression" "(x" "-" "0.000000)" "*" 0.000000 "+" 1.000000 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@scaling" "expression" 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@expression" "(x" "-" "0.000000)" "*" 0.000000 "+" 1.000000 
+/properties "/output/2/channel/1" "/input/2/channel/3" "@clipping" "none" 
+/disconnect "/output/2/channel/1" "/input/2/channel/3" "@scaling" "bypass" "@clipping" "none" 
+/disconnected "/output/2/channel/1" "/input/2/channel/3" 
+/properties/get "/output/2/channel/1" "/input/2/channel/4" 
+/properties "/output/2/channel/1" "/input/2/channel/4" "@scaling" "bypass" "@expression" "(x-10)" "*" 80 "@clipping" "none" 
+/disconnect "/output/2/channel/1" "/input/2/channel/4" "@scaling" "bypass" "@clipping" "none" 
+/disconnected "/output/2/channel/1" "/input/2/channel/4" 
+/device/who 
+/device/*/links/get 
+/device "/output/1" "@IP" "132.206.14.194" "@port" 4003 "@class" "/output" "@outputs" 10 "@inputs" 0 
+/device "/input/2" "@IP" "132.206.14.194" "@port" 4000 "@class" "/input" "@inputs" 10 "@outputs" 0 
+/device "/input/3" "@IP" "132.206.14.194" "@port" 4002 "@class" "/input" "@inputs" 10 "@outputs" 0 
+/device "/output/2" "@IP" "132.206.14.194" "@port" 4004 "@class" "/output" "@outputs" 10 "@inputs" 0 
+/linked "/output/2" "/input/2" 
+/unlink "/output/2" "/input/2" "@scaling" "bypass" "@clipping" "none" 
+/unlinked "/output/2" "/input/2" "@scaling" "bypass" "@clipping" "none" 
+
diff --git a/notes/roadmap.txt b/notes/roadmap.txt
new file mode 100644
index 0000000..c8d6c32
--- /dev/null
+++ b/notes/roadmap.txt
@@ -0,0 +1,123 @@
+% Roadmap for libmapper
+
+This document contains information on what remains to be accomplished in
+the library, and what features might be added in the future.
+
+Current Status
+==============
+
+The current status is summarized here:
+
+* Name/port allocation works. Allocation speedup works.
+
+* A device and signal API is established, allowing polling of the
+  network, responding to incoming signal values, and updating
+  registered output signals.
+
+* Network routing (called Links) and Mappings (called Connections can
+  be established, and all required signal conditioning functions have
+  been implemented, including support for vectors, conditionals.
+
+* A device is able to also monitor the network and store information
+  about other devices, signals, links, and mappings, and this
+  information can be queried.
+
+* MaxMSP and puredata external objects working.
+
+* Python bindings working.
+
+* Java bindings working for end-device functionality.
+
+* Signal queries and reverse-mode connections for implicit mappers working
+
+* Demos working on Linux, OSX, Windows
+
+* Instances working
+
+Tasks To Do
+===========
+
+The following tasks currently need to be accomplished:
+
+* Create example program for interfacing with Wiimote, HID? Try to do 
+  this through pd objects with libmapper external. Kinect? (Joe)
+
+* Include some Max/MSP standalone versions of controllers, Granul8,
+  etc? (Joe)
+
+* Add saving/loading of json mapping files
+
+* webmapper GUI needs CSS work, saving/loading
+
+* Documentation, tutorials. 
+    * External API. (Steve)
+    * How to create a signal-combining device?
+    * Videos.
+        * Connect slider
+        * Wiimote library
+        * Kinect OpenFrameworks
+        * maxmsp
+        * puredata
+        * using expressions
+    * Explicitly state known deficiencies
+        * No many-to-one mapping
+        * No stored curves or tables
+
+Lower priority tasks
+====================
+
+* finish timetag integration - delays, destination interpolation,
+  timetag manipulation, timed filters. (In progress)
+
+* Java bindings for monitor functionality. (In progress)
+
+* Ensure correct action is taken (if any) when signals are registered
+  and unregistered, or devices disappear and reappear. (Depends on
+  namespace hashing, save for later.)
+
+* Implement OSC aliasing for more efficient signal connections.
+
+* Look into usage on embedded platforms. (Works on gumstix!)
+
+* In support of the previous point, implement the proposal for
+  pre-defined expressions ("fixed" processing type).
+
+* Consider using a back-end such as SQLite for database searching.
+  (May be more efficient for supporting large networks.)
+
+* Check for disallowed OSC characters. Security testing.
+    * Add default MAX_CONNECTIONS, MAX_SIGNALS
+
+* TCP transport (In progress)
+
+* Shared memory
+
+* Many-to-one mapping
+
+External tasks
+==============
+
+There are some tasks which address uses of the library/protocol rather
+than being tasks for the library development itself.
+
+* Development of SuperCollider usage, either using library or
+  reimplemented in SC to some extent.
+
+* Modify some of the FAUST architectures (e.g., Jack) to automatically
+  create a libmapper interface for input and output signals.
+
+* Wrap all STK instruments as mapper-compatible synths.
+
+Future developments
+===================
+
+Ideas that we consider to have potential but are not being considered
+for current work.
+
+* Audio-rate signal connections via Jack, SoundFlower, etc.
+
+* Interpolation for filtering of sporadic signals
+
+* Many-to-one mapping.
+
+* Add documentation and icon URLs to device properties. Add to GUI. 
diff --git a/notes/testspeed_results.txt b/notes/testspeed_results.txt
new file mode 100644
index 0000000..576498f
--- /dev/null
+++ b/notes/testspeed_results.txt
@@ -0,0 +1,72 @@
+Mac Book Pro Processor: 2.2 GHz Intel Core i7, Memory: 4 GB 1333 MHz DDR3, OSX 10.7.4
+  20120901
+    debug enabled, branch master
+      best trial: 100000 messages processed in 2.272467 seconds
+    debug disabled, branch master
+      best trial: 100000 messages processed in 2.266428 seconds
+      best trial: 100000 messages processed in 2.264463 seconds
+    debug enabled, branch instances
+      msig_update_instance
+        best trial: 100000 messages in 2.518687 seconds
+        best trial: 100000 messages in 2.514839 seconds
+        best trial: 100000 messages in 2.537608 seconds
+      msig_update
+        best trial: 100000 messages in 2.358548 seconds
+        best trial: 100000 messages in 2.387972 seconds
+        best trial: 100000 messages in 2.491243 seconds
+    debug disabled, branch instances
+      msig_update_instance
+        best trial: 100000 messages in 2.487252 seconds
+        best trial: 100000 messages in 2.510718 seconds
+      msig_update
+        best trial: 100000 messages in 2.347747 seconds
+        best trial: 100000 messages in 2.355204 seconds
+  20120908
+    debug disabled, branch instances
+      msig_update_instance
+        best trial: 100000 messages in 2.289347 seconds
+        best trial: 100000 messages in 2.470370 seconds
+        best trial: 100000 messages in 2.321279 seconds
+        best trial: 100000 messages in 2.411698 seconds
+      msig_update
+        best trial: 100000 messages in 2.212077 seconds
+        best trial: 100000 messages in 2.311361 seconds
+        best trial: 100000 messages in 2.252731 seconds
+        best trial: 100000 messages in 2.176074 seconds
+    debug disabled, branch master
+        best trial: 100000 messages processed in 2.275975 seconds
+        best trial: 100000 messages processed in 2.591912 seconds
+  20120911
+    branch reserve-stack
+      msig_update_instance
+        best trial: 100000 messages in 2.296756 seconds
+        best trial: 100000 messages in 2.321285 seconds
+      msig_update
+        best trial: 100000 messages in 2.254267 seconds
+        best trial: 100000 messages in 2.263255 seconds
+      msig_update (all other instances released)
+        best trial: 100000 messages in 2.209709 seconds
+        best trial: 100000 messages in 2.237359 seconds
+    branch id_map-refcount
+      msig_update_instance
+        best trial: 100000 messages in 2.234120 seconds
+        best trial: 100000 messages in 2.268620 seconds
+        best trial: 100000 messages in 2.287506 seconds
+        best trial: 100000 messages in 2.277549 seconds
+      msig_update
+        best trial: 100000 messages in 2.168036 seconds
+        best trial: 100000 messages in 2.145210 seconds
+        best trial: 100000 messages in 2.174459 seconds
+        best trial: 100000 messages in 2.214697 seconds
+    branch instances3:
+      msig_update_instance
+        best trial: 100000 messages in 2.368650 seconds
+        best trial: 100000 messages in 2.235514 seconds
+        best trial: 100000 messages in 2.261996 seconds
+      msig_update
+        best trial: 100000 messages in 2.244762 seconds
+        best trial: 100000 messages in 2.177155 seconds
+        best trial: 100000 messages in 2.194841 seconds
+    branch master
+      best trial: 100000 messages processed in 2.223340 seconds
+      best trial: 100000 messages processed in 2.234057 seconds
\ No newline at end of file
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index eadcd44..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,746 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = src
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/config.h.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = 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__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libmapper_ at MAJOR_VERSION@_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_libmapper_ at MAJOR_VERSION@_la_OBJECTS =  \
-	libmapper_ at MAJOR_VERSION@_la-expression.lo \
-	libmapper_ at MAJOR_VERSION@_la-device.lo \
-	libmapper_ at MAJOR_VERSION@_la-admin.lo \
-	libmapper_ at MAJOR_VERSION@_la-signal.lo \
-	libmapper_ at MAJOR_VERSION@_la-receiver.lo \
-	libmapper_ at MAJOR_VERSION@_la-router.lo \
-	libmapper_ at MAJOR_VERSION@_la-connection.lo \
-	libmapper_ at MAJOR_VERSION@_la-db.lo \
-	libmapper_ at MAJOR_VERSION@_la-params.lo \
-	libmapper_ at MAJOR_VERSION@_la-monitor.lo \
-	libmapper_ at MAJOR_VERSION@_la-table.lo \
-	libmapper_ at MAJOR_VERSION@_la-time.lo
-libmapper_ at MAJOR_VERSION@_la_OBJECTS =  \
-	$(am_libmapper_ at MAJOR_VERSION@_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libmapper_ at MAJOR_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) \
-	$(libmapper_ at MAJOR_VERSION@_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@
-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_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-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_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libmapper_ at MAJOR_VERSION@_la_SOURCES)
-DIST_SOURCES = $(libmapper_ at MAJOR_VERSION@_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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@
-noinst_HEADERS = mapper_internal.h types_internal.h
-EXTRA_DIST = libmapper.def
- at WINDOWS_DLL_TRUE@lt_windows = -no-undefined -export-symbols libmapper.def
-lib_LTLIBRARIES = libmapper- at MAJOR_VERSION@.la
-libmapper_ at MAJOR_VERSION@_la_CFLAGS = -Wall -I$(top_srcdir)/include $(liblo_CFLAGS)
-libmapper_ at MAJOR_VERSION@_la_SOURCES = expression.c device.c admin.c signal.c \
-    receiver.c router.c connection.c db.c params.c monitor.c table.c time.c
-
-libmapper_ at MAJOR_VERSION@_la_LIBADD = $(liblo_LIBS)
-libmapper_ at MAJOR_VERSION@_la_LDFLAGS = $(lt_windows) -export-dynamic -version-info @SO_VERSION@
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) 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) --foreign src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign 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):
-
-config.h: stamp-h1
-	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-	@if test ! -f $@; then $(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 src/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
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@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 " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  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
-libmapper- at MAJOR_VERSION@.la: $(libmapper_ at MAJOR_VERSION@_la_OBJECTS) $(libmapper_ at MAJOR_VERSION@_la_DEPENDENCIES) $(EXTRA_libmapper_ at MAJOR_VERSION@_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libmapper_ at MAJOR_VERSION@_la_LINK) -rpath $(libdir) $(libmapper_ at MAJOR_VERSION@_la_OBJECTS) $(libmapper_ at MAJOR_VERSION@_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-admin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-connection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-db.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-device.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-expression.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-monitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-params.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-receiver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-router.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-signal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-table.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-time.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libmapper_ at MAJOR_VERSION@_la-expression.lo: expression.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-expression.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-expression.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-expression.lo `test -f 'expression.c' || echo '$(srcdir)/'`expression.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-expression.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-expression.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='expression.c' object='libmapper_ at MAJOR_VERSION@_la-expression.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-expression.lo `test -f 'expression.c' || echo '$(srcdir)/'`expression.c
-
-libmapper_ at MAJOR_VERSION@_la-device.lo: device.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-device.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-device.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-device.lo `test -f 'device.c' || echo '$(srcdir)/'`device.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-device.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-device.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='device.c' object='libmapper_ at MAJOR_VERSION@_la-device.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-device.lo `test -f 'device.c' || echo '$(srcdir)/'`device.c
-
-libmapper_ at MAJOR_VERSION@_la-admin.lo: admin.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-admin.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-admin.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-admin.lo `test -f 'admin.c' || echo '$(srcdir)/'`admin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-admin.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-admin.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='admin.c' object='libmapper_ at MAJOR_VERSION@_la-admin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-admin.lo `test -f 'admin.c' || echo '$(srcdir)/'`admin.c
-
-libmapper_ at MAJOR_VERSION@_la-signal.lo: signal.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-signal.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-signal.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-signal.lo `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-signal.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-signal.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='signal.c' object='libmapper_ at MAJOR_VERSION@_la-signal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-signal.lo `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
-
-libmapper_ at MAJOR_VERSION@_la-receiver.lo: receiver.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-receiver.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-receiver.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-receiver.lo `test -f 'receiver.c' || echo '$(srcdir)/'`receiver.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-receiver.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-receiver.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='receiver.c' object='libmapper_ at MAJOR_VERSION@_la-receiver.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-receiver.lo `test -f 'receiver.c' || echo '$(srcdir)/'`receiver.c
-
-libmapper_ at MAJOR_VERSION@_la-router.lo: router.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-router.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-router.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-router.lo `test -f 'router.c' || echo '$(srcdir)/'`router.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-router.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-router.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='router.c' object='libmapper_ at MAJOR_VERSION@_la-router.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-router.lo `test -f 'router.c' || echo '$(srcdir)/'`router.c
-
-libmapper_ at MAJOR_VERSION@_la-connection.lo: connection.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-connection.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-connection.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-connection.lo `test -f 'connection.c' || echo '$(srcdir)/'`connection.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-connection.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-connection.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='connection.c' object='libmapper_ at MAJOR_VERSION@_la-connection.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-connection.lo `test -f 'connection.c' || echo '$(srcdir)/'`connection.c
-
-libmapper_ at MAJOR_VERSION@_la-db.lo: db.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-db.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-db.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-db.lo `test -f 'db.c' || echo '$(srcdir)/'`db.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-db.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-db.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='db.c' object='libmapper_ at MAJOR_VERSION@_la-db.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-db.lo `test -f 'db.c' || echo '$(srcdir)/'`db.c
-
-libmapper_ at MAJOR_VERSION@_la-params.lo: params.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-params.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-params.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-params.lo `test -f 'params.c' || echo '$(srcdir)/'`params.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-params.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-params.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='params.c' object='libmapper_ at MAJOR_VERSION@_la-params.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-params.lo `test -f 'params.c' || echo '$(srcdir)/'`params.c
-
-libmapper_ at MAJOR_VERSION@_la-monitor.lo: monitor.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-monitor.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-monitor.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-monitor.lo `test -f 'monitor.c' || echo '$(srcdir)/'`monitor.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-monitor.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-monitor.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='monitor.c' object='libmapper_ at MAJOR_VERSION@_la-monitor.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-monitor.lo `test -f 'monitor.c' || echo '$(srcdir)/'`monitor.c
-
-libmapper_ at MAJOR_VERSION@_la-table.lo: table.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-table.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-table.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-table.lo `test -f 'table.c' || echo '$(srcdir)/'`table.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-table.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-table.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='table.c' object='libmapper_ at MAJOR_VERSION@_la-table.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-table.lo `test -f 'table.c' || echo '$(srcdir)/'`table.c
-
-libmapper_ at MAJOR_VERSION@_la-time.lo: time.c
- at 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) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -MT libmapper_ at MAJOR_VERSION@_la-time.lo -MD -MP -MF $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-time.Tpo -c -o libmapper_ at MAJOR_VERSION@_la-time.lo `test -f 'time.c' || echo '$(srcdir)/'`time.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-time.Tpo $(DEPDIR)/libmapper_ at MAJOR_VERSION@_la-time.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libmapper_ at MAJOR_VERSION@_la-time.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmapper_ at MAJOR_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libmapper_ at MAJOR_VERSION@_la-time.lo `test -f 'time.c' || echo '$(srcdir)/'`time.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) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; 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) 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)
-	@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) config.h
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; 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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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-hdr 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-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
-
-.MAKE: all 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-hdr \
-	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-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
-
-
-# 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/admin.c b/src/admin.c
index 40e8aa5..8b6a9ff 100644
--- a/src/admin.c
+++ b/src/admin.c
@@ -41,13 +41,44 @@ static double get_current_time()
 #endif
 }
 
+const char* admin_msg_strings[] =
+{
+    "/connect",                 /* ADM_CONNECT */
+    "/connectTo",               /* ADM_CONNECT_TO */
+    "/connected",               /* ADM_CONNECTED */
+    "/connection/modify",       /* ADM_CONNECTION_MODIFY */
+    "/device",                  /* ADM_DEVICE */
+    "/disconnect",              /* ADM_DISCONNECT */
+    "/disconnected",            /* ADM_DISCONNECTED */
+    "%s/connections/get",       /* ADM_GET_MY_CONNECTIONS */
+    "%s/connections/in/get",    /* ADM_GET_MY_CONNECTIONS_IN */
+    "%s/connections/out/get",   /* ADM_GET_MY_CONNECTIONS_OUT */
+    "%s/info/get",              /* ADM_GET_MY_DEVICE */
+    "%s/links/get",             /* ADM_GET_MY_LINKS */
+    "%s/links/in/get",          /* ADM_GET_MY_LINKS_IN */
+    "%s/links/out/get",         /* ADM_GET_MY_LINKS_OUT */
+    "%s/signals/get",           /* ADM_GET_MY_SIGNALS */
+    "%s/signals/input/get",     /* ADM_GET_MY_SIGNALS_IN */
+    "%s/signals/output/get",    /* ADM_GET_MY_SIGNALS_OUT */
+    "/link",                    /* ADM_LINK */
+    "/link/modify",             /* ADM_LINK_MODIFY */
+    "/linkTo",                  /* ADM_LINK_TO */
+    "/linked",                  /* ADM_LINKED */
+    "/logout",                  /* ADM_LOGOUT */
+    "/signal",                  /* ADM_SIGNAL */
+    "/sync",                    /* ADM_SYNC */
+    "/unlink",                  /* ADM_UNLINK */
+    "/unlinked",                /* ADM_UNLINKED */
+    "/who",                     /* ADM_WHO */
+};
+
 /* Internal functions for sending admin messages. */
 static void mapper_admin_send_device(mapper_admin admin, mapper_device device);
 static void mapper_admin_send_linked(mapper_admin admin, mapper_link link,
-                                     lo_bundle b, int is_outgoing);
+                                     int is_outgoing);
 static void mapper_admin_send_connected(mapper_admin admin, mapper_link link,
                                         mapper_connection c, int index,
-                                        lo_bundle b, int is_outgoing);
+                                        int is_outgoing);
 
 /* Internal message handler prototypes. */
 static int handler_who(const char *, const char *, lo_arg **, int,
@@ -76,6 +107,8 @@ static int handler_device_linkTo(const char *, const char *, lo_arg **,
                                  int, lo_message, void *);
 static int handler_device_linked(const char *, const char *, lo_arg **,
                                  int, lo_message, void *);
+static int handler_device_link_modify(const char *, const char *, lo_arg **, int,
+                                      lo_message, void *);
 static int handler_device_unlink(const char *, const char *, lo_arg **,
                                  int, lo_message, void *);
 static int handler_device_unlinked(const char *, const char *, lo_arg **,
@@ -109,48 +142,49 @@ static int handler_sync(const char *, const char *,
 
 /* Handler <-> Message relationships */
 struct handler_method_assoc {
-    char* path;
+    int str_index;
     char *types;
     lo_method_handler h;
 };
 static struct handler_method_assoc device_handlers[] = {
-    {"/who",                    "",         handler_who},
-    {"%s/signals/get",          NULL,       handler_id_n_signals_get},
-    {"%s/signals/input/get",    NULL,       handler_id_n_signals_input_get},
-    {"%s/signals/output/get",   NULL,       handler_id_n_signals_output_get},
-    {"%s/info/get",             "",         handler_who},
-    {"%s/links/get",            "",         handler_device_links_get},
-    {"%s/links/in/get",         "",         handler_device_links_in_get},
-    {"%s/links/out/get",        "",         handler_device_links_out_get},
-    {"/link",                   NULL,       handler_device_link},
-    {"/linkTo",                 NULL,       handler_device_linkTo},
-    {"/linked",                 NULL,       handler_device_linked},
-    {"/unlink",                 NULL,       handler_device_unlink},
-    {"/unlinked",               NULL,       handler_device_unlinked},
-    {"%s/connections/get",      NULL,       handler_device_connections_get},
-    {"%s/connections/in/get",   NULL,       handler_device_connections_in_get},
-    {"%s/connections/out/get",  NULL,       handler_device_connections_out_get},
-    {"/connect",                NULL,       handler_signal_connect},
-    {"/connectTo",              NULL,       handler_signal_connectTo},
-    {"/connected",              NULL,       handler_signal_connected},
-    {"/connection/modify",      NULL,       handler_signal_connection_modify},
-    {"/disconnect",             "ss",       handler_signal_disconnect},
-    {"/disconnected",           "ss",       handler_signal_disconnected},
-    {"/logout",                 NULL,       handler_logout},
-    {"/sync",                   "iifiid",   handler_sync},
+    {ADM_WHO,                   "",         handler_who},
+    {ADM_GET_MY_SIGNALS,        NULL,       handler_id_n_signals_get},
+    {ADM_GET_MY_SIGNALS_IN,     NULL,       handler_id_n_signals_input_get},
+    {ADM_GET_MY_SIGNALS_OUT,    NULL,       handler_id_n_signals_output_get},
+    {ADM_GET_MY_DEVICE,         "",         handler_who},
+    {ADM_GET_MY_LINKS,          "",         handler_device_links_get},
+    {ADM_GET_MY_LINKS_IN,       "",         handler_device_links_in_get},
+    {ADM_GET_MY_LINKS_OUT,      "",         handler_device_links_out_get},
+    {ADM_LINK,                  NULL,       handler_device_link},
+    {ADM_LINK_TO,               NULL,       handler_device_linkTo},
+    {ADM_LINKED,                NULL,       handler_device_linked},
+    {ADM_LINK_MODIFY,           NULL,       handler_device_link_modify},
+    {ADM_UNLINK,                NULL,       handler_device_unlink},
+    {ADM_UNLINKED,              NULL,       handler_device_unlinked},
+    {ADM_GET_MY_CONNECTIONS,    NULL,       handler_device_connections_get},
+    {ADM_GET_MY_CONNECTIONS_IN, NULL,       handler_device_connections_in_get},
+    {ADM_GET_MY_CONNECTIONS_OUT, NULL,       handler_device_connections_out_get},
+    {ADM_CONNECT,               NULL,       handler_signal_connect},
+    {ADM_CONNECT_TO,            NULL,       handler_signal_connectTo},
+    {ADM_CONNECTED,             NULL,       handler_signal_connected},
+    {ADM_CONNECTION_MODIFY,     NULL,       handler_signal_connection_modify},
+    {ADM_DISCONNECT,            "ss",       handler_signal_disconnect},
+    {ADM_DISCONNECTED,          "ss",       handler_signal_disconnected},
+    {ADM_LOGOUT,                NULL,       handler_logout},
+    {ADM_SYNC,                  "iifiid",   handler_sync},
 };
 const int N_DEVICE_HANDLERS =
     sizeof(device_handlers)/sizeof(device_handlers[0]);
 
 static struct handler_method_assoc monitor_handlers[] = {
-    {"/device",                 NULL,       handler_device},
-    {"/logout",                 NULL,       handler_logout},
-    {"/signal",                 NULL,       handler_signal_info},
-    {"/linked",                 NULL,       handler_device_linked},
-    {"/unlinked",               NULL,       handler_device_unlinked},
-    {"/connected",              NULL,       handler_signal_connected},
-    {"/disconnected",           "ss",       handler_signal_disconnected},
-    {"/sync",                   "iifiid",   handler_sync},
+    {ADM_DEVICE,                NULL,       handler_device},
+    {ADM_LOGOUT,                NULL,       handler_logout},
+    {ADM_SIGNAL,                NULL,       handler_signal_info},
+    {ADM_LINKED,                NULL,       handler_device_linked},
+    {ADM_UNLINKED,              NULL,       handler_device_unlinked},
+    {ADM_CONNECTED,             NULL,       handler_signal_connected},
+    {ADM_DISCONNECTED,          "ss",       handler_signal_disconnected},
+    {ADM_SYNC,                  "iifiid",   handler_sync},
 };
 const int N_MONITOR_HANDLERS =
     sizeof(monitor_handlers)/sizeof(monitor_handlers[0]);
@@ -311,14 +345,16 @@ static void seed_srand()
     srand(s);
 }
 
-static void mapper_admin_add_device_methods(mapper_admin admin)
+static void mapper_admin_add_device_methods(mapper_admin admin,
+                                            mapper_device device)
 {
     int i;
     char fullpath[256];
     for (i=0; i < N_DEVICE_HANDLERS; i++)
     {
-        snprintf(fullpath, 256, device_handlers[i].path,
-                 mapper_admin_name(admin));
+        snprintf(fullpath, 256,
+                 admin_msg_strings[device_handlers[i].str_index],
+                 mdev_name(admin->device));
         lo_server_add_method(admin->admin_server, fullpath,
                              device_handlers[i].types,
                              device_handlers[i].h,
@@ -332,7 +368,7 @@ static void mapper_admin_add_monitor_methods(mapper_admin admin)
     for (i=0; i < N_MONITOR_HANDLERS; i++)
     {
         lo_server_add_method(admin->admin_server,
-                             monitor_handlers[i].path,
+                             admin_msg_strings[monitor_handlers[i].str_index],
                              monitor_handlers[i].types,
                              monitor_handlers[i].h,
                              admin);
@@ -345,7 +381,7 @@ static void mapper_admin_remove_monitor_methods(mapper_admin admin)
     for (i=0; i < N_MONITOR_HANDLERS; i++)
     {
         lo_server_del_method(admin->admin_server,
-                             monitor_handlers[i].path,
+                             admin_msg_strings[monitor_handlers[i].str_index],
                              monitor_handlers[i].types);
     }
 }
@@ -374,7 +410,6 @@ mapper_admin mapper_admin_new(const char *iface, const char *group, int port)
     /* Open address */
     admin->admin_addr = lo_address_new(group, s_port);
     if (!admin->admin_addr) {
-        free(admin->identifier);
         free(admin);
         return NULL;
     }
@@ -399,7 +434,6 @@ mapper_admin mapper_admin_new(const char *iface, const char *group, int port)
 #endif
 
     if (!admin->admin_server) {
-        free(admin->identifier);
         lo_address_free(admin->admin_addr);
         free(admin);
         return NULL;
@@ -411,6 +445,39 @@ mapper_admin mapper_admin_new(const char *iface, const char *group, int port)
     return admin;
 }
 
+const char *mapper_admin_libversion(mapper_admin admin)
+{
+    return PACKAGE_VERSION;
+}
+
+void mapper_admin_send_bundle(mapper_admin admin)
+{
+    if (!admin->bundle)
+        return;
+
+    lo_send_bundle_from(admin->admin_addr,
+                        admin->device ? admin->device->server : NULL,
+                        admin->bundle);
+    lo_bundle_free_messages(admin->bundle);
+    admin->bundle = 0;
+}
+
+static int mapper_admin_check_bundle(mapper_admin admin)
+{
+    if (admin->bundle && lo_bundle_count(admin->bundle) >= 20) {
+        mapper_admin_send_bundle(admin);
+    }
+    if (!admin->bundle) {
+        mapper_clock_now(&admin->clock, &admin->clock.now);
+        admin->bundle = lo_bundle_new(admin->clock.now);
+        if (!admin->bundle) {
+            trace("couldn't allocate lo_bundle\n");
+            return 1;
+        }
+    }
+    return 0;
+}
+
 /*! Free the memory allocated by a mapper admin structure.
  *  \param admin An admin structure handle.
  */
@@ -419,16 +486,8 @@ void mapper_admin_free(mapper_admin admin)
     if (!admin)
         return;
 
-    if (admin->registered) {
-        // A registered device must tell the network it is leaving.
-        mapper_admin_send_osc(admin, 0, "/logout", "s", mapper_admin_name(admin));
-    }
-
-    if (admin->identifier)
-        free(admin->identifier);
-
-    if (admin->name)
-        free(admin->name);
+    // send out any cached messages
+    mapper_admin_send_bundle(admin);
 
     if (admin->interface_name)
         free(admin->interface_name);
@@ -442,21 +501,38 @@ void mapper_admin_free(mapper_admin admin)
     free(admin);
 }
 
+/*! Probe the admin bus to see if a device's proposed name.ordinal is
+ *  already taken. */
+static void mapper_admin_probe_device_name(mapper_admin admin,
+                                           mapper_device device)
+{
+    device->ordinal.collision_count = -1;
+    device->ordinal.count_time = get_current_time();
+
+    /* Note: mdev_name() would refuse here since the
+     * ordinal is not yet locked, so we have to build it manually at
+     * this point. */
+    char name[256];
+    trace("</%s.?::%p> probing name\n", device->props.identifier, admin);
+    snprintf(name, 256, "/%s.%d", device->props.identifier, device->ordinal.value);
+
+    /* Calculate a hash from the name and store it in id.value */
+    device->props.name_hash = crc32(0L, (const Bytef *)name, strlen(name));
+
+    /* For the same reason, we can't use mapper_admin_send()
+     * here. */
+    lo_send(admin->admin_addr, "/name/probe", "si",
+            name, admin->random_id);
+}
+
 /*! Add an uninitialized device to this admin. */
-void mapper_admin_add_device(mapper_admin admin, mapper_device dev,
-                             const char *identifier)
+void mapper_admin_add_device(mapper_admin admin, mapper_device dev)
 {
     /* Initialize data structures */
     if (dev)
     {
-        admin->identifier = strdup(identifier);
-        admin->name = 0;
-        admin->name_hash = 0;
-        admin->ordinal.value = 1;
-        admin->ordinal.locked = 0;
-        admin->registered = 0;
         admin->device = dev;
-        admin->device->flags = 0;
+
         // TODO: should we init clocks for monitors also?
         mapper_clock_init(&admin->clock);
 
@@ -475,7 +551,7 @@ void mapper_admin_add_device(mapper_admin admin, mapper_device dev,
                              handler_device_name_registered, admin);
 
         /* Probe potential name to admin bus. */
-        mapper_admin_name_probe(admin);
+        mapper_admin_probe_device_name(admin, dev);
     }
 }
 
@@ -486,7 +562,6 @@ void mapper_admin_add_monitor(mapper_admin admin, mapper_monitor mon)
     if (mon) {
         admin->monitor = mon;
         mapper_admin_add_monitor_methods(admin);
-        mapper_admin_send_osc(admin, 0, "/who", "");
     }
 }
 
@@ -504,48 +579,52 @@ void mapper_admin_remove_monitor(mapper_admin admin, mapper_monitor mon)
 int mapper_admin_poll(mapper_admin admin)
 {
     int count = 0, status;
+    mapper_device md = admin->device;
 
-    if (admin->device)
-        admin->device->flags &= ~FLAGS_SENT_ALL_DEVICE_MESSAGES;
+    // send out any cached messages
+    mapper_admin_send_bundle(admin);
+
+    if (md)
+        md->flags &= ~FLAGS_SENT_ALL_DEVICE_MESSAGES;
 
     while (count < 10 && lo_server_recv_noblock(admin->admin_server, 0)) {
         count++;
     }
+    admin->msgs_recvd += count;
 
-    if (!admin->device)
+    if (!md)
         return count;
 
     /* If the ordinal is not yet locked, process collision timing.
      * Once the ordinal is locked it won't change. */
-    if (!admin->registered) {
-        status = check_collisions(admin, &admin->ordinal);
+    if (!md->registered) {
+        status = check_collisions(admin, &md->ordinal);
         if (status == 1) {
             /* If the ordinal has changed, re-probe the new name. */
-            mapper_admin_name_probe(admin);
-        }
-        else if (status == 2) {
-            /* Send registered msg. */
-            lo_send(admin->admin_addr, "/name/registered",
-                    "s", mapper_admin_name(admin));
+            mapper_admin_probe_device_name(admin, md);
         }
 
         /* If we are ready to register the device, add the needed message
          * handlers. */
-        if (admin->ordinal.locked)
+        if (md->ordinal.locked)
         {
-            mdev_registered(admin->device);
-            mapper_admin_add_device_methods(admin);
+            mdev_registered(md);
+
+            /* Send registered msg. */
+            lo_send(admin->admin_addr, "/name/registered",
+                    "s", mdev_name(md));
+
+            mapper_admin_add_device_methods(admin, md);
 
-            admin->registered = 1;
             trace("</%s.?::%p> registered as <%s>\n",
-                  admin->identifier, admin, mapper_admin_name(admin));
-            admin->device->flags |= FLAGS_DEVICE_ATTRIBS_CHANGED;
+                  md->props.identifier, admin, mdev_name(md));
+            md->flags |= FLAGS_DEVICE_ATTRIBS_CHANGED;
         }
     }
     else {
-        if (admin->device->flags & FLAGS_DEVICE_ATTRIBS_CHANGED) {
-            admin->device->flags &= ~FLAGS_DEVICE_ATTRIBS_CHANGED;
-            mapper_admin_send_device(admin, admin->device);
+        if (md->flags & FLAGS_DEVICE_ATTRIBS_CHANGED) {
+            md->flags &= ~FLAGS_DEVICE_ATTRIBS_CHANGED;
+            mapper_admin_send_device(admin, md);
         }
         // Send out clock sync messages occasionally
         mapper_clock_t *clock = &admin->clock;
@@ -577,61 +656,6 @@ int mapper_admin_poll(mapper_admin admin)
     return count;
 }
 
-/*! Probe the admin bus to see if a device's proposed name.ordinal is
- *  already taken.
- */
-void mapper_admin_name_probe(mapper_admin admin)
-{
-    admin->ordinal.collision_count = -1;
-    admin->ordinal.count_time = get_current_time();
-
-    /* Note: mapper_admin_name() would refuse here since the
-     * ordinal is not yet locked, so we have to build it manually at
-     * this point. */
-    char name[256];
-    trace("</%s.?::%p> probing name\n", admin->identifier, admin);
-    snprintf(name, 256, "/%s.%d", admin->identifier, admin->ordinal.value);
-
-    /* Calculate a hash from the name and store it in id.value */
-    admin->name_hash = crc32(0L, (const Bytef *)name, strlen(name));
-
-    /* For the same reason, we can't use mapper_admin_send_osc()
-     * here. */
-    lo_send(admin->admin_addr, "/name/probe", "si",
-            name, admin->random_id);
-}
-
-const char *_real_mapper_admin_name(mapper_admin admin,
-                                    const char *file, unsigned int line)
-{
-#ifdef DEBUG
-    if (!admin->identifier || !admin->device)
-        trace("mapper_admin_name() called on non-device admin at %s:%d.\n",
-              file, line);
-#endif
-
-    if (!admin->ordinal.locked) {
-        /* Since this function is intended to be used internally in a
-         * fairly liberal manner, we want to trace any situations
-         * where returning 0 might cause a problem.  The external call
-         * to this function, mdev_full_name(), has been special-cased
-         * to allow this. */
-        trace("mapper_admin_name() returning 0 at %s:%d.\n", file, line);
-        return 0;
-    }
-
-    if (admin->name)
-        return admin->name;
-
-    unsigned int len = strlen(admin->identifier) + 6;
-    admin->name = (char *) malloc(len);
-    admin->name[0] = 0;
-    snprintf(admin->name, len, "/%s.%d", admin->identifier,
-             admin->ordinal.value);
-
-    return admin->name;
-}
-
 /*! Algorithm for checking collisions and allocating resources. */
 static int check_collisions(mapper_admin admin,
                             mapper_admin_allocated_t *resource)
@@ -643,13 +667,19 @@ static int check_collisions(mapper_admin admin,
 
     timediff = get_current_time() - resource->count_time;
 
-    if (timediff >= 2.0 && resource->collision_count <= 1) {
+    if (!admin->msgs_recvd) {
+        if (timediff >= 5.0) {
+            // reprobe with the same value
+            return 1;
+        }
+        return 0;
+    }
+    else if (timediff >= 2.0 && resource->collision_count <= 1) {
         resource->locked = 1;
         if (resource->on_lock)
             resource->on_lock(admin->device, resource);
         return 2;
     }
-
     else if (timediff >= 0.5 && resource->collision_count > 0) {
         /* If resource collisions were found within 500 milliseconds of the
          * last probe, add a random number based on the number of
@@ -667,27 +697,11 @@ static int check_collisions(mapper_admin admin,
     return 0;
 }
 
-void _real_mapper_admin_send_osc(mapper_admin admin, lo_bundle b,
-                                 const char *path,
-                                 const char *types, ...)
+void _real_mapper_admin_send(mapper_admin admin,
+                             int msg_index,
+                             const char *path,
+                             const char *types, ...)
 {
-    char str[1024];
-    const char *namedpath=str;
-
-    /* If string wants a name, mapper_admin_name() will complain about
-     * no device in debug mode.  Otherwise, in non-debug mode, just
-     * don't ask for the name if there's no device. */
-#ifdef DEBUG
-    if (strstr(path, "%s"))
-#else
-    if (admin->device)
-#endif
-    {
-        snprintf(str, 1024, path, mapper_admin_name(admin));
-    }
-    else
-        namedpath = path;
-
     char t[]=" ";
 
     lo_message m = lo_message_new();
@@ -716,23 +730,25 @@ void _real_mapper_admin_send_osc(mapper_admin admin, lo_bundle b,
 
     va_end(aq);
 
-    if (b)
-        lo_bundle_add_message(b, namedpath, m);
-    else {
-        lo_send_message(admin->admin_addr, namedpath, m);
-        lo_message_free(m);
+    if (!mapper_admin_check_bundle(admin)) {
+        lo_bundle_add_message(admin->bundle, msg_index == -1 ?
+                              path : admin_msg_strings[msg_index], m);
     }
+
+    /* Since liblo doesn't cache path strings, we must send the bundle
+     * immediately if the path is non-standard. */
+    if (msg_index == -1)
+        mapper_admin_send_bundle(admin);
 }
 
-void _real_mapper_admin_send_osc_with_params(const char *file, int line,
-                                             mapper_admin admin,
-                                             mapper_message_t *params,
-                                             mapper_string_table_t *extra,
-                                             const char *path,
-                                             const char *types, ...)
+void _real_mapper_admin_send_with_params(mapper_admin admin,
+                                         mapper_message_t *params,
+                                         mapper_string_table_t *extra,
+                                         int msg_index,
+                                         const char *path,
+                                         const char *types, ...)
 {
-    char namedpath[1024];
-    snprintf(namedpath, 1024, path, mapper_admin_name(admin));
+    char t[]=" ";
 
     lo_message m = lo_message_new();
     if (!m) {
@@ -742,97 +758,109 @@ void _real_mapper_admin_send_osc_with_params(const char *file, int line,
 
     va_list aq;
     va_start(aq, types);
-    lo_message_add_varargs_internal(m, types, aq, file, line);
+
+    while (types && *types) {
+        t[0] = types[0];
+        switch (t[0]) {
+            case 'i': lo_message_add(m, t, va_arg(aq, int)); break;
+            case 's': lo_message_add(m, t, va_arg(aq, char*)); break;
+            case 'f': lo_message_add(m, t, va_arg(aq, double)); break;
+            default:
+                die_unless(0, "message %s, unknown type '%c'\n",
+                           path, t[0]);
+        }
+        types++;
+    }
+
+    mapper_msg_prepare_varargs(m, aq);
+
+    va_end(aq);
 
     mapper_msg_prepare_params(m, params);
     if (extra)
-        mapper_msg_add_osc_value_table(m, extra);
+        mapper_msg_add_value_table(m, extra);
+
+    if (!mapper_admin_check_bundle(admin)) {
+        lo_bundle_add_message(admin->bundle, msg_index == -1 ?
+                              path : admin_msg_strings[msg_index], m);
+    }
 
-    lo_send_message(admin->admin_addr, namedpath, m);
-    lo_message_free(m);
+    /* Since liblo doesn't cache path strings, we must send the bundle
+     * immediately if the path is non-standard. */
+    if (msg_index == -1)
+        mapper_admin_send_bundle(admin);
 }
 
 static void mapper_admin_send_device(mapper_admin admin,
                                      mapper_device device)
 {
-    if (admin->device->flags & FLAGS_SENT_DEVICE_INFO)
+    if (!device)
+        return;
+    if (device->flags & FLAGS_SENT_DEVICE_INFO)
         return;
 
-    mapper_admin_send_osc(
-        admin, 0, "/device", "s", mapper_admin_name(admin),
+    mapper_admin_send(
+        admin, ADM_DEVICE, 0, "s", mdev_name(device),
         AT_LIB_VERSION, PACKAGE_VERSION,
-        AT_PORT, admin->port,
-        AT_NUM_INPUTS, admin->device ? mdev_num_inputs(admin->device) : 0,
-        AT_NUM_OUTPUTS, admin->device ? mdev_num_outputs(admin->device) : 0,
-        AT_NUM_LINKS_IN, admin->device ? mdev_num_links_in(admin->device) : 0,
-        AT_NUM_LINKS_OUT, admin->device ? mdev_num_links_out(admin->device) : 0,
-        AT_NUM_CONNECTIONS_IN, admin->device ? mdev_num_connections_in(admin->device) : 0,
-        AT_NUM_CONNECTIONS_OUT, admin->device ? mdev_num_connections_out(admin->device) : 0,
-        AT_REV, admin->device->version,
-        AT_EXTRA, admin->device->extra);
-
-    admin->device->flags |= FLAGS_SENT_DEVICE_INFO;
+        AT_PORT, device->props.port,
+        AT_NUM_INPUTS, mdev_num_inputs(device),
+        AT_NUM_OUTPUTS, mdev_num_outputs(device),
+        AT_NUM_LINKS_IN, mdev_num_links_in(device),
+        AT_NUM_LINKS_OUT, mdev_num_links_out(device),
+        AT_NUM_CONNECTIONS_IN, mdev_num_connections_in(device),
+        AT_NUM_CONNECTIONS_OUT, mdev_num_connections_out(device),
+        AT_REV, device->props.version,
+        AT_EXTRA, device->props.extra);
+
+    device->flags |= FLAGS_SENT_DEVICE_INFO;
 }
 
 static void mapper_admin_send_linked(mapper_admin admin,
                                      mapper_link link,
-                                     lo_bundle b,
                                      int is_outgoing)
 {
     // Send /linked message
     lo_message m = lo_message_new();
     if (!m) {
         trace("couldn't allocate lo_message\n");
+        return;
     }
 
     if (is_outgoing) {
         lo_message_add_string(m, mdev_name(link->device));
         lo_message_add_string(m, link->props.dest_name);
         lo_message_add_string(m, "@srcPort");
-        lo_message_add_int32(m, admin->port);
+        lo_message_add_int32(m, link->device->props.port);
         lo_message_add_string(m, "@destPort");
-        const char *s = lo_address_get_port(link->props.dest_addr);
-        lo_message_add_int32(m, strtol(s, NULL, 10));
+        lo_message_add_int32(m, link->props.dest_port);
     }
     else {
         lo_message_add_string(m, link->props.src_name);
         lo_message_add_string(m, mdev_name(link->device));
         lo_message_add_string(m, "@srcPort");
-        const char *s = lo_address_get_port(link->props.src_addr);
-        lo_message_add_int32(m, strtol(s, NULL, 10));
+        lo_message_add_int32(m, link->props.src_port);
         lo_message_add_string(m, "@destPort");
-        lo_message_add_int32(m, admin->port);
-    }
-
-    // Add link scopes
-    int i;
-    lo_message_add_string(m, "@scope");
-    for (i=0; i<link->props.num_scopes; i++) {
-        lo_message_add_string(m, link->props.scope_names[i]);
+        lo_message_add_int32(m, link->device->props.port);
     }
 
     mapper_link_prepare_osc_message(m, link);
 
-    if (b) {
-        lo_bundle_add_message(b, "/linked", m);
-    }
-    else {
-        lo_send_message_from(admin->admin_addr, admin->device->server,
-                             "/linked", m);
-        lo_message_free(m);
+    if (!mapper_admin_check_bundle(admin)) {
+        lo_bundle_add_message(admin->bundle, "/linked", m);
     }
 }
 
 static void mapper_admin_send_connected(mapper_admin admin,
                                         mapper_link link,
                                         mapper_connection c,
-                                        int index, lo_bundle b,
+                                        int index,
                                         int is_outgoing)
 {
     // Send /connected message
     lo_message m = lo_message_new();
     if (!m) {
         trace("couldn't allocate lo_message\n");
+        return;
     }
 
     char src_name[1024], dest_name[1024];
@@ -855,11 +883,8 @@ static void mapper_admin_send_connected(mapper_admin admin,
 
     mapper_connection_prepare_osc_message(m, c);
 
-    if (b)
-        lo_bundle_add_message(b, "/connected", m);
-    else {
-        lo_send_message(admin->admin_addr, "/connected", m);
-        lo_message_free(m);
+    if (!mapper_admin_check_bundle(admin)) {
+        lo_bundle_add_message(admin->bundle, "/connected", m);
     }
 }
 
@@ -900,13 +925,17 @@ static int handler_device(const char *path, const char *types,
     mapper_msg_parse_params(&params, path, &types[1],
                             argc-1, &argv[1]);
 
-    if (params.types[AT_IP]==0 && params.values[AT_IP]==0) {
-        params.types[AT_IP] = types;  // 's'
-
+    if (params.types[AT_IP]==0 || params.values[AT_IP]==0) {
         // Find the sender's hostname
         lo_address a = lo_message_get_source(msg);
-        const char *host = lo_address_get_hostname(a);
-        params.values[AT_IP] = (lo_arg**)&host;
+        if (a) {
+            const char *host = lo_address_get_hostname(a);
+            if (host) {
+                params.types[AT_IP] = types;  // 's'
+                params.values[AT_IP] = (lo_arg**)&host;
+                params.lengths[AT_IP] = 1;
+            }
+        }
     }
 
     mapper_db_add_or_update_device_params(db, name, &params);
@@ -920,6 +949,7 @@ static int handler_logout(const char *path, const char *types,
                           void *user_data)
 {
     mapper_admin admin = (mapper_admin) user_data;
+    mapper_device md = admin->device;
     mapper_monitor mon = admin->monitor;
     mapper_db db = mapper_monitor_get_db(mon);
     int diff, ordinal;
@@ -940,7 +970,7 @@ static int handler_logout(const char *path, const char *types,
     }
 
     // If device exists and is registered
-    if (admin->ordinal.locked) {
+    if (md && md->ordinal.locked) {
         /* Parse the ordinal from the complete name which is in the
          * format: /<name>.<n> */
         s = name;
@@ -953,11 +983,11 @@ static int handler_logout(const char *path, const char *types,
         // If device name matches
         strtok(name, ".");
         name++;
-        if (strcmp(name, admin->identifier) == 0) {
+        if (strcmp(name, md->props.identifier) == 0) {
             // if registered ordinal is within my block, free it
-            diff = ordinal - admin->ordinal.value;
+            diff = ordinal - md->ordinal.value;
             if (diff > 0 && diff < 9) {
-                admin->ordinal.suggestion[diff-1] = 0;
+                md->ordinal.suggestion[diff-1] = 0;
             }
         }
     }
@@ -976,9 +1006,9 @@ static int handler_id_n_signals_input_get(const char *path,
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
     char sig_name[1024];
-    int i = 0, j = md->n_inputs - 1, count = 0;
+    int i = 0, j = md->props.n_inputs - 1;
 
-    if (!md->n_inputs)
+    if (!md->props.n_inputs)
         return 0;
 
     if (!argc && (md->flags & FLAGS_SENT_DEVICE_INPUTS))
@@ -991,8 +1021,8 @@ static int handler_id_n_signals_input_get(const char *path,
             i = (int)argv[0]->f;
         if (i < 0)
             i = 0;
-        else if (i >= md->n_inputs)
-            i = md->n_inputs - 1;
+        else if (i >= md->props.n_inputs)
+            i = md->props.n_inputs - 1;
         j = i;
     }
     if (argc > 1) {
@@ -1002,24 +1032,15 @@ static int handler_id_n_signals_input_get(const char *path,
             j = (int)argv[1]->f;
         if (j < i)
             j = i;
-        if (j >= md->n_inputs)
-            j = md->n_inputs - 1;
+        if (j >= md->props.n_inputs)
+            j = md->props.n_inputs - 1;
     }
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     for (; i <= j; i++) {
-        if (count++ >= 20) {
-            // split into multiple bundles
-            lo_send_bundle(admin->admin_addr, b);
-            lo_bundle_free_messages(b);
-            b = lo_bundle_new(admin->clock.now);
-            count = 0;
-        }
         mapper_signal sig = md->inputs[i];
         msig_full_name(sig, sig_name, 1024);
-        mapper_admin_send_osc(
-            admin, b, "/signal", "s", sig_name,
+        mapper_admin_send(
+            admin, ADM_SIGNAL, 0, "s", sig_name,
             AT_ID, i,
             AT_DIRECTION, "input",
             AT_TYPE, sig->props.type,
@@ -1031,8 +1052,6 @@ static int handler_id_n_signals_input_get(const char *path,
             sig->props.rate ? AT_RATE : -1, sig,
             AT_EXTRA, sig->props.extra);
     }
-    lo_send_bundle(admin->admin_addr, b);
-    lo_bundle_free_messages(b);
 
     md->flags |= FLAGS_SENT_DEVICE_INPUTS;
 
@@ -1050,9 +1069,9 @@ static int handler_id_n_signals_output_get(const char *path,
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
     char sig_name[1024];
-    int i = 0, j = md->n_outputs - 1, count = 0;
+    int i = 0, j = md->props.n_outputs - 1;
 
-    if (!md->n_outputs)
+    if (!md->props.n_outputs)
         return 0;
 
     if (!argc && (md->flags & FLAGS_SENT_DEVICE_OUTPUTS))
@@ -1065,8 +1084,8 @@ static int handler_id_n_signals_output_get(const char *path,
             i = (int)argv[0]->f;
         if (i < 0)
             i = 0;
-        else if (i >= md->n_outputs)
-            i = md->n_outputs - 1;
+        else if (i >= md->props.n_outputs)
+            i = md->props.n_outputs - 1;
         j = i;
     }
     if (argc > 1) {
@@ -1076,24 +1095,15 @@ static int handler_id_n_signals_output_get(const char *path,
             j = (int)argv[1]->f;
         if (j < i)
             j = i;
-        if (j >= md->n_outputs)
-            j = md->n_outputs - 1;
+        if (j >= md->props.n_outputs)
+            j = md->props.n_outputs - 1;
     }
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     for (; i <= j; i++) {
-        if (count++ >= 20) {
-            // split into multiple bundles
-            lo_send_bundle(admin->admin_addr, b);
-            lo_bundle_free_messages(b);
-            b = lo_bundle_new(admin->clock.now);
-            count = 0;
-        }
         mapper_signal sig = md->outputs[i];
         msig_full_name(sig, sig_name, 1024);
-        mapper_admin_send_osc(
-            admin, b, "/signal", "s", sig_name,
+        mapper_admin_send(
+            admin, ADM_SIGNAL, 0, "s", sig_name,
             AT_ID, i,
             AT_DIRECTION, "output",
             AT_TYPE, sig->props.type,
@@ -1105,8 +1115,6 @@ static int handler_id_n_signals_output_get(const char *path,
             sig->props.rate ? AT_RATE : -1, sig,
             AT_EXTRA, sig->props.extra);
     }
-    lo_send_bundle(admin->admin_addr, b);
-    lo_bundle_free_messages(b);
 
     md->flags |= FLAGS_SENT_DEVICE_OUTPUTS;
 
@@ -1173,6 +1181,7 @@ static int handler_device_name_registered(const char *path, const char *types,
                                           lo_message msg, void *user_data)
 {
     mapper_admin admin = (mapper_admin) user_data;
+    mapper_device md = admin->device;
     char *name, *s;
     int hash, ordinal, diff;
     int temp_id = -1, suggestion = -1;
@@ -1186,9 +1195,9 @@ static int handler_device_name_registered(const char *path, const char *types,
     name = &argv[0]->s;
 
     trace("</%s.?::%p> got /name/registered %s %i \n",
-          admin->identifier, admin, name, temp_id);
+          md->props.identifier, admin, name, temp_id);
 
-    if (admin->ordinal.locked) {
+    if (md->ordinal.locked) {
         /* Parse the ordinal from the complete name which is in the
          * format: /<name>.<n> */
         s = name;
@@ -1201,17 +1210,17 @@ static int handler_device_name_registered(const char *path, const char *types,
         *s = 0;
 
         // If device name matches
-        if (strcmp(name+1, admin->identifier) == 0) {
+        if (strcmp(name+1, md->props.identifier) == 0) {
             // if id is locked and registered id is within my block, store it
-            diff = ordinal - admin->ordinal.value;
+            diff = ordinal - md->ordinal.value;
             if (diff > 0 && diff < 9) {
-                admin->ordinal.suggestion[diff-1] = -1;
+                md->ordinal.suggestion[diff-1] = -1;
             }
         }
     }
     else {
         hash = crc32(0L, (const Bytef *)name, strlen(name));
-        if (hash == admin->name_hash) {
+        if (hash == md->props.name_hash) {
             if (argc > 1) {
                 if (types[1] == 'i')
                     temp_id = argv[1]->i;
@@ -1219,14 +1228,14 @@ static int handler_device_name_registered(const char *path, const char *types,
                     suggestion = argv[2]->i;
             }
             if (temp_id == admin->random_id &&
-                suggestion != admin->ordinal.value && suggestion > 0) {
-                admin->ordinal.value = suggestion;
-                mapper_admin_name_probe(admin);
+                suggestion != md->ordinal.value && suggestion > 0) {
+                md->ordinal.value = suggestion;
+                mapper_admin_probe_device_name(admin, md);
             }
             else {
                 /* Count ordinal collisions. */
-                admin->ordinal.collision_count++;
-                admin->ordinal.count_time = get_current_time();
+                md->ordinal.collision_count++;
+                md->ordinal.count_time = get_current_time();
             }
         }
     }
@@ -1239,6 +1248,7 @@ static int handler_device_name_probe(const char *path, const char *types,
                                      lo_message msg, void *user_data)
 {
     mapper_admin admin = (mapper_admin) user_data;
+    mapper_device md = admin->device;
     char *name;
     double current_time;
     int hash, temp_id = -1, i;
@@ -1256,29 +1266,29 @@ static int handler_device_name_probe(const char *path, const char *types,
     }
 
     trace("</%s.?::%p> got /name/probe %s %i \n",
-          admin->identifier, admin, name, temp_id);
+          md->props.identifier, admin, name, temp_id);
 
     hash = crc32(0L, (const Bytef *)name, strlen(name));
-    if (hash == admin->name_hash) {
-        if (admin->ordinal.locked) {
+    if (hash == md->props.name_hash) {
+        if (md->ordinal.locked) {
             current_time = get_current_time();
             for (i=0; i<8; i++) {
-                if (admin->ordinal.suggestion[i] >= 0
-                    && (current_time - admin->ordinal.suggestion[i]) > 2.0) {
+                if (md->ordinal.suggestion[i] >= 0
+                    && (current_time - md->ordinal.suggestion[i]) > 2.0) {
                     // reserve suggested ordinal
-                    admin->ordinal.suggestion[i] = get_current_time();
+                    md->ordinal.suggestion[i] = get_current_time();
                     break;
                 }
             }
             /* Name may not yet be registered, so we can't use
-             * mapper_admin_send_osc() here. */
+             * mapper_admin_send() here. */
             lo_send(admin->admin_addr, "/name/registered",
                     "sii", name, temp_id,
-                    (admin->ordinal.value+i+1));
+                    (md->ordinal.value+i+1));
         }
         else {
-            admin->ordinal.collision_count++;
-            admin->ordinal.count_time = get_current_time();
+            md->ordinal.collision_count++;
+            md->ordinal.count_time = get_current_time();
         }
     }
     return 0;
@@ -1290,6 +1300,7 @@ static int handler_device_link(const char *path, const char *types,
                                void *user_data)
 {
     mapper_admin admin = (mapper_admin) user_data;
+    mapper_device md = admin->device;
     const char *src_name, *dest_name;
 
     if (argc < 2)
@@ -1303,10 +1314,10 @@ static int handler_device_link(const char *path, const char *types,
     src_name = &argv[0]->s;
     dest_name = &argv[1]->s;
 
-    if (strcmp(mapper_admin_name(admin), dest_name))
+    if (strcmp(mdev_name(md), dest_name))
         return 0;
 
-    trace("<%s> got /link %s %s\n", mapper_admin_name(admin),
+    trace("<%s> got /link %s %s\n", mdev_name(md),
           src_name, dest_name);
 
     mapper_message_t params;
@@ -1315,15 +1326,16 @@ static int handler_device_link(const char *path, const char *types,
                                 argc-2, &argv[2]))
     {
         trace("<%s> error parsing message parameters in /link.\n",
-              mapper_admin_name(admin));
+              mdev_name(md));
         return 0;
     }
 
-    lo_arg *arg_port = (lo_arg*) &admin->port;
+    lo_arg *arg_port = (lo_arg*) &md->props.port;
     params.values[AT_DEST_PORT] = &arg_port;
     params.types[AT_DEST_PORT] = "i";
-    mapper_admin_send_osc_with_params(
-        admin, &params, 0, "/linkTo", "ss", src_name, dest_name);
+    params.lengths[AT_DEST_PORT] = 1;
+    mapper_admin_send_with_params(
+        admin, &params, 0, ADM_LINK_TO, 0, "ss", src_name, dest_name);
 
     return 0;
 }
@@ -1336,7 +1348,7 @@ static int handler_device_linkTo(const char *path, const char *types,
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
 
-    const char *src_name, *dest_name, *host=0, *scope=0;
+    const char *src_name, *dest_name, *host=0;
     int port;
     mapper_message_t params;
 
@@ -1350,14 +1362,14 @@ static int handler_device_linkTo(const char *path, const char *types,
     src_name = &argv[0]->s;
     dest_name = &argv[1]->s;
 
-    if (strcmp(src_name, mapper_admin_name(admin)))
+    if (strcmp(src_name, mdev_name(md)))
     {
         trace("<%s> ignoring /linkTo %s %s\n",
-              mapper_admin_name(admin), src_name, dest_name);
+              mdev_name(md), src_name, dest_name);
         return 0;
     }
 
-    trace("<%s> got /linkTo %s %s\n", mapper_admin_name(admin),
+    trace("<%s> got /linkTo %s %s\n", mdev_name(md),
           src_name, dest_name);
 
     // Parse the message.
@@ -1365,23 +1377,17 @@ static int handler_device_linkTo(const char *path, const char *types,
                                 argc-2, &argv[2]))
     {
         trace("<%s> error parsing message parameters in /linkTo.\n",
-              mapper_admin_name(admin));
+              mdev_name(md));
         return 0;
     }
 
-    // Retrieve scope if specified
-    scope = mapper_msg_get_param_if_string(&params, AT_SCOPE);
-
     // Discover whether the device is already linked.
     mapper_router router =
         mapper_router_find_by_dest_name(md->routers, dest_name);
 
     if (router) {
-        // Already linked, add scope and metadata.
-        if (!mapper_router_add_scope(router, scope))
-            mapper_admin_send_linked(admin, router, 0, 1);
-        if (argc > 2)
-            mapper_router_set_from_message(router, &params);
+        // Already linked, forward to link/modify handler.
+        handler_device_link_modify(path, types, argv, argc, msg, user_data);
         return 0;
     }
 
@@ -1391,6 +1397,10 @@ static int handler_device_linkTo(const char *path, const char *types,
         // Find the sender's hostname
         lo_address a = lo_message_get_source(msg);
         host = lo_address_get_hostname(a);
+        if (!host) {
+            trace("can't perform /linkTo, host unknown\n");
+            return 0;
+        }
     }
 
     // Retrieve the port
@@ -1400,26 +1410,26 @@ static int handler_device_linkTo(const char *path, const char *types,
     }
 
     // Creation of a new router added to the source.
-    router = mapper_router_new(md, host, port, dest_name, scope ? 0 : 1);
+    router = mapper_router_new(md, host, port, dest_name);
     if (!router) {
         trace("can't perform /linkTo, NULL router\n");
         return 0;
     }
     mdev_add_router(md, router);
-    mapper_router_add_scope(router, scope);
+
     if (argc > 2)
         mapper_router_set_from_message(router, &params);
 
-    // Inform user code of the new link if requested
+    // Call local link handler if it exists
     if (md->link_cb)
         md->link_cb(md, &router->props, MDEV_LOCAL_ESTABLISHED,
                     md->link_cb_userdata);
 
     // Announce the result.
-    mapper_admin_send_linked(admin, router, 0, 1);
+    mapper_admin_send_linked(admin, router, 1);
 
     trace("<%s> added new router to %s -> host: %s, port: %d\n",
-          mapper_admin_name(admin), dest_name, host, port);
+          mdev_name(md), dest_name, host, port);
 
     return 0;
 }
@@ -1434,7 +1444,7 @@ static int handler_device_linked(const char *path, const char *types,
     mapper_monitor mon = admin->monitor;
     mapper_db db = mapper_monitor_get_db(mon);
 
-    const char *src_name, *dest_name, *host=0, *scope=0;
+    const char *src_name, *dest_name, *host=0;
     int port = -1;
 
     if (argc < 2)
@@ -1458,42 +1468,113 @@ static int handler_device_linked(const char *path, const char *types,
     if (!md || strcmp(mdev_name(md), dest_name))
         return 0;
 
-    // Retrieve scope if specified
-    scope = mapper_msg_get_param_if_string(&params, AT_SCOPE);
-
     // Add a receiver data structure
     mapper_receiver receiver =
         mapper_receiver_find_by_src_name(md->receivers, src_name);
 
     if (receiver) {
-        // Already linked, add scope and metadata.
-        mapper_receiver_add_scope(receiver, scope);
-        if (argc > 2)
-            mapper_receiver_set_from_message(receiver, &params);
-        // Inform user code of the new link if requested
-        if (md->link_cb)
-            md->link_cb(md, &receiver->props, MDEV_LOCAL_ESTABLISHED,
-                        md->link_cb_userdata);
+        // Already linked, add metadata.
+        if (argc <= 2)
+            return 0;
+        if (mapper_receiver_set_from_message(receiver, &params)) {
+            // Call local link handler if it exists
+            if (md->link_cb)
+                md->link_cb(md, &receiver->props, MDEV_LOCAL_MODIFIED,
+                            md->link_cb_userdata);
+        }
         return 0;
     }
 
     // Find the sender's hostname
     lo_address a = lo_message_get_source(msg);
     host = lo_address_get_hostname(a);
+    if (!host) {
+        trace("can't add receiver on /linked, host unknown\n");
+        return 0;
+    }
 
     // Retrieve the src device port if it is defined
     mapper_msg_get_param_if_int(&params, AT_SRC_PORT, &port);
 
-    receiver = mapper_receiver_new(md, host, port, src_name, scope ? 0 : 1);
+    receiver = mapper_receiver_new(md, host, port, src_name);
     if (!receiver) {
         trace("Error: NULL receiver\n");
         return 0;
     }
     mdev_add_receiver(md, receiver);
-    mapper_receiver_add_scope(receiver, scope);
     if (argc > 2)
         mapper_receiver_set_from_message(receiver, &params);
 
+    // Call local link handler if it exists
+    if (md->link_cb)
+    md->link_cb(md, &receiver->props, MDEV_LOCAL_ESTABLISHED,
+                md->link_cb_userdata);
+
+    return 0;
+}
+
+/*! Modify the link properties : scope, etc. */
+static int handler_device_link_modify(const char *path, const char *types,
+                                      lo_arg **argv, int argc, lo_message msg,
+                                      void *user_data)
+{
+    mapper_admin admin = (mapper_admin) user_data;
+    mapper_device md = admin->device;
+
+    const char *src_name, *dest_name;
+    int updated;
+    mapper_message_t params;
+
+    if (argc < 2)
+        return 0;
+
+    if (types[0] != 's' && types[0] != 'S' && types[1] != 's'
+        && types[1] != 'S')
+        return 0;
+
+    src_name = &argv[0]->s;
+    dest_name = &argv[1]->s;
+
+    if (strcmp(src_name, mdev_name(md))) {
+        trace("<%s> ignoring /link/modify %s %s\n",
+              mdev_name(md), src_name, dest_name);
+        return 0;
+    }
+
+    trace("<%s> got /link/modify %s %s\n", mdev_name(md),
+          src_name, dest_name);
+
+    // Discover whether the device is already linked.
+    mapper_router router =
+        mapper_router_find_by_dest_name(md->routers, dest_name);
+
+    if (!router)
+        return 0;
+
+    // Parse the message.
+    if (mapper_msg_parse_params(&params, path, &types[2], argc-2, &argv[2])) {
+        trace("<%s> error parsing message parameters in /link/modify.\n",
+              mdev_name(md));
+        return 0;
+    }
+
+    updated = mapper_router_set_from_message(router, &params);
+
+    if (updated) {
+        // increment device version
+        md->version += updated;
+
+        // Call local link handler if it exists
+        if (md->link_cb)
+            md->link_cb(md, &router->props, MDEV_LOCAL_MODIFIED,
+                        md->link_cb_userdata);
+
+        // Announce the result.
+        mapper_admin_send_linked(admin, router, 1);
+
+        trace("<%s> modified link to %s\n", mdev_name(md), dest_name);
+    }
+
     return 0;
 }
 
@@ -1517,23 +1598,16 @@ static int handler_device_links_in_get(const char *path, const char *types,
     mapper_device md = admin->device;
     mapper_router receiver = md->receivers;
 
-    trace("<%s> got %s/links/get\n", mapper_admin_name(admin),
-          mapper_admin_name(admin));
+    trace("<%s> got %s/links/get\n", mdev_name(md), path);
 
     if (md->flags & FLAGS_SENT_DEVICE_LINKS_IN)
         return 0;
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     /* Iterate through outgoing links */
     while (receiver != NULL) {
-        mapper_admin_send_linked(admin, receiver, b, 0);
+        mapper_admin_send_linked(admin, receiver, 0);
         receiver = receiver->next;
     }
-    if (b) {
-        lo_send_bundle_from(admin->admin_addr, md->server, b);
-        lo_bundle_free_messages(b);
-    }
 
     md->flags |= FLAGS_SENT_DEVICE_LINKS_IN;
 
@@ -1549,23 +1623,17 @@ static int handler_device_links_out_get(const char *path, const char *types,
     mapper_device md = admin->device;
     mapper_router router = md->routers;
 
-    trace("<%s> got %s/links/get\n", mapper_admin_name(admin),
-          mapper_admin_name(admin));
+    trace("<%s> got %s/links/get\n", mdev_name(md),
+          mdev_name(md));
 
     if (md->flags & FLAGS_SENT_DEVICE_LINKS_OUT)
         return 0;
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     /* Iterate through outgoing links */
     while (router != NULL) {
-        mapper_admin_send_linked(admin, router, b, 1);
+        mapper_admin_send_linked(admin, router, 1);
         router = router->next;
     }
-    if (b) {
-        lo_send_bundle_from(admin->admin_addr, md->server, b);
-        lo_bundle_free_messages(b);
-    }
 
     md->flags |= FLAGS_SENT_DEVICE_LINKS_OUT;
 
@@ -1577,7 +1645,7 @@ static int handler_device_unlink(const char *path, const char *types,
                                  lo_arg **argv, int argc, lo_message msg,
                                  void *user_data)
 {
-    const char *src_name, *dest_name, *scope = 0;
+    const char *src_name, *dest_name;
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
 
@@ -1591,7 +1659,7 @@ static int handler_device_unlink(const char *path, const char *types,
     src_name = &argv[0]->s;
     dest_name = &argv[1]->s;
 
-    trace("<%s> got /unlink %s %s + %i arguments\n", mapper_admin_name(admin),
+    trace("<%s> got /unlink %s %s + %i arguments\n", mdev_name(md),
           src_name, dest_name, argc-2);
 
     mapper_message_t params;
@@ -1600,37 +1668,29 @@ static int handler_device_unlink(const char *path, const char *types,
                                 argc-2, &argv[2]))
     {
         trace("<%s> error parsing message parameters in /unlink.\n",
-              mapper_admin_name(admin));
+              mdev_name(md));
         return 0;
     }
 
-    scope = mapper_msg_get_param_if_string(&params, AT_SCOPE);
-
-    if (strcmp(mapper_admin_name(admin), src_name))
+    if (strcmp(mdev_name(md), src_name))
         return 0;
 
     /* Remove the router for the destination. */
     mapper_router router =
         mapper_router_find_by_dest_name(md->routers, dest_name);
     if (router) {
-        if (scope) {
-            mapper_router_remove_scope(router, scope);
-            mapper_admin_send_linked(admin, router, 0, 1);
-            return 0;
-        }
-
-        // Inform user code of the destroyed link if requested
+        // Call the local link handler if it exists
         if (md->link_cb)
             md->link_cb(md, &router->props, MDEV_LOCAL_DESTROYED,
                         md->link_cb_userdata);
 
         mdev_remove_router(md, router);
-        mapper_admin_send_osc_with_params(
-            admin, &params, 0, "/unlinked", "ss", mapper_admin_name(admin), dest_name);
+        mapper_admin_send_with_params(
+            admin, &params, 0, ADM_UNLINKED, 0, "ss", mdev_name(md), dest_name);
     }
     else {
         trace("<%s> no router for %s found in /unlink handler\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
     }
     return 0;
 }
@@ -1661,11 +1721,9 @@ static int handler_device_unlinked(const char *path, const char *types,
                                 argc-2, &argv[2]))
     {
         trace("<%s> error parsing message parameters in /unlinked.\n",
-              mapper_admin_name(admin));
+              mdev_name(md));
         return 0;
     }
-    const char *scope = mapper_msg_get_param_if_string(&params, AT_SCOPE);
-
 
     if (mon) {
         trace("<monitor> got /unlinked %s %s + %i arguments\n",
@@ -1673,21 +1731,18 @@ static int handler_device_unlinked(const char *path, const char *types,
 
         mapper_db db = mapper_monitor_get_db(mon);
 
-        if (!scope) {
-            mapper_db_remove_connections_by_query(db,
-                mapper_db_get_connections_by_src_dest_device_names(db, src_name,
-                                                                   dest_name));
-            mapper_db_remove_link(db,
-                mapper_db_get_link_by_src_dest_names(db, src_name,
-                                                     dest_name));
-        }
+        mapper_db_remove_connections_by_query(db,
+            mapper_db_get_connections_by_src_dest_device_names(db, src_name,
+                                                               dest_name));
+        mapper_db_remove_link(db,
+            mapper_db_get_link_by_src_dest_names(db, src_name, dest_name));
     }
 
     if (md) {
         trace("<%s> got /unlinked %s %s + %i arguments\n",
-              mapper_admin_name(admin), src_name, dest_name, argc-2);
+              mdev_name(md), src_name, dest_name, argc-2);
 
-        if (strcmp(mapper_admin_name(admin), dest_name))
+        if (strcmp(mdev_name(md), dest_name))
             return 0;
 
         mapper_message_t params;
@@ -1695,21 +1750,15 @@ static int handler_device_unlinked(const char *path, const char *types,
                                     argc-2, &argv[2]))
         {
             trace("<%s> error parsing message parameters in /unlinked.\n",
-                  mapper_admin_name(admin));
+                  mdev_name(md));
             return 0;
         }
 
-        const char *scope = mapper_msg_get_param_if_string(&params, AT_SCOPE);
-
         /* Remove the receiver for the source. */
         mapper_receiver receiver =
             mapper_receiver_find_by_src_name(md->receivers, src_name);
         if (receiver) {
-            if (scope) {
-                mapper_receiver_remove_scope(receiver, scope);
-                return 0;
-            }
-            // Inform user code of the destroyed link if requested
+            // Call the local link handler if it exists
             if (md->link_cb)
                 md->link_cb(md, &receiver->props, MDEV_LOCAL_DESTROYED,
                             md->link_cb_userdata);
@@ -1717,25 +1766,25 @@ static int handler_device_unlinked(const char *path, const char *types,
         }
         else {
             trace("<%s> no receiver for %s found in /unlinked handler\n",
-                  mapper_admin_name(admin), src_name);
+                  mdev_name(md), src_name);
         }
     }
     return 0;
 }
 
-/* Helper function to check if the OSC prefix matches.  Like strcmp(),
+/* Helper function to check if the prefix matches.  Like strcmp(),
  * returns 0 if they match (up to the second '/'), non-0 otherwise.
  * Also optionally returns a pointer to the remainder of str1 after
  * the prefix. */
-static int osc_prefix_cmp(const char *str1, const char *str2,
-                          const char **rest)
+static int prefix_cmp(const char *str1, const char *str2,
+                      const char **rest)
 {
     if (str1[0]!='/') {
-        trace("OSC string '%s' does not start with '/'.\n", str1);
+        trace("String '%s' does not start with '/'.\n", str1);
         return -1;
     }
     if (str2[0]!='/') {
-        trace("OSC string '%s' does not start with '/'.\n", str2);
+        trace("String '%s' does not start with '/'.\n", str2);
         return -1;
     }
 
@@ -1775,7 +1824,7 @@ static int handler_signal_connect(const char *path, const char *types,
         return 0;
 
     dest_name = &argv[1]->s;
-    if (osc_prefix_cmp(dest_name, mapper_admin_name(admin),
+    if (prefix_cmp(dest_name, mdev_name(md),
                        &dest_signal_name))
         return 0;
 
@@ -1784,17 +1833,17 @@ static int handler_signal_connect(const char *path, const char *types,
 
     if (!src_signal_name) {
         trace("<%s> source '%s' has no parameter in /connect.\n",
-              mapper_admin_name(admin), src_name);
+              mdev_name(md), src_name);
         return 0;
     }
 
-    trace("<%s> got /connect %s %s\n", mapper_admin_name(admin),
+    trace("<%s> got /connect %s %s\n", mdev_name(md),
           src_name, dest_name);
 
     if (!(input=mdev_get_input_by_name(md, dest_signal_name, 0)))
     {
         trace("<%s> no input signal found for '%s' in /connect\n",
-              mapper_admin_name(admin), dest_signal_name);
+              mdev_name(md), dest_signal_name);
         return 0;
     }
 
@@ -1805,7 +1854,7 @@ static int handler_signal_connect(const char *path, const char *types,
                                 argc-2, &argv[2]))
     {
         trace("<%s> error parsing message parameters in /connect.\n",
-              mapper_admin_name(admin));
+              mdev_name(md));
         return 0;
     }
 
@@ -1813,30 +1862,23 @@ static int handler_signal_connect(const char *path, const char *types,
     lo_arg *arg_type = (lo_arg*) &input->props.type;
     params.values[AT_TYPE] = &arg_type;
     params.types[AT_TYPE] = "c";
+    params.lengths[AT_TYPE] = 1;
 
     lo_arg *arg_length = (lo_arg*) &input->props.length;
     params.values[AT_LENGTH] = &arg_length;
     params.types[AT_LENGTH] = "i";
-
-    lo_arg *arg_min = (lo_arg*) input->props.minimum;
-    if (!params.values[AT_MIN] && input->props.minimum) {
-        params.values[AT_MIN] = &arg_min;
-        params.types[AT_MIN] = &input->props.type;
-    }
-
-    lo_arg *arg_max = (lo_arg*) input->props.maximum;
-    if (!params.values[AT_MAX] && input->props.maximum) {
-        params.values[AT_MAX] = &arg_max;
-        params.types[AT_MAX] = &input->props.type;
-    }
+    params.lengths[AT_LENGTH] = 1;
 
     lo_arg *arg_num_instances = (lo_arg*) &input->props.num_instances;
     params.values[AT_INSTANCES] = &arg_num_instances;
     params.types[AT_INSTANCES] = "i";
+    params.lengths[AT_INSTANCES] = 1;
 
-    mapper_admin_send_osc_with_params(
+    mapper_admin_send_with_params(
         admin, &params, input->props.extra,
-        "/connectTo", "ss", src_name, dest_name);
+        ADM_CONNECT_TO, 0, "ss", src_name, dest_name,
+        (!params.values[AT_MIN] && input->props.minimum) ? AT_MIN : -1, input,
+        (!params.values[AT_MAX] && input->props.maximum) ? AT_MAX : -1, input);
 
     return 0;
 }
@@ -1861,8 +1903,8 @@ static int handler_signal_connectTo(const char *path, const char *types,
         return 0;
 
     src_name = &argv[0]->s;
-    if (osc_prefix_cmp(src_name, mapper_admin_name(admin),
-                       &src_signal_name))
+    if (prefix_cmp(src_name, mdev_name(md),
+                   &src_signal_name))
         return 0;
 
     dest_name = &argv[1]->s;
@@ -1870,17 +1912,17 @@ static int handler_signal_connectTo(const char *path, const char *types,
 
     if (!dest_signal_name) {
         trace("<%s> destination '%s' has no parameter in /connectTo.\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
         return 0;
     }
 
     trace("<%s> got /connectTo %s %s + %d arguments\n",
-          mapper_admin_name(admin), src_name, dest_name, argc-2);
+          mdev_name(md), src_name, dest_name, argc-2);
 
     if (!(output=mdev_get_output_by_name(md, src_signal_name, 0)))
     {
         trace("<%s> no output signal found for '%s' in /connectTo\n",
-              mapper_admin_name(admin), src_signal_name);
+              mdev_name(md), src_signal_name);
         return 0;
     }
 
@@ -1888,7 +1930,7 @@ static int handler_signal_connectTo(const char *path, const char *types,
     if (mapper_msg_parse_params(&params, path, types+2, argc-2, &argv[2]))
     {
         trace("<%s> error parsing parameters in /connectTo, "
-              "continuing anyway.\n", mapper_admin_name(admin));
+              "continuing anyway.\n", mdev_name(md));
     }
 
     mapper_router router =
@@ -1900,7 +1942,7 @@ static int handler_signal_connectTo(const char *path, const char *types,
      * applications. */
     if (!router) {
         trace("<%s> not linked to '%s' on /connectTo.\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
         return 0;
     }
 
@@ -1961,9 +2003,9 @@ static int handler_signal_connectTo(const char *path, const char *types,
         mapper_connection_set_from_message(c, &params);
     }
 
-    mapper_admin_send_connected(admin, router, c, -1, 0, 1);
+    mapper_admin_send_connected(admin, router, c, -1, 1);
 
-    // Inform user code of the new connection if requested
+    // Call local connection handler if it exists
     if (md->connection_cb)
         md->connection_cb(md, &router->props, output,
                           &c->props, MDEV_LOCAL_ESTABLISHED,
@@ -1997,8 +2039,8 @@ static int handler_signal_connected(const char *path, const char *types,
 
     mapper_message_t params;
     if (mapper_msg_parse_params(&params, path, types+2, argc-2, argv+2)) {
-        lo_message_pp(msg);
-        return 0;
+        trace("<%s> error parsing parameters in /connected, "
+              "continuing anyway.\n", mdev_name(md));
     }
 
     if (mon) {
@@ -2010,12 +2052,12 @@ static int handler_signal_connected(const char *path, const char *types,
                                                   dest_name, &params);
     }
 
-    if (!md || osc_prefix_cmp(dest_name, mapper_admin_name(admin),
-                              &dest_signal_name))
+    if (!md || prefix_cmp(dest_name, mdev_name(md),
+                          &dest_signal_name))
         return 0;
 
     trace("<%s> got /connected %s %s + %d arguments\n",
-          mapper_admin_name(admin), src_name, dest_name, argc-2);
+          mdev_name(md), src_name, dest_name, argc-2);
 
     src_signal_name = strchr(src_name+1, '/');
     if (!src_signal_name)
@@ -2028,13 +2070,28 @@ static int handler_signal_connected(const char *path, const char *types,
         mapper_receiver_find_by_src_name(md->receivers, src_name);
     if (!receiver) {
         trace("<%s> not linked from '%s' on /connected.\n",
-              mapper_admin_name(admin), src_name);
+              mdev_name(md), src_name);
         return 0;
     }
 
     mapper_connection c =
         mapper_receiver_find_connection_by_names(receiver, src_signal_name,
                                                  dest_signal_name);
+    if (c) {
+        if (argc <= 2)
+            return 0;
+        // connection already exists, add metadata
+        int updated = mapper_connection_set_from_message(c, &params);
+        if (updated) {
+            // Call local connection handler if it exists
+            if (md->connection_cb)
+                md->connection_cb(md, &receiver->props, input,
+                                  &c->props, MDEV_LOCAL_MODIFIED,
+                                  md->connection_cb_userdata);
+        }
+        return 0;
+    }
+
     if (!c) {
         /* Creation of a connection requires the type and length info. */
         if (!params.values[AT_SRC_TYPE] || !params.values[AT_SRC_LENGTH])
@@ -2064,7 +2121,7 @@ static int handler_signal_connected(const char *path, const char *types,
         mapper_connection_set_from_message(c, &params);
     }
 
-    // Inform user code of the new connection if requested
+    // Call local connection handler if it exists
     if (md->connection_cb)
         md->connection_cb(md, &receiver->props, input,
                           &c->props, MDEV_LOCAL_ESTABLISHED,
@@ -2095,8 +2152,8 @@ static int handler_signal_connection_modify(const char *path, const char *types,
         return 0;
 
     src_name = &argv[0]->s;
-    if (osc_prefix_cmp(src_name, mapper_admin_name(admin),
-                       &src_signal_name))
+    if (prefix_cmp(src_name, mdev_name(md),
+                   &src_signal_name))
         return 0;
 
     dest_name = &argv[1]->s;
@@ -2104,14 +2161,14 @@ static int handler_signal_connection_modify(const char *path, const char *types,
 
     if (!dest_signal_name) {
         trace("<%s> destination '%s' has no parameter in /connection/modify.\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
         return 0;
     }
 
     if (!(output=mdev_get_output_by_name(md, src_signal_name, 0)))
     {
         trace("<%s> no output signal found for '%s' in /connection/modify\n",
-              mapper_admin_name(admin), src_signal_name);
+              mdev_name(md), src_signal_name);
         return 0;
     }
 
@@ -2120,7 +2177,8 @@ static int handler_signal_connection_modify(const char *path, const char *types,
     if (!router)
     {
         trace("<%s> no router found for '%s' in /connection/modify\n",
-              mapper_admin_name(admin), &argv[1]->s);
+              mdev_name(md), &argv[1]->s);
+        return 0;
     }
 
     mapper_connection c =
@@ -2133,12 +2191,18 @@ static int handler_signal_connection_modify(const char *path, const char *types,
     if (mapper_msg_parse_params(&params, path, types+2, argc-2, &argv[2]))
     {
         trace("<%s> error parsing parameters in /connection/modify, "
-              "continuing anyway.\n", mapper_admin_name(admin));
+              "continuing anyway.\n", mdev_name(md));
     }
 
-    mapper_connection_set_from_message(c, &params);
-
-    mapper_admin_send_connected(admin, router, c, -1, 0, 1);
+    int updated = mapper_connection_set_from_message(c, &params);
+    if (updated) {
+        mapper_admin_send_connected(admin, router, c, -1, 1);
+        // Call local connection handler if it exists
+        if (md->connection_cb)
+            md->connection_cb(md, &router->props, output,
+                              &c->props, MDEV_LOCAL_MODIFIED,
+                              md->connection_cb_userdata);
+    }
 
     return 0;
 }
@@ -2163,7 +2227,7 @@ static int handler_signal_disconnect(const char *path, const char *types,
         return 0;
 
     src_name = &argv[0]->s;
-    if (osc_prefix_cmp(src_name, mapper_admin_name(admin), &src_signal_name) != 0)
+    if (prefix_cmp(src_name, mdev_name(md), &src_signal_name) != 0)
         return 0;
 
     dest_name = &argv[1]->s;
@@ -2171,14 +2235,14 @@ static int handler_signal_disconnect(const char *path, const char *types,
 
     if (!dest_signal_name) {
         trace("<%s> destination '%s' has no parameter in /disconnect.\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
         return 0;
     }
 
     if (!(sig=mdev_get_output_by_name(md, src_signal_name, 0)))
     {
         trace("<%s> no output signal found for '%s' in /disconnect\n",
-              mapper_admin_name(admin), src_name);
+              mdev_name(md), src_name);
         return 0;
     }
 
@@ -2186,7 +2250,7 @@ static int handler_signal_disconnect(const char *path, const char *types,
                                                       dest_name);
     if (!r) {
         trace("<%s> ignoring /disconnect, no router found for '%s'\n",
-              mapper_admin_name(admin), dest_name);
+              mdev_name(md), dest_name);
         return 0;
     }
 
@@ -2196,11 +2260,11 @@ static int handler_signal_disconnect(const char *path, const char *types,
     if (!c) {
         trace("<%s> ignoring /disconnect, "
               "no connection found for '%s' -> '%s'\n",
-              mapper_admin_name(admin), src_name, dest_name);
+              mdev_name(md), src_name, dest_name);
         return 0;
     }
 
-    // Inform user code of the destroyed connection if requested
+    // Call local connection handler if it exists
     if (md->connection_cb)
         md->connection_cb(md, &r->props, sig, &c->props, MDEV_LOCAL_DESTROYED,
                           md->connection_cb_userdata);
@@ -2210,8 +2274,8 @@ static int handler_signal_disconnect(const char *path, const char *types,
         return 0;
     }
 
-    mapper_admin_send_osc(admin, 0, "/disconnected", "ss",
-                          src_name, dest_name);
+    mapper_admin_send(admin, ADM_DISCONNECTED, 0, "ss",
+                      src_name, dest_name);
 
     return 0;
 }
@@ -2249,8 +2313,8 @@ static int handler_signal_disconnected(const char *path, const char *types,
                                                           dest_name));
     }
 
-    if (!md || osc_prefix_cmp(dest_name, mapper_admin_name(admin),
-                              &dest_signal_name))
+    if (!md || prefix_cmp(dest_name, mdev_name(md),
+                          &dest_signal_name))
         return 0;
 
     src_signal_name = strchr(src_name+1, '/');
@@ -2258,7 +2322,7 @@ static int handler_signal_disconnected(const char *path, const char *types,
         return 0;
 
     trace("<%s> got /disconnected %s %s\n",
-          mapper_admin_name(admin), src_name, dest_name);
+          mdev_name(md), src_name, dest_name);
 
     mapper_signal sig;
     if (!(sig=mdev_get_input_by_name(md, dest_signal_name, 0)))
@@ -2268,7 +2332,7 @@ static int handler_signal_disconnected(const char *path, const char *types,
                                                          src_name);
     if (!r) {
         trace("<%s> ignoring /disconnected, no receiver found for '%s'\n",
-              mapper_admin_name(admin), src_name);
+              mdev_name(md), src_name);
         return 0;
     }
 
@@ -2278,7 +2342,7 @@ static int handler_signal_disconnected(const char *path, const char *types,
     if (!c) {
         trace("<%s> ignoring /disconnected, "
               "no connection found for '%s' -> '%s'\n",
-              mapper_admin_name(admin), src_name, dest_name);
+              mdev_name(md), src_name, dest_name);
         return 0;
     }
 
@@ -2315,9 +2379,9 @@ static int handler_device_connections_in_get(const char *path,
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
     mapper_router receiver = md->receivers;
-    int i = 0, min = -1, max = -1, count = 0;
+    int i = 0, min = -1, max = -1;
 
-    trace("<%s> got /connections/get\n", mapper_admin_name(admin));
+    trace("<%s> got /connections/get\n", mdev_name(md));
 
     if (!argc && (md->flags & FLAGS_SENT_DEVICE_CONNECTIONS_IN))
         return 0;
@@ -2339,8 +2403,6 @@ static int handler_device_connections_in_get(const char *path,
             max = min + 1;
     }
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     while (receiver) {
         mapper_receiver_signal rs = receiver->signals;
         while (rs) {
@@ -2349,14 +2411,7 @@ static int handler_device_connections_in_get(const char *path,
                 if (max > 0 && i > max)
                     break;
                 if (i >= min) {
-                    if (count++ >= 20) {
-                        // split into multiple bundles
-                        lo_send_bundle(admin->admin_addr, b);
-                        lo_bundle_free_messages(b);
-                        b = lo_bundle_new(admin->clock.now);
-                        count = 0;
-                    }
-                    mapper_admin_send_connected(admin, receiver, c, i, b, 0);
+                    mapper_admin_send_connected(admin, receiver, c, i, 0);
                 }
                 c = c->next;
                 i++;
@@ -2365,8 +2420,6 @@ static int handler_device_connections_in_get(const char *path,
         }
         receiver = receiver->next;
     }
-    lo_send_bundle(admin->admin_addr, b);
-    lo_bundle_free_messages(b);
 
     md->flags |= FLAGS_SENT_DEVICE_CONNECTIONS_IN;
     return 0;
@@ -2381,9 +2434,9 @@ static int handler_device_connections_out_get(const char *path,
     mapper_admin admin = (mapper_admin) user_data;
     mapper_device md = admin->device;
     mapper_router router = md->routers;
-    int i = 0, min = -1, max = -1, count = 0;
+    int i = 0, min = -1, max = -1;
 
-    trace("<%s> got /connections/get\n", mapper_admin_name(admin));
+    trace("<%s> got /connections/get\n", mdev_name(md));
 
     if (!argc && (md->flags & FLAGS_SENT_DEVICE_CONNECTIONS_OUT))
         return 0;
@@ -2405,8 +2458,6 @@ static int handler_device_connections_out_get(const char *path,
             max = min + 1;
     }
 
-    mapper_clock_now(&admin->clock, &admin->clock.now);
-    lo_bundle b = lo_bundle_new(admin->clock.now);
     while (router) {
         mapper_router_signal rs = router->signals;
         while (rs) {
@@ -2415,14 +2466,7 @@ static int handler_device_connections_out_get(const char *path,
                 if (max > 0 && i > max)
                     break;
                 if (i >= min) {
-                    if (count++ >= 20) {
-                        // split into multiple bundles
-                        lo_send_bundle(admin->admin_addr, b);
-                        lo_bundle_free_messages(b);
-                        b = lo_bundle_new(admin->clock.now);
-                        count = 0;
-                    }
-                    mapper_admin_send_connected(admin, router, c, i, b, 1);
+                    mapper_admin_send_connected(admin, router, c, i, 1);
                 }
                 c = c->next;
                 i++;
@@ -2431,8 +2475,6 @@ static int handler_device_connections_out_get(const char *path,
         }
         router = router->next;
     }
-    lo_send_bundle(admin->admin_addr, b);
-    lo_bundle_free_messages(b);
 
     md->flags |= FLAGS_SENT_DEVICE_CONNECTIONS_OUT;
     return 0;
@@ -2457,7 +2499,7 @@ static int handler_sync(const char *path,
 
     // get current time
     mapper_timetag_t now;
-    mapper_clock_now(&admin->clock, &now);
+    mapper_clock_now(clock, &now);
 
     // store remote timetag
     clock->remote.device_id = device_id;
diff --git a/src/config.h.in b/src/config.h.in
deleted file mode 100644
index a0723ea..0000000
--- a/src/config.h.in
+++ /dev/null
@@ -1,126 +0,0 @@
-/* src/config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define if getifaddrs() is available. */
-#undef HAVE_GETIFADDRS
-
-/* Define if gettimeofday() is available. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define if inet_ptoa() is available. */
-#undef HAVE_INET_PTOA
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if iphlpapi library is available. (Windows) */
-#undef HAVE_LIBIPHLPAPI
-
-/* Define to enable Open Sound Control support with liblo */
-#undef HAVE_LIBLO
-
-/* Define to use lo_bundle_count function in liblo. */
-#undef HAVE_LIBLO_BUNDLE_COUNT
-
-/* Define to use lo_server_new_multicast_iface function in liblo. */
-#undef HAVE_LIBLO_SERVER_IFACE
-
-/* Define to use lo_address_set_iface function in liblo. */
-#undef HAVE_LIBLO_SET_IFACE
-
-/* Define to 1 if you have the `z' library (-lz). */
-#undef HAVE_LIBZ
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define if you have POSIX threads libraries and header files. */
-#undef HAVE_PTHREAD
-
-/* 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/time.h> header file. */
-#undef HAVE_SYS_TIME_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 <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#undef HAVE_WINSOCK2_H
-
-/* Define to 1 if you have the <zlib.h> header file. */
-#undef HAVE_ZLIB_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 necessary symbol if this constant uses a non-standard name on
-   your system. */
-#undef PTHREAD_CREATE_JOINABLE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/src/connection.c b/src/connection.c
index d074210..cc3044a 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -39,7 +39,7 @@ const char* mapper_mode_type_strings[] =
 
 const char *mapper_get_boundary_action_string(mapper_boundary_action bound)
 {
-    die_unless(bound < N_MAPPER_BOUNDARY_ACTIONS && bound >= 0,
+    die_unless(bound < N_MAPPER_BOUNDARY_ACTIONS,
                "called mapper_get_boundary_action_string() with "
                "bad parameter.\n");
 
@@ -48,7 +48,7 @@ const char *mapper_get_boundary_action_string(mapper_boundary_action bound)
 
 const char *mapper_get_mode_type_string(mapper_mode_type mode)
 {
-    die_unless(mode < N_MAPPER_MODE_TYPES && mode >= 0,
+    die_unless(mode < N_MAPPER_MODE_TYPES,
                "called mapper_get_mode_type_string() with "
                "bad parameter.\n");
 
@@ -59,12 +59,8 @@ int mapper_connection_perform(mapper_connection connection,
                               mapper_signal_history_t *from,
                               mapper_signal_history_t *to)
 {
-    /* Currently expressions on vectors are not supported by the
-     * evaluator.  For now, we half-support it by performing
-     * element-wise operations on each item in the vector. */
-
     int changed = 0, i;
-    float f = 0;
+    int vector_length = from->length < to->length ? from->length : to->length;
 
     if (connection->props.muted)
         return 0;
@@ -73,7 +69,8 @@ int mapper_connection_perform(mapper_connection connection,
      * intelligent here -- even bypass mode might screw up if we
      * assume the types work out. */
     if (connection->props.dest_type != 'f'
-        && connection->props.dest_type != 'i')
+        && connection->props.dest_type != 'i'
+        && connection->props.dest_type != 'd')
     {
         return 0;
     }
@@ -85,22 +82,72 @@ int mapper_connection_perform(mapper_connection connection,
         if (connection->props.src_type == connection->props.dest_type) {
             memcpy(msig_history_value_pointer(*to),
                    msig_history_value_pointer(*from),
-                   mapper_type_size(to->type) * to->length);
+                   mapper_type_size(to->type) * vector_length);
+            memset(msig_history_value_pointer(*to) +
+                   mapper_type_size(to->type) * vector_length, 0,
+                   (to->length - vector_length) * mapper_type_size(to->type));
         }
-        else if (connection->props.src_type == 'f'
-                 && connection->props.dest_type == 'i') {
+        else if (connection->props.src_type == 'f') {
             float *vfrom = msig_history_value_pointer(*from);
-            int *vto = msig_history_value_pointer(*to);
-            for (i = 0; i < to->length; i++) {
-                vto[i] = (int)vfrom[i];
+            if (connection->props.dest_type == 'i') {
+                int *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (int)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
+            }
+            else if (connection->props.dest_type == 'd') {
+                double *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (double)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
             }
         }
-        else if (connection->props.src_type == 'i'
-                 && connection->props.dest_type == 'f') {
+        else if (connection->props.src_type == 'i') {
             int *vfrom = msig_history_value_pointer(*from);
-            float *vto = msig_history_value_pointer(*to);
-            for (i = 0; i < to->length; i++) {
-                vto[i] = (float)vfrom[i];
+            if (connection->props.dest_type == 'f') {
+                float *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (float)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
+            }
+            else if (connection->props.dest_type == 'd') {
+                double *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (double)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
+            }
+        }
+        else if (connection->props.src_type == 'd') {
+            double *vfrom = msig_history_value_pointer(*from);
+            if (connection->props.dest_type == 'i') {
+                int *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (int)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
+            }
+            else if (connection->props.dest_type == 'f') {
+                float *vto = msig_history_value_pointer(*to);
+                for (i = 0; i < vector_length; i++) {
+                    vto[i] = (float)vfrom[i];
+                }
+                for (; i < to->length; i++) {
+                    vto[i] = 0;
+                }
             }
         }
         return 1;
@@ -114,45 +161,100 @@ int mapper_connection_perform(mapper_connection connection,
 
     else if (connection->props.mode == MO_CALIBRATE)
     {
-        /* TODO: Switch to vector min and max */
         /* Increment index position of output data structure. */
         to->position = (to->position + 1) % to->size;
-        if (connection->props.src_type == 'f') {
-            float *v = msig_history_value_pointer(*from);
-            for (i = 0; i < to->length; i++)
-                f = v[i];
+
+        if (!connection->props.src_min) {
+            connection->props.src_min =
+                malloc(connection->props.src_length *
+                       mapper_type_size(connection->props.src_type));
         }
-        else if (connection->props.src_type == 'i') {
-            int *v = msig_history_value_pointer(*from);
-            for (i = 0; i < to->length; i++)
-                f = (float)v[i];
+        if (!connection->props.src_max) {
+            connection->props.src_max =
+                malloc(connection->props.src_length *
+                       mapper_type_size(connection->props.src_type));
         }
 
         /* If calibration mode has just taken effect, first data
          * sample sets source min and max */
-        if (!connection->calibrating) {
-            connection->props.range.src_min = f;
-            connection->props.range.src_max = f;
-            connection->props.range.known |=
-                CONNECTION_RANGE_SRC_MIN | CONNECTION_RANGE_SRC_MAX;
-            connection->calibrating = 1;
-            changed = 1;
-        } else {
-            if (f < connection->props.range.src_min) {
-                connection->props.range.src_min = f;
-                connection->props.range.known |= CONNECTION_RANGE_SRC_MIN;
+        if (connection->props.src_type == 'f') {
+            float *v = msig_history_value_pointer(*from);
+            float *src_min = (float*)connection->props.src_min;
+            float *src_max = (float*)connection->props.src_max;
+            if (!connection->calibrating) {
+                for (i = 0; i < from->length; i++) {
+                    src_min[i] = v[i];
+                    src_max[i] = v[i];
+                }
+                connection->calibrating = 1;
                 changed = 1;
             }
-            if (f > connection->props.range.src_max) {
-                connection->props.range.src_max = f;
-                connection->props.range.known |= CONNECTION_RANGE_SRC_MAX;
+            else {
+                for (i = 0; i < from->length; i++) {
+                    if (v[i] < src_min[i]) {
+                        src_min[i] = v[i];
+                        changed = 1;
+                    }
+                    if (v[i] > src_max[i]) {
+                        src_max[i] = v[i];
+                        changed = 1;
+                    }
+                }
+            }
+        }
+        else if (connection->props.src_type == 'i') {
+            int *v = msig_history_value_pointer(*from);
+            int *src_min = (int*)connection->props.src_min;
+            int *src_max = (int*)connection->props.src_max;
+            if (!connection->calibrating) {
+                for (i = 0; i < from->length; i++) {
+                    src_min[i] = v[i];
+                    src_max[i] = v[i];
+                }
+                connection->calibrating = 1;
+                changed = 1;
+            }
+            else {
+                for (i = 0; i < from->length; i++) {
+                    if (v[i] < src_min[i]) {
+                        src_min[i] = v[i];
+                        changed = 1;
+                    }
+                    if (v[i] > src_max[i]) {
+                        src_max[i] = v[i];
+                        changed = 1;
+                    }
+                }
+            }
+        }
+        else if (connection->props.src_type == 'd') {
+            double *v = msig_history_value_pointer(*from);
+            double *src_min = (double*)connection->props.src_min;
+            double *src_max = (double*)connection->props.src_max;
+            if (!connection->calibrating) {
+                for (i = 0; i < from->length; i++) {
+                    src_min[i] = v[i];
+                    src_max[i] = v[i];
+                }
+                connection->calibrating = 1;
                 changed = 1;
             }
+            else {
+                for (i = 0; i < from->length; i++) {
+                    if (v[i] < src_min[i]) {
+                        src_min[i] = v[i];
+                        changed = 1;
+                    }
+                    if (v[i] > src_max[i]) {
+                        src_max[i] = v[i];
+                        changed = 1;
+                    }
+                }
+            }
         }
 
         if (changed) {
-            mapper_connection_set_linear_range(connection,
-                                               &connection->props.range);
+            mapper_connection_set_mode_linear(connection);
 
             /* Stay in calibrate mode. */
             connection->props.mode = MO_CALIBRATE;
@@ -166,6 +268,61 @@ int mapper_connection_perform(mapper_connection connection,
     return 1;
 }
 
+static double propval_get_double(void *value, const char type, int index)
+{
+    switch (type) {
+        case 'f':
+        {
+            float *temp = (float*)value;
+            return (double)temp[index];
+            break;
+        }
+        case 'i':
+        {
+            int *temp = (int*)value;
+            return (double)temp[index];
+            break;
+        }
+        case 'd':
+        {
+            double *temp = (double*)value;
+            return temp[index];
+            break;
+        }
+        default:
+            return 0;
+            break;
+    }
+}
+
+static void propval_set_double(void *to, const char type,
+                               int index, double from)
+{
+    switch (type) {
+        case 'f':
+        {
+            float *temp = (float*)to;
+            temp[index] = (float)from;
+            break;
+        }
+        case 'i':
+        {
+            int *temp = (int*)to;
+            temp[index] = (int)from;
+            break;
+        }
+        case 'd':
+        {
+            double *temp = (double*)to;
+            temp[index] = from;
+            break;
+        default:
+            return;
+            break;
+        }
+    }
+}
+
 int mapper_boundary_perform(mapper_connection connection,
                             mapper_signal_history_t *history)
 {
@@ -173,10 +330,9 @@ int mapper_boundary_perform(mapper_connection connection,
      * it needs to be decided whether boundary processing should be inside the
      * feedback loop when past samples are called in expressions. */
     int i, muted = 0;
-    float v[connection->props.dest_length];
-    float total_range = fabsf(connection->props.range.dest_max
-                              - connection->props.range.dest_min);
-    float dest_min, dest_max, difference, modulo_difference;
+
+    double value;
+    double dest_min, dest_max, swap, total_range, difference, modulo_difference;
     mapper_boundary_action bound_min, bound_max;
 
     if (connection->props.bound_min == BA_NONE
@@ -184,171 +340,161 @@ int mapper_boundary_perform(mapper_connection connection,
     {
         return 1;
     }
-
-    if (connection->props.dest_type == 'f') {
-        float *vhistory = msig_history_value_pointer(*history);
-        for (i = 0; i < history->length; i++)
-            v[i] = vhistory[i];
-    }
-    else if (connection->props.dest_type == 'i') {
-        int *vhistory = msig_history_value_pointer(*history);
-        for (i = 0; i < history->length; i++)
-            v[i] = (float)vhistory[i];
+    if (!(connection->props.range_known & CONNECTION_RANGE_DEST_MIN)
+        && (connection->props.bound_min != BA_NONE ||
+            connection->props.bound_max == BA_WRAP)) {
+        return 1;
     }
-    else {
-        trace("unknown type in mapper_boundary_perform()\n");
-        return 0;
+    if (!(connection->props.range_known & CONNECTION_RANGE_DEST_MAX)
+        && (connection->props.bound_max != BA_NONE ||
+            connection->props.bound_min == BA_WRAP)) {
+        return 1;
     }
 
-    if (connection->props.range.known) {
-        if (connection->props.range.dest_min <= connection->props.range.dest_max) {
+    for (i = 0; i < history->length; i++) {
+        value = propval_get_double(msig_history_value_pointer(*history),
+                                   connection->props.dest_type, i);
+        dest_min = propval_get_double(connection->props.dest_min,
+                                      connection->props.dest_type, i);
+        dest_max = propval_get_double(connection->props.dest_max,
+                                      connection->props.dest_type, i);
+        if (dest_min < dest_max) {
             bound_min = connection->props.bound_min;
             bound_max = connection->props.bound_max;
-            dest_min = connection->props.range.dest_min;
-            dest_max = connection->props.range.dest_max;
         }
         else {
             bound_min = connection->props.bound_max;
             bound_max = connection->props.bound_min;
-            dest_min = connection->props.range.dest_max;
-            dest_max = connection->props.range.dest_min;
-        }
-        for (i = 0; i < history->length; i++) {
-            if (v[i] < dest_min) {
-                switch (bound_min) {
-                    case BA_MUTE:
-                        // need to prevent value from being sent at all
-                        muted = 1;
-                        break;
-                    case BA_CLAMP:
-                        // clamp value to range minimum
-                        v[i] = dest_min;
-                        break;
-                    case BA_FOLD:
-                        // fold value around range minimum
-                        difference = fabsf(v[i] - dest_min);
-                        v[i] = dest_min + difference;
-                        if (v[i] > dest_max) {
-                            // value now exceeds range maximum!
-                            switch (bound_max) {
-                                case BA_MUTE:
-                                    // need to prevent value from being sent at all
-                                    muted = 1;
-                                    break;
-                                case BA_CLAMP:
-                                    // clamp value to range minimum
-                                    v[i] = dest_max;
-                                    break;
-                                case BA_FOLD:
-                                    // both boundary actions are set to fold!
-                                    difference = fabsf(v[i] - dest_max);
-                                    modulo_difference = difference
-                                        - ((int)(difference / total_range)
-                                           * total_range);
-                                    if ((int)(difference / total_range) % 2 == 0) {
-                                        v[i] = dest_max - modulo_difference;
-                                    }
-                                    else
-                                        v[i] = dest_min + modulo_difference;
-                                    break;
-                                case BA_WRAP:
-                                    // wrap value back from range minimum
-                                    difference = fabsf(v[i] - dest_max);
-                                    modulo_difference = difference
-                                        - ((int)(difference / total_range)
-                                           * total_range);
-                                    v[i] = dest_min + modulo_difference;
-                                    break;
-                                default:
-                                    break;
-                            }
+            swap = dest_max;
+            dest_max = dest_min;
+            dest_min = swap;
+        }
+        total_range = fabs(dest_max - dest_min);
+        if (value < dest_min) {
+            switch (bound_min) {
+                case BA_MUTE:
+                    // need to prevent value from being sent at all
+                    muted = 1;
+                    break;
+                case BA_CLAMP:
+                    // clamp value to range minimum
+                    value = dest_min;
+                    break;
+                case BA_FOLD:
+                    // fold value around range minimum
+                    difference = fabsf(value - dest_min);
+                    value = dest_min + difference;
+                    if (value > dest_max) {
+                        // value now exceeds range maximum!
+                        switch (bound_max) {
+                            case BA_MUTE:
+                                // need to prevent value from being sent at all
+                                muted = 1;
+                                break;
+                            case BA_CLAMP:
+                                // clamp value to range minimum
+                                value = dest_max;
+                                break;
+                            case BA_FOLD:
+                                // both boundary actions are set to fold!
+                                difference = fabsf(value - dest_max);
+                                modulo_difference = difference
+                                    - ((int)(difference / total_range)
+                                       * total_range);
+                                if ((int)(difference / total_range) % 2 == 0) {
+                                    value = dest_max - modulo_difference;
+                                }
+                                else
+                                    value = dest_min + modulo_difference;
+                                break;
+                            case BA_WRAP:
+                                // wrap value back from range minimum
+                                difference = fabsf(value - dest_max);
+                                modulo_difference = difference
+                                    - ((int)(difference / total_range)
+                                       * total_range);
+                                value = dest_min + modulo_difference;
+                                break;
+                            default:
+                                break;
                         }
-                        break;
-                    case BA_WRAP:
-                        // wrap value back from range maximum
-                        difference = fabsf(v[i] - dest_min);
-                        modulo_difference = difference
-                            - (int)(difference / total_range) * total_range;
-                        v[i] = dest_max - modulo_difference;
-                        break;
-                    default:
-                        // leave the value unchanged
-                        break;
-                }
+                    }
+                    break;
+                case BA_WRAP:
+                    // wrap value back from range maximum
+                    difference = fabsf(value - dest_min);
+                    modulo_difference = difference
+                        - (int)(difference / total_range) * total_range;
+                    value = dest_max - modulo_difference;
+                    break;
+                default:
+                    // leave the value unchanged
+                    break;
             }
-            else if (v[i] > dest_max) {
-                switch (bound_max) {
-                    case BA_MUTE:
-                        // need to prevent value from being sent at all
-                        muted = 1;
-                        break;
-                    case BA_CLAMP:
-                        // clamp value to range maximum
-                        v[i] = dest_max;
-                        break;
-                    case BA_FOLD:
-                        // fold value around range maximum
-                        difference = fabsf(v[i] - dest_max);
-                        v[i] = dest_max - difference;
-                        if (v[i] < dest_min) {
-                            // value now exceeds range minimum!
-                            switch (bound_min) {
-                                case BA_MUTE:
-                                    // need to prevent value from being sent at all
-                                    muted = 1;
-                                    break;
-                                case BA_CLAMP:
-                                    // clamp value to range minimum
-                                    v[i] = dest_min;
-                                    break;
-                                case BA_FOLD:
-                                    // both boundary actions are set to fold!
-                                    difference = fabsf(v[i] - dest_min);
-                                    modulo_difference = difference
-                                        - ((int)(difference / total_range)
-                                           * total_range);
-                                    if ((int)(difference / total_range) % 2 == 0) {
-                                        v[i] = dest_max + modulo_difference;
-                                    }
-                                    else
-                                        v[i] = dest_min - modulo_difference;
-                                    break;
-                                case BA_WRAP:
-                                    // wrap value back from range maximum
-                                    difference = fabsf(v[i] - dest_min);
-                                    modulo_difference = difference
-                                        - ((int)(difference / total_range)
-                                           * total_range);
-                                    v[i] = dest_max - modulo_difference;
-                                    break;
-                                default:
-                                    break;
-                            }
+        }
+        else if (value > dest_max) {
+            switch (bound_max) {
+                case BA_MUTE:
+                    // need to prevent value from being sent at all
+                    muted = 1;
+                    break;
+                case BA_CLAMP:
+                    // clamp value to range maximum
+                    value = dest_max;
+                    break;
+                case BA_FOLD:
+                    // fold value around range maximum
+                    difference = fabsf(value - dest_max);
+                    value = dest_max - difference;
+                    if (value < dest_min) {
+                        // value now exceeds range minimum!
+                        switch (bound_min) {
+                            case BA_MUTE:
+                                // need to prevent value from being sent at all
+                                muted = 1;
+                                break;
+                            case BA_CLAMP:
+                                // clamp value to range minimum
+                                value = dest_min;
+                                break;
+                            case BA_FOLD:
+                                // both boundary actions are set to fold!
+                                difference = fabsf(value - dest_min);
+                                modulo_difference = difference
+                                    - ((int)(difference / total_range)
+                                       * total_range);
+                                if ((int)(difference / total_range) % 2 == 0) {
+                                    value = dest_max + modulo_difference;
+                                }
+                                else
+                                    value = dest_min - modulo_difference;
+                                break;
+                            case BA_WRAP:
+                                // wrap value back from range maximum
+                                difference = fabsf(value - dest_min);
+                                modulo_difference = difference
+                                    - ((int)(difference / total_range)
+                                       * total_range);
+                                value = dest_max - modulo_difference;
+                                break;
+                            default:
+                                break;
                         }
-                        break;
-                    case BA_WRAP:
-                        // wrap value back from range minimum
-                        difference = fabsf(v[i] - dest_max);
-                        modulo_difference = difference
-                            - (int)(difference / total_range) * total_range;
-                        v[i] = dest_min + modulo_difference;
-                        break;
-                    default:
-                        break;
-                }
+                    }
+                    break;
+                case BA_WRAP:
+                    // wrap value back from range minimum
+                    difference = fabsf(value - dest_max);
+                    modulo_difference = difference
+                        - (int)(difference / total_range) * total_range;
+                    value = dest_min + modulo_difference;
+                    break;
+                default:
+                    break;
             }
         }
-    }
-
-    if (connection->props.dest_type == 'f') {
-        float *vhistory = msig_history_value_pointer(*history);
-        for (i = 0; i < history->length; i++)
-            vhistory[i] = v[i];
-    }
-    else if (connection->props.dest_type == 'i') {
-        int *vhistory = msig_history_value_pointer(*history);
-        for (i = 0; i < history->length; i++)
-            vhistory[i] = (int)v[i];
+        propval_set_double(msig_history_value_pointer(*history),
+                           connection->props.dest_type, i, value);
     }
     return !muted;
 }
@@ -361,8 +507,9 @@ static int replace_expression_string(mapper_connection c,
                                      int *output_history_size)
 {
     mapper_expr expr = mapper_expr_new_from_string(
-        expr_str, c->props.src_type=='f', c->props.dest_type=='f',
-        c->props.src_length, input_history_size, output_history_size);
+        expr_str, c->props.src_type, c->props.dest_type,
+        c->props.src_length, c->props.dest_length,
+        input_history_size, output_history_size);
 
     if (!expr)
         return 1;
@@ -371,55 +518,148 @@ static int replace_expression_string(mapper_connection c,
         mapper_expr_free(c->expr);
 
     c->expr = expr;
-    int len = strlen(expr_str)+1;
+
+    if (c->props.expression == expr_str)
+        return 0;
+
+    int len = strlen(expr_str);
     if (!c->props.expression || len > strlen(c->props.expression))
-        c->props.expression = realloc(c->props.expression, len);
-    strncpy(c->props.expression, expr_str, len);
+        c->props.expression = realloc(c->props.expression, len+1);
+
+    /* Using strncpy() here causes memory profiling errors due to possible
+     * overlapping memory (e.g. expr_str == c->props.expression). */
+    memcpy(c->props.expression, expr_str, len);
+    c->props.expression[len] = '\0';
+
     return 0;
 }
 
-void mapper_connection_set_direct(mapper_connection c)
+void mapper_connection_set_mode_direct(mapper_connection c)
 {
     c->props.mode = MO_BYPASS;
     reallocate_connection_histories(c, 1, 1);
 }
 
-void mapper_connection_set_linear_range(mapper_connection c,
-                                        mapper_connection_range_t *r)
+void mapper_connection_set_mode_linear(mapper_connection c)
 {
+    int i;
     char expr[256] = "";
     const char *e = expr;
 
-    if (r->known
-        & (CONNECTION_RANGE_SRC_MIN | CONNECTION_RANGE_SRC_MAX))
-    {
-        if (r->src_min == r->src_max)
-            snprintf(expr, 256, "y=%g", r->src_min);
-
-        else if (r->known == CONNECTION_RANGE_KNOWN
-                 && r->src_min == r->dest_min
-                 && r->src_max == r->dest_max)
-            e = strdup("y=x");
-
-        else if (r->known == CONNECTION_RANGE_KNOWN) {
-            float scale = ((r->dest_min - r->dest_max)
-                           / (r->src_min - r->src_max));
-            float offset =
-                ((r->dest_max * r->src_min
-                  - r->dest_min * r->src_max)
-                 / (r->src_min - r->src_max));
+    if (c->props.range_known != CONNECTION_RANGE_KNOWN)
+        return;
 
-            snprintf(expr, 256, "y=x*(%g)+(%g)", scale, offset);
+    if (c->props.dest_length == 1) {
+        if (memcmp(c->props.src_min, c->props.src_max,
+                   mapper_type_size(c->props.src_type))==0) {
+            // set value to constant to avoid division by zero
+            if (c->props.src_type == 'f') {
+                float *temp = (float*)c->props.dest_min;
+                snprintf(expr, 256, "y=%g", temp[0]);
+            }
+            else if (c->props.src_type == 'i') {
+                int *temp = (int*)c->props.dest_min;
+                snprintf(expr, 256, "y=%i", temp[0]);
+            }
+            else if (c->props.src_type == 'd') {
+                double *temp = (double*)c->props.dest_min;
+                snprintf(expr, 256, "y=%g", temp[0]);
+            }
+        }
+        else {
+            double src_min, src_max, dest_min, dest_max;
+            if (c->props.src_length > 1)
+                snprintf(expr, 256, "y=x[0]");
+            else
+                snprintf(expr, 256, "y=x");
+
+            src_min = propval_get_double(c->props.src_min, c->props.src_type, 0);
+            src_max = propval_get_double(c->props.src_max, c->props.src_type, 0);
+            dest_min = propval_get_double(c->props.dest_min, c->props.dest_type, 0);
+            dest_max = propval_get_double(c->props.dest_max, c->props.dest_type, 0);
+
+            if ((src_min != dest_min) || (src_max != dest_max)) {
+                double scale = ((dest_min - dest_max) / (src_min - src_max));
+                double offset = ((dest_max * src_min - dest_min * src_max)
+                                 / (src_min - src_max));
+                snprintf(expr+strlen(expr), 256, "*(%g)+(%g)", scale, offset);
+            }
         }
-        else
-            e = 0;
     }
-    else
-        e = 0;
+    else {
+        int len, diff;
+        int min_length = c->props.src_length < c->props.dest_length ?
+                         c->props.src_length : c->props.dest_length;
+        double src_min, src_max, dest_min, dest_max;
+
+        if (c->props.src_length == c->props.dest_length)
+            snprintf(expr, 256, "y=x*[");
+        else if (c->props.src_length > c->props.dest_length)
+            snprintf(expr, 256, "y=x[0:%i]*[", c->props.dest_length-1);
+        else {
+            diff = c->props.dest_length - c->props.src_length;
+            snprintf(expr, 256, "y=[x,");
+            while (diff--) {
+                len = strlen(expr);
+                snprintf(expr+len, 256-len, "0,");
+            }
+            len = strlen(expr);
+            snprintf(expr+len-1, 256-len+1, "]*[");
+        }
 
-    if (&c->props.range != r)
-        memcpy(&c->props.range, r,
-               sizeof(mapper_connection_range_t));
+        // add scale
+        for (i=0; i<min_length; i++) {
+            src_min = propval_get_double(c->props.src_min, c->props.src_type, i);
+            src_max = propval_get_double(c->props.src_max, c->props.src_type, i);
+            dest_min = propval_get_double(c->props.dest_min, c->props.dest_type, i);
+            dest_max = propval_get_double(c->props.dest_max, c->props.dest_type, i);
+
+            len = strlen(expr);
+            if (src_min == src_max)
+                snprintf(expr+len, 256-len, "0,");
+            else if ((src_min == dest_min) && (src_max == dest_max)) {
+                snprintf(expr+len, 256-len, "1,");
+            }
+            else {
+                double scale = ((dest_min - dest_max) / (src_min - src_max));
+                snprintf(expr+len, 256-len, "%g,", scale);
+            }
+        }
+        diff = c->props.dest_length - c->props.src_length;
+        while (diff--) {
+            len = strlen(expr);
+            snprintf(expr+len, 256-len, "0,");
+        }
+        len = strlen(expr);
+        snprintf(expr+len-1, 256-len+1, "]+[");
+
+        // add offset
+        for (i=0; i<min_length; i++) {
+            src_min = propval_get_double(c->props.src_min, c->props.src_type, i);
+            src_max = propval_get_double(c->props.src_max, c->props.src_type, i);
+            dest_min = propval_get_double(c->props.dest_min, c->props.dest_type, i);
+            dest_max = propval_get_double(c->props.dest_max, c->props.dest_type, i);
+
+            len = strlen(expr);
+            if (src_min == src_max)
+                snprintf(expr+len, 256-len, "%g,", dest_min);
+            else if ((src_min == dest_min) && (src_max == dest_max)) {
+                snprintf(expr+len, 256-len, "0,");
+            }
+            else {
+                double offset = ((dest_max * src_min - dest_min * src_max)
+                                 / (src_min - src_max));
+                snprintf(expr+len, 256-len, "%g,", offset);
+            }
+        }
+        diff = c->props.dest_length - c->props.src_length;
+        while (diff--) {
+            len = strlen(expr);
+            snprintf(expr+len, 256-len, "0,");
+        }
+        len = strlen(expr);
+        snprintf(expr+len-1, 256-len+1, "]");
+    }
 
     // If everything is successful, replace the connection's expression.
     if (e) {
@@ -432,8 +672,8 @@ void mapper_connection_set_linear_range(mapper_connection c,
     }
 }
 
-void mapper_connection_set_expression(mapper_connection c,
-                                      const char *expr)
+void mapper_connection_set_mode_expression(mapper_connection c,
+                                           const char *expr)
 {
     int input_history_size, output_history_size;
     if (replace_expression_string(c, expr, &input_history_size,
@@ -443,15 +683,42 @@ void mapper_connection_set_expression(mapper_connection c,
     c->props.mode = MO_EXPRESSION;
     reallocate_connection_histories(c, input_history_size,
                                     output_history_size);
+    /* Special case: if we are the receiver and the new expression
+     * evaluates to a constant we can update immediately. */
+    /* TODO: should call handler for all instances updated
+     * through this connection. */
+    mapper_signal sig = c->parent->signal;
+    if (!sig->props.is_output && mapper_expr_constant_output(c->expr)) {
+        int index = 0;
+        mapper_timetag_t now;
+        mapper_clock_now(&sig->device->admin->clock, &now);
+        if (!sig->id_maps[0].instance)
+            index = msig_get_instance_with_local_id(sig, 0, 1, &now);
+        if (index < 0)
+            return;
+        mapper_signal_instance si = sig->id_maps[index].instance;
+
+        // evaluate expression
+        mapper_signal_history_t h;
+        h.type = sig->props.type;
+        h.value = si->value;
+        h.position = -1;
+        h.length = sig->props.length;
+        h.size = 1;
+        mapper_expr_evaluate(c->expr, 0, &h);
+
+        // call handler if it exists
+        if (sig->handler)
+            sig->handler(sig, &sig->props, 0, si->value, 1, &now);
+    }
 }
 
-void mapper_connection_set_reverse(mapper_connection c)
+void mapper_connection_set_mode_reverse(mapper_connection c)
 {
     c->props.mode = MO_REVERSE;
 }
 
-void mapper_connection_set_calibrate(mapper_connection c,
-                                     float dest_min, float dest_max)
+void mapper_connection_set_mode_calibrate(mapper_connection c)
 {
     c->props.mode = MO_CALIBRATE;
 
@@ -459,200 +726,310 @@ void mapper_connection_set_calibrate(mapper_connection c,
         free(c->props.expression);
 
     char expr[256];
-    snprintf(expr, 256, "y=%g", dest_min);
+    int i, len;
+
+    if (c->props.dest_length > 1)
+        snprintf(expr, 256, "y=[");
+    else
+        snprintf(expr, 256, "y=");
+
+    if (c->props.src_type == 'f') {
+        float *temp = (float*)c->props.dest_min;
+        for (i=0; i<c->props.dest_length; i++) {
+            len = strlen(expr);
+            snprintf(expr+len, 256-len, "%g,", temp[i]);
+        }
+    }
+    else if (c->props.src_type == 'i') {
+        int *temp = (int*)c->props.dest_min;
+        for (i=0; i<c->props.dest_length; i++) {
+            len = strlen(expr);
+            snprintf(expr+len, 256-len, "%i,", temp[i]);
+        }
+    }
+    else if (c->props.src_type == 'd') {
+        double *temp = (double*)c->props.dest_min;
+        for (i=0; i<c->props.dest_length; i++) {
+            len = strlen(expr);
+            snprintf(expr+len, 256-len, "%g,", temp[i]);
+        }
+    }
+
+    len = strlen(expr);
+    if (c->props.dest_length > 1)
+        snprintf(expr+len-1, 256-len+1, "]");
+    else
+        expr[len-1] = '\0';
+
     c->props.expression = strdup(expr);
 
-    c->props.range.dest_min = dest_min;
-    c->props.range.dest_max = dest_max;
-    c->props.range.known |= CONNECTION_RANGE_DEST_MIN | CONNECTION_RANGE_DEST_MAX;
     c->calibrating = 0;
 }
 
+/* Helper to check if type is a number. */
+static int is_number_type(const char type)
+{
+    switch (type) {
+        case 'i':   return 1;
+        case 'f':   return 1;
+        case 'd':   return 1;
+        default:    return 0;
+    }
+}
+
 /* Helper to fill in the range (src_min, src_max, dest_min, dest_max)
  * based on message parameters and known connection and signal
  * properties; return flags to indicate which parts of the range were
  * found. */
-static int get_range(mapper_connection connection,
-                     mapper_message_t *msg, float range[4])
+static int set_range(mapper_connection c,
+                     mapper_message_t *msg)
 {
-    lo_arg **a_range    = mapper_msg_get_param(msg, AT_RANGE);
-    const char* t_range = mapper_msg_get_type(msg, AT_RANGE);
-    lo_arg **a_min      = mapper_msg_get_param(msg, AT_MIN);
-    const char* t_min   = mapper_msg_get_type(msg, AT_MIN);
-    lo_arg **a_max      = mapper_msg_get_param(msg, AT_MAX);
-    const char* t_max   = mapper_msg_get_type(msg, AT_MAX);
+    lo_arg **args = NULL;
+    const char *types = NULL;
+    int i, length = 0, updated = 0, result;
 
-    int range_known = 0;
+    if (!c)
+        return 0;
 
     /* The logic here is to first try to use information from the
-     * message, starting with @range, then @min and @max.  Next
-     * priority is already-known properties of the connection.
+     * message, starting with @srcMax, @srcMin, @destMax, @destMin,
+     * and then @min and @max.
+     * Next priority is already-known properties of the connection.
      * Lastly, we fill in source range from the signal. */
 
-    /* @range */
-
-    if (a_range && t_range) {
-        int i, known[] = { CONNECTION_RANGE_SRC_MIN, CONNECTION_RANGE_SRC_MAX,
-                           CONNECTION_RANGE_DEST_MIN, CONNECTION_RANGE_DEST_MAX };
-        for (i=0; i<4; i++) {
-            if (t_range[i] == 'f') {
-                range_known |= known[i];
-                range[i] = a_range[i]->f;
-            } else if (t_range[i] == 'i') {
-                range_known |= known[i];
-                range[i] = (float)a_range[i]->i;
+    /* @srcMax */
+    args = mapper_msg_get_param(msg, AT_SRC_MAX);
+    types = mapper_msg_get_type(msg, AT_SRC_MAX);
+    length = mapper_msg_get_length(msg, AT_SRC_MAX);
+    if (args && types && is_number_type(types[0])) {
+        if (length == c->props.src_length) {
+            if (!c->props.src_max)
+                c->props.src_max = calloc(1, length * c->props.src_type);
+            c->props.range_known |= CONNECTION_RANGE_SRC_MAX;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(c->props.src_max,
+                                                 c->props.src_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    c->props.range_known &= ~CONNECTION_RANGE_SRC_MAX;
+                    break;
+                }
+                else
+                    updated += result;
             }
         }
+        else
+            c->props.range_known &= ~CONNECTION_RANGE_SRC_MAX;
     }
 
-    /* @min, @max */
-
-    if (!(range_known & CONNECTION_RANGE_DEST_MIN)
-        && a_min && t_min)
-    {
-        if (t_min[0]=='f') {
-            range_known |= CONNECTION_RANGE_DEST_MIN;
-            range[2] = (*a_min)->f;
-        } else if (t_min[0]=='i') {
-            range_known |= CONNECTION_RANGE_DEST_MIN;
-            range[2] = (float)(*a_min)->i;
+    /* @srcMin */
+    args = mapper_msg_get_param(msg, AT_SRC_MIN);
+    types = mapper_msg_get_type(msg, AT_SRC_MIN);
+    length = mapper_msg_get_length(msg, AT_SRC_MIN);
+    if (args && types && is_number_type(types[0])) {
+        if (length == c->props.src_length) {
+            if (!c->props.src_min)
+                c->props.src_min = calloc(1, length * c->props.src_type);
+            c->props.range_known |= CONNECTION_RANGE_SRC_MIN;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(c->props.src_min,
+                                                 c->props.src_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    c->props.range_known &= ~CONNECTION_RANGE_SRC_MIN;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
+        else
+            c->props.range_known &= ~CONNECTION_RANGE_SRC_MIN;
     }
 
-    if (!(range_known & CONNECTION_RANGE_DEST_MAX)
-        && a_max && t_max)
-    {
-        if (t_max[0]=='f') {
-            range_known |= CONNECTION_RANGE_DEST_MAX;
-            range[3] = (*a_max)->f;
-        } else if (t_max[0]=='i') {
-            range_known |= CONNECTION_RANGE_DEST_MAX;
-            range[3] = (float)(*a_max)->i;
+    /* @destMax */
+    args = mapper_msg_get_param(msg, AT_DEST_MAX);
+    types = mapper_msg_get_type(msg, AT_DEST_MAX);
+    length = mapper_msg_get_length(msg, AT_DEST_MAX);
+    if (args && types && is_number_type(types[0])) {
+        if (length == c->props.dest_length) {
+            if (!c->props.dest_max)
+                c->props.dest_max = calloc(1, length * c->props.dest_type);
+            c->props.range_known |= CONNECTION_RANGE_DEST_MAX;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(c->props.dest_max,
+                                                 c->props.dest_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    c->props.range_known &= ~CONNECTION_RANGE_DEST_MAX;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
+        else
+            c->props.range_known &= ~CONNECTION_RANGE_DEST_MAX;
     }
 
-    /* connection */
-
-    if (connection) {
-        if (!(range_known & CONNECTION_RANGE_SRC_MIN)
-            && (connection->props.range.known & CONNECTION_RANGE_SRC_MIN))
-        {
-            range_known |= CONNECTION_RANGE_SRC_MIN;
-            range[0] = connection->props.range.src_min;
-        }
-
-        if (!(range_known & CONNECTION_RANGE_SRC_MAX)
-            && (connection->props.range.known & CONNECTION_RANGE_SRC_MAX))
-        {
-            range_known |= CONNECTION_RANGE_SRC_MAX;
-            range[1] = connection->props.range.src_max;
+    /* @destMin */
+    args = mapper_msg_get_param(msg, AT_DEST_MIN);
+    types = mapper_msg_get_type(msg, AT_DEST_MIN);
+    length = mapper_msg_get_length(msg, AT_DEST_MIN);
+    if (args && types && is_number_type(types[0])) {
+        if (length == c->props.dest_length) {
+            if (!c->props.dest_min)
+                c->props.dest_min = calloc(1, length * c->props.dest_type);
+            c->props.range_known |= CONNECTION_RANGE_DEST_MIN;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(c->props.dest_min,
+                                                 c->props.dest_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    c->props.range_known &= ~CONNECTION_RANGE_DEST_MIN;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
+        else
+            c->props.range_known &= ~CONNECTION_RANGE_DEST_MIN;
+    }
 
-        if (!(range_known & CONNECTION_RANGE_DEST_MIN)
-            && (connection->props.range.known & CONNECTION_RANGE_DEST_MIN))
+    /* @min, @max */
+    if (!(c->props.range_known & CONNECTION_RANGE_DEST_MIN)) {
+        args = mapper_msg_get_param(msg, AT_MIN);
+        types = mapper_msg_get_type(msg, AT_MIN);
+        length = mapper_msg_get_length(msg, AT_MIN);
+        if (args && types && is_number_type(types[0]))
         {
-            range_known |= CONNECTION_RANGE_DEST_MIN;
-            range[2] = connection->props.range.dest_min;
+            if (length == c->props.dest_length) {
+                if (!c->props.dest_min)
+                    c->props.dest_min = calloc(1, length * c->props.dest_type);
+                c->props.range_known |= CONNECTION_RANGE_DEST_MIN;
+                for (i=0; i<length; i++) {
+                    result = propval_set_from_lo_arg(c->props.dest_min,
+                                                     c->props.dest_type,
+                                                     args[i], types[i], i);
+                    if (result == -1) {
+                        c->props.range_known &= ~CONNECTION_RANGE_DEST_MIN;
+                        break;
+                    }
+                    else
+                        updated += result;
+                }
+            }
+            else
+                c->props.range_known &= ~CONNECTION_RANGE_DEST_MIN;
         }
+    }
 
-        if (!(range_known & CONNECTION_RANGE_DEST_MAX)
-            && (connection->props.range.known & CONNECTION_RANGE_DEST_MAX))
+    if (!(c->props.range_known & CONNECTION_RANGE_DEST_MAX)) {
+        args = mapper_msg_get_param(msg, AT_MAX);
+        types = mapper_msg_get_type(msg, AT_MAX);
+        length = mapper_msg_get_length(msg, AT_MAX);
+        if (args && types && is_number_type(types[0]))
         {
-            range_known |= CONNECTION_RANGE_DEST_MAX;
-            range[3] = connection->props.range.dest_max;
+            if (length == c->props.dest_length) {
+                if (!c->props.dest_max)
+                    c->props.dest_max = calloc(1, length * c->props.dest_type);
+                c->props.range_known |= CONNECTION_RANGE_DEST_MAX;
+                for (i=0; i<length; i++) {
+                    result = propval_set_from_lo_arg(c->props.dest_max,
+                                                     c->props.dest_type,
+                                                     args[i], types[i], i);
+                    if (result == -1) {
+                        c->props.range_known &= ~CONNECTION_RANGE_DEST_MAX;
+                        break;
+                    }
+                    else
+                        updated += result;
+                }
+            }
+            else
+                c->props.range_known &= ~CONNECTION_RANGE_DEST_MAX;
         }
     }
 
     /* Signal */
-    mapper_signal sig = connection->parent->signal;
-    if (sig) {
-        if (!(range_known & CONNECTION_RANGE_SRC_MIN)
-            && sig->props.minimum)
-        {
-            if (sig->props.type == 'f') {
-                range_known |= CONNECTION_RANGE_SRC_MIN;
-                range[0] = sig->props.minimum->f;
-            } else if (sig->props.type == 'i') {
-                range_known |= CONNECTION_RANGE_SRC_MIN;
-                range[0] = sig->props.minimum->i32;
-            }
-        }
+    mapper_signal sig = c->parent->signal;
 
-        if (!(range_known & CONNECTION_RANGE_SRC_MAX)
-            && sig->props.maximum)
-        {
-            if (sig->props.type == 'f') {
-                range_known |= CONNECTION_RANGE_SRC_MAX;
-                range[1] = sig->props.maximum->f;
-            } else if (sig->props.type == 'i') {
-                range_known |= CONNECTION_RANGE_SRC_MAX;
-                range[1] = sig->props.maximum->i32;
-            }
-        }
+    /* If parent signal is an output it must be the "source" of this connection,
+     * if it is an input it must be the "destination". According to the protocol
+     * for negotiating new connections, we will only fill-in ranges for the
+     * "source" signal.*/
+    if (!sig || !sig->props.is_output)
+        return updated;
+
+    if (!c->props.src_min && sig->props.minimum)
+    {
+        c->props.src_min = malloc(msig_vector_bytes(sig));
+        memcpy(c->props.src_min, sig->props.minimum,
+               msig_vector_bytes(sig));
+        c->props.range_known |= CONNECTION_RANGE_SRC_MIN;
+        updated++;
+    }
+
+    if (!c->props.src_max && sig->props.maximum)
+    {
+        c->props.src_max = malloc(msig_vector_bytes(sig));
+        memcpy(c->props.src_max, sig->props.maximum,
+               msig_vector_bytes(sig));
+        c->props.range_known |= CONNECTION_RANGE_SRC_MAX;
+        updated++;
     }
 
-    return range_known;
+    return updated;
 }
 
-void mapper_connection_set_from_message(mapper_connection c,
-                                        mapper_message_t *msg)
+int mapper_connection_set_from_message(mapper_connection c,
+                                       mapper_message_t *msg)
 {
+    int updated = 0;
     /* First record any provided parameters. */
 
     /* Destination type. */
 
     const char *dest_type = mapper_msg_get_param_if_char(msg, AT_TYPE);
-    if (dest_type)
+    if (dest_type && c->props.dest_type != dest_type[0]) {
+        // TODO: need to reinitialize connections using this destination signal
         c->props.dest_type = dest_type[0];
-
-    /* Range information. */
-
-    float range[4];
-    int range_known = get_range(c, msg, range);
-
-    if (range_known & CONNECTION_RANGE_SRC_MIN) {
-        c->props.range.known |= CONNECTION_RANGE_SRC_MIN;
-        c->props.range.src_min = range[0];
+        updated++;
     }
 
-    if (range_known & CONNECTION_RANGE_SRC_MAX) {
-        c->props.range.known |= CONNECTION_RANGE_SRC_MAX;
-        c->props.range.src_max = range[1];
-    }
-
-    if (range_known & CONNECTION_RANGE_DEST_MIN) {
-        c->props.range.known |= CONNECTION_RANGE_DEST_MIN;
-        c->props.range.dest_min = range[2];
-    }
-
-    if (range_known & CONNECTION_RANGE_DEST_MAX) {
-        c->props.range.known |= CONNECTION_RANGE_DEST_MAX;
-        c->props.range.dest_max = range[3];
-    }
+    /* Range information. */
 
-    // TO DO: test if range has actually changed
-    if (c->props.range.known == CONNECTION_RANGE_KNOWN
-        && c->props.mode == MO_LINEAR) {
-        mapper_connection_set_linear_range(c, &c->props.range);
+    updated += set_range(c, msg);
+    if (c->props.range_known == CONNECTION_RANGE_KNOWN &&
+        c->props.mode == MO_LINEAR) {
+        mapper_connection_set_mode_linear(c);
     }
 
     /* Muting. */
     int muting;
-    if (!mapper_msg_get_param_if_int(msg, AT_MUTE, &muting))
+    if (!mapper_msg_get_param_if_int(msg, AT_MUTE, &muting)
+        && c->props.muted != muting) {
         c->props.muted = muting;
+        updated++;
+    }
 
     /* Range boundary actions. */
     int bound_min = mapper_msg_get_boundary_action(msg, AT_BOUND_MIN);
-    if (bound_min >= 0)
+    if (bound_min >= 0 && c->props.bound_min != bound_min) {
         c->props.bound_min = bound_min;
+        updated++;
+    }
 
     int bound_max = mapper_msg_get_boundary_action(msg, AT_BOUND_MAX);
-    if (bound_max >= 0)
+    if (bound_max >= 0 && c->props.bound_max != bound_max) {
         c->props.bound_max = bound_max;
+        updated++;
+    }
 
     /* Expression. */
     const char *expr = mapper_msg_get_param_if_string(msg, AT_EXPRESSION);
-    if (expr) {
+    if (expr && (!c->props.expression || strcmp(c->props.expression, expr))) {
         int input_history_size, output_history_size;
         if (!replace_expression_string(c, expr, &input_history_size,
                                        &output_history_size)) {
@@ -660,20 +1037,26 @@ void mapper_connection_set_from_message(mapper_connection c,
                 reallocate_connection_histories(c, input_history_size,
                                                 output_history_size);
         }
+        updated++;
     }
 
     /* Instances. */
     int send_as_instance;
-    if (!mapper_msg_get_param_if_int(msg, AT_SEND_AS_INSTANCE, &send_as_instance))
+    if (!mapper_msg_get_param_if_int(msg, AT_SEND_AS_INSTANCE, &send_as_instance)
+        && c->props.send_as_instance != send_as_instance) {
         c->props.send_as_instance = send_as_instance;
+        updated++;
+    }
 
     /* Extra properties. */
-    mapper_msg_add_or_update_extra_params(c->props.extra, msg);
+    updated += mapper_msg_add_or_update_extra_params(c->props.extra, msg);
 
     /* Now set the mode type depending on the requested type and
      * the known properties. */
 
     int mode = mapper_msg_get_mode(msg);
+    if (mode >= 0 && mode != c->props.mode)
+        updated++;
 
     switch (mode)
     {
@@ -681,53 +1064,108 @@ void mapper_connection_set_from_message(mapper_connection c,
         /* No mode type specified; if mode not yet set, see if
          we know the range and choose between linear or direct connection. */
             if (c->props.mode == MO_UNDEFINED) {
-                if (range_known == CONNECTION_RANGE_KNOWN) {
+                if (c->props.range_known == CONNECTION_RANGE_KNOWN) {
                     /* We have enough information for a linear connection. */
-                    mapper_connection_range_t r;
-                    r.src_min = range[0];
-                    r.src_max = range[1];
-                    r.dest_min = range[2];
-                    r.dest_max = range[3];
-                    r.known = range_known;
-                    mapper_connection_set_linear_range(c, &r);
+                    mapper_connection_set_mode_linear(c);
                 } else
                     /* No range, default to direct connection. */
-                    mapper_connection_set_direct(c);
+                    mapper_connection_set_mode_direct(c);
             }
         break;
     case MO_BYPASS:
-        mapper_connection_set_direct(c);
+        mapper_connection_set_mode_direct(c);
         break;
     case MO_LINEAR:
-        if (range_known == CONNECTION_RANGE_KNOWN) {
-            mapper_connection_range_t r;
-            r.src_min = range[0];
-            r.src_max = range[1];
-            r.dest_min = range[2];
-            r.dest_max = range[3];
-            r.known = range_known;
-            mapper_connection_set_linear_range(c, &r);
+        if (c->props.range_known == CONNECTION_RANGE_KNOWN) {
+            mapper_connection_set_mode_linear(c);
         }
         break;
     case MO_CALIBRATE:
-        if (range_known & (CONNECTION_RANGE_DEST_MIN
-                           | CONNECTION_RANGE_DEST_MAX))
-            mapper_connection_set_calibrate(c, range[2], range[3]);
+        if (c->props.range_known & (CONNECTION_RANGE_DEST_MIN
+                                    | CONNECTION_RANGE_DEST_MAX))
+            mapper_connection_set_mode_calibrate(c);
         break;
     case MO_EXPRESSION:
         {
-            if (!c->props.expression)
-                c->props.expression = strdup("y=x");
-            mapper_connection_set_expression(c, c->props.expression);
+            if (!c->props.expression) {
+                if (c->props.src_length == c->props.dest_length)
+                    c->props.expression = strdup("y=x");
+                else {
+                    char expr[256] = "";
+                    if (c->props.src_length > c->props.dest_length) {
+                        // truncate
+                        snprintf(expr, 256, "y=x[0:%i]", c->props.dest_length-1);
+                    }
+                    else {
+                        // zero-pad
+                        int diff = c->props.dest_length - c->props.src_length;
+                        snprintf(expr, 256, "y=[x,");
+                        while (diff--) {
+                            int len = strlen(expr);
+                            snprintf(expr+len, 256-len, "0,");
+                        }
+                        expr[strlen(expr)-1] = ']';
+                    }
+                    c->props.expression = strdup(expr);
+                }
+            }
+            mapper_connection_set_mode_expression(c, c->props.expression);
         }
         break;
     case MO_REVERSE:
-        mapper_connection_set_reverse(c);
+        mapper_connection_set_mode_reverse(c);
         break;
     default:
         trace("unknown result from mapper_msg_get_mode()\n");
         break;
     }
+
+    return updated;
+}
+
+mapper_connection mapper_connection_find_by_names(mapper_device md,
+                                                  const char* src_name,
+                                                  const char* dest_name)
+{
+    mapper_router router = md->routers;
+    int i = 0;
+    int n = strlen(dest_name);
+    const char *slash = strchr(dest_name+1, '/');
+    if (slash)
+        n = n - strlen(slash);
+
+    src_name = strchr(src_name+1, '/');
+
+    while (i < md->props.n_outputs) {
+        // Check if device outputs includes src_name
+        if (strcmp(md->outputs[i]->props.name, src_name) == 0) {
+            while (router != NULL) {
+                // find associated router
+                if (strncmp(router->props.dest_name, dest_name, n) == 0) {
+                    // find associated connection
+                    mapper_router_signal rs = router->signals;
+                    while (rs && rs->signal != md->outputs[i])
+                        rs = rs->next;
+                    if (!rs)
+                        return NULL;
+                    mapper_connection c = rs->connections;
+                    while (c && strcmp(c->props.dest_name,
+                                       (dest_name + n)) != 0)
+                        c = c->next;
+                    if (!c)
+                        return NULL;
+                    else
+                        return c;
+                }
+                else {
+                    router = router->next;
+                }
+            }
+            return NULL;
+        }
+        i++;
+    }
+    return NULL;
 }
 
 void reallocate_connection_histories(mapper_connection c,
@@ -749,15 +1187,15 @@ void reallocate_connection_histories(mapper_connection c,
     if (input_history_size < 1)
         input_history_size = 1;
 
-    if (input_history_size > sig->props.history_size) {
+    if (input_history_size > c->parent->history_size) {
         int sample_size = msig_vector_bytes(sig);
         for (i=0; i<sig->props.num_instances; i++) {
             mhist_realloc(&c->parent->history[i], input_history_size,
                           sample_size, 0);
         }
-        sig->props.history_size = input_history_size;
+        c->parent->history_size = input_history_size;
     }
-    else if (input_history_size < sig->props.history_size) {
+    else if (input_history_size < c->parent->history_size) {
         // Do nothing for now...
         // Find maximum input length needed for connections
         /*mapper_connection temp = c->parent->connections;
diff --git a/src/db.c b/src/db.c
index b534313..06b401c 100644
--- a/src/db.c
+++ b/src/db.c
@@ -370,50 +370,6 @@ static void free_query_src_dest_queries(list_header_t *lh)
     free_query_single_context(lh);
 }
 
-/* Helper functions for updating struct fields based on message
- * parameters. */
-
-static int update_signal_value_if_arg(mapper_message_t *params,
-                                      mapper_msg_param_t field,
-                                      char sigtype,
-                                      mapper_signal_value_t **pv)
-{
-    lo_arg **a = mapper_msg_get_param(params, field);
-    const char *type = mapper_msg_get_type(params, field);
-
-    if (!a || !(*a))
-        return 0;
-
-    mapper_signal_value_t v;
-    int update = 0;
-    if (sigtype == 'f') {
-        if (type[0] == 'f') {
-            v.f = (*a)->f;
-            update = 1;
-        }
-        else if (type[0] == 'i') {
-            v.f = (*a)->i;
-            update = 1;
-        }
-    }
-    else if (sigtype == 'i') {
-        if (type[0] == 'f') {
-            v.i32 = (int)(*a)->f;
-            update = 1;
-        }
-        else if (type[0] == 'i') {
-            v.i32 = (*a)->i;
-            update = 1;
-        }
-    }
-    if (update && (!*pv || memcmp(&v, pv, sizeof(mapper_signal_value_t))==0)) {
-        *pv = realloc(*pv, sizeof(mapper_signal_value_t));
-        **pv = v;
-        return 1;
-    }
-    return 0;
-}
-
 static int update_string_if_different(char **pdest_str,
                                       const char *src_str)
 {
@@ -515,29 +471,43 @@ static int update_int_if_arg(int *pdest_int,
 
 typedef struct {
     char type;
-    char indirect;
-    int  offset;
+    union {
+        int indirect;
+        int alt_type;
+    };
+    int length;     // lengths stored as negatives, lookup lengths as offsets
+    int offset;
 } property_table_value_t;
 
+
 #define SIGDB_OFFSET(x) offsetof(mapper_db_signal_t, x)
 #define DEVDB_OFFSET(x) offsetof(mapper_db_device_t, x)
 #define LINKDB_OFFSET(x) offsetof(mapper_db_link_t, x)
 #define CONDB_OFFSET(x) offsetof(mapper_db_connection_t, x)
 
+#define SIG_TYPE    (SIGDB_OFFSET(type))
+#define SRC_TYPE    (CONDB_OFFSET(src_type))
+#define DEST_TYPE   (CONDB_OFFSET(dest_type))
+
+#define SIG_LENGTH  (SIGDB_OFFSET(length))
+#define SRC_LENGTH  (CONDB_OFFSET(src_length))
+#define DEST_LENGTH (CONDB_OFFSET(dest_length))
+#define NUM_SCOPES  (LINKDB_OFFSET(num_scopes))
+
 /* Here type 'o', which is not an OSC type, was reserved to mean "same
  * type as the signal's type".  The lookup and index functions will
  * return the sig->type instead of the value's type. */
 static property_table_value_t sigdb_values[] = {
-    { 's', 1, SIGDB_OFFSET(device_name) },
-    { 'i', 0, SIGDB_OFFSET(is_output) },
-    { 'i', 0, SIGDB_OFFSET(length) },
-    { 'o', 1, SIGDB_OFFSET(maximum) },
-    { 'o', 1, SIGDB_OFFSET(minimum) },
-    { 's', 1, SIGDB_OFFSET(name) },
-    { 'f', 0, SIGDB_OFFSET(rate) },
-    { 'c', 0, SIGDB_OFFSET(type) },
-    { 's', 1, SIGDB_OFFSET(unit) },
-    { 'i', 0, SIGDB_OFFSET(user_data) },
+    { 's', {1},        -1,         SIGDB_OFFSET(device_name) },
+    { 'i', {0},        -1,         SIGDB_OFFSET(is_output) },
+    { 'i', {0},        -1,         SIGDB_OFFSET(length) },
+    { 'o', {SIG_TYPE}, SIG_LENGTH, SIGDB_OFFSET(maximum) },
+    { 'o', {SIG_TYPE}, SIG_LENGTH, SIGDB_OFFSET(minimum) },
+    { 's', {1},        -1,         SIGDB_OFFSET(name) },
+    { 'f', {0},        -1,         SIGDB_OFFSET(rate) },
+    { 'c', {0},        -1,         SIGDB_OFFSET(type) },
+    { 's', {1},        -1,         SIGDB_OFFSET(unit) },
+    { 'i', {0},         0,         SIGDB_OFFSET(user_data) },
 };
 
 /* This table must remain in alphabetical order. */
@@ -558,18 +528,18 @@ static mapper_string_table_t sigdb_table =
   { sigdb_nodes, 10, 10 };
 
 static property_table_value_t devdb_values[] = {
-    { 's', 1, DEVDB_OFFSET(host) },
-    { 'i', 0, DEVDB_OFFSET(n_connections_in) },
-    { 'i', 0, DEVDB_OFFSET(n_connections_out) },
-    { 'i', 0, DEVDB_OFFSET(n_inputs) },
-    { 'i', 0, DEVDB_OFFSET(n_links_in) },
-    { 'i', 0, DEVDB_OFFSET(n_links_out) },
-    { 'i', 0, DEVDB_OFFSET(n_outputs) },
-    { 's', 1, DEVDB_OFFSET(name) },
-    { 'i', 0, DEVDB_OFFSET(port) },
-    { 't', 0, DEVDB_OFFSET(synced) },
-    { 'i', 0, DEVDB_OFFSET(user_data) },
-    { 'i', 0, DEVDB_OFFSET(version) },
+    { 's', {1}, -1, DEVDB_OFFSET(host) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_connections_in) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_connections_out) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_inputs) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_links_in) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_links_out) },
+    { 'i', {0}, -1, DEVDB_OFFSET(n_outputs) },
+    { 's', {1}, -1, DEVDB_OFFSET(name) },
+    { 'i', {0}, -1, DEVDB_OFFSET(port) },
+    { 't', {0}, -1, DEVDB_OFFSET(synced) },
+    { 'i', {0},  0, DEVDB_OFFSET(user_data) },
+    { 'i', {0}, -1, DEVDB_OFFSET(version) },
 };
 
 /* This table must remain in alphabetical order. */
@@ -592,76 +562,88 @@ static mapper_string_table_t devdb_table =
   { devdb_nodes, 12, 12 };
 
 static property_table_value_t linkdb_values[] = {
-    { 's', 1, LINKDB_OFFSET(dest_name) },
-    { 's', 1, LINKDB_OFFSET(src_name) },
+    { 's', {1}, -1,         LINKDB_OFFSET(dest_host) },
+    { 's', {1}, -1,         LINKDB_OFFSET(dest_name) },
+    { 'i', {0}, -1,         LINKDB_OFFSET(dest_port) },
+    { 'i', {0}, -1,         LINKDB_OFFSET(num_scopes) },
+    { 's', {1}, NUM_SCOPES, LINKDB_OFFSET(scope_names)},
+    { 'i', {1}, NUM_SCOPES, LINKDB_OFFSET(scope_hashes)},
+    { 's', {1}, -1,         LINKDB_OFFSET(src_host) },
+    { 's', {1}, -1,         LINKDB_OFFSET(src_name) },
+    { 'i', {0}, -1,         LINKDB_OFFSET(src_port) },
 };
 
 /* This table must remain in alphabetical order. */
 static string_table_node_t linkdb_nodes[] = {
-    { "dest_name",  &linkdb_values[0] },
-    { "src_name", &linkdb_values[1] },
+    { "dest_host",    &linkdb_values[0] },
+    { "dest_name",    &linkdb_values[1] },
+    { "dest_port",    &linkdb_values[2] },
+    { "num_scopes",   &linkdb_values[3] },
+    { "scope_names",  &linkdb_values[4] },
+    { "scope_hashes", &linkdb_values[5]},
+    { "src_host",     &linkdb_values[6] },
+    { "src_name",     &linkdb_values[7] },
+    { "src_port",     &linkdb_values[8] },
 };
 
 static mapper_string_table_t linkdb_table =
-{ linkdb_nodes, 2, 2 };
+{ linkdb_nodes, 9, 9 };
 
 static property_table_value_t condb_values[] = {
-    //{ 's', 1, CONDB_OFFSET(bound_min) },
-    //{ 's', 1, CONDB_OFFSET(bound_max) },
-    { 'i', 0, CONDB_OFFSET(dest_length) },
-    { 's', 1, CONDB_OFFSET(dest_name) },
-    { 'c', 0, CONDB_OFFSET(dest_type) },
-    { 's', 1, CONDB_OFFSET(expression) },
-    //{ 's', 1, CONDB_OFFSET(mode) },
-    { 'i', 0, CONDB_OFFSET(muted) },
-    //{ 's', 1, CONDB_OFFSET(range) },
-    { 'i', 0, CONDB_OFFSET(src_length) },
-    { 's', 1, CONDB_OFFSET(src_name) },
-    { 'c', 0, CONDB_OFFSET(src_type) },
+    { 'i', {0},         -1,          CONDB_OFFSET(bound_min) },
+    { 'i', {0},         -1,          CONDB_OFFSET(bound_max) },
+    { 'i', {0},         -1,          CONDB_OFFSET(dest_length) },
+    { 'o', {DEST_TYPE}, DEST_LENGTH, CONDB_OFFSET(dest_max) },
+    { 'o', {DEST_TYPE}, DEST_LENGTH, CONDB_OFFSET(dest_min) },
+    { 's', {1},         -1,          CONDB_OFFSET(dest_name) },
+    { 'c', {0},         -1,          CONDB_OFFSET(dest_type) },
+    { 's', {1},         -1,          CONDB_OFFSET(expression) },
+    { 'i', {0},         -1,          CONDB_OFFSET(mode) },
+    { 'i', {0},         -1,          CONDB_OFFSET(muted) },
+    { 'i', {0},         -1,          CONDB_OFFSET(src_length) },
+    { 'o', {SRC_TYPE},  SRC_LENGTH,  CONDB_OFFSET(src_max) },
+    { 'o', {SRC_TYPE},  SRC_LENGTH,  CONDB_OFFSET(src_min) },
+    { 's', {1},         -1,          CONDB_OFFSET(src_name) },
+    { 'c', {0},         -1,          CONDB_OFFSET(src_type) },
 };
 
 /* This table must remain in alphabetical order. */
 static string_table_node_t condb_nodes[] = {
-    { "dest_length", &condb_values[0] },
-    { "dest_name",   &condb_values[1] },
-    { "dest_type",   &condb_values[2] },
-    { "expression",  &condb_values[3] },
-    { "muted",       &condb_values[4] },
-    { "src_length",  &condb_values[5] },
-    { "src_name",    &condb_values[6] },
-    { "src_type",    &condb_values[7] },
-    /*{ "bound_min",    &condb_values[0] },
-    { "bound_max",    &condb_values[1] },
+    { "bound_min",   &condb_values[0] },
+    { "bound_max",   &condb_values[1] },
     { "dest_length", &condb_values[2] },
-    { "dest_name",   &condb_values[3] },
-    { "dest_type",   &condb_values[4] },
-    { "expression",  &condb_values[5] },
-    { "mode",        &condb_values[7] },
-    { "muted",       &condb_values[6] },
-    { "range",       &condb_values[8] },
-    { "src_length",  &condb_values[9] },
-    { "src_name",    &condb_values[10] },
-    { "src_type",    &condb_values[11] },*/
+    { "dest_max",    &condb_values[3] },
+    { "dest_min",    &condb_values[4] },
+    { "dest_name",   &condb_values[5] },
+    { "dest_type",   &condb_values[6] },
+    { "expression",  &condb_values[7] },
+    { "mode",        &condb_values[8] },
+    { "muted",       &condb_values[9] },
+    { "src_length",  &condb_values[10] },
+    { "src_max",     &condb_values[11] },
+    { "src_min",     &condb_values[12] },
+    { "src_name",    &condb_values[13] },
+    { "src_type",    &condb_values[14] },
 };
 
 static mapper_string_table_t condb_table =
-{ condb_nodes, 8, 8 };
+{ condb_nodes, 15, 15 };
 
 /* Generic index and lookup functions to which the above tables would
  * be passed. These are called for specific types below. */
 
-static
-int mapper_db_property_index(void *thestruct, char o_type,
-                             table extra, unsigned int index,
-                             const char **property, lo_type *type,
-                             const lo_arg **value, table proptable)
+static int mapper_db_property_index(void *thestruct, table extra,
+                                    unsigned int index, const char **property,
+                                    char *type, const void **value,
+                                    int *length, table proptable)
 {
     die_unless(type!=0, "type parameter cannot be null.\n");
     die_unless(value!=0, "value parameter cannot be null.\n");
+    die_unless(length!=0, "length parameter cannot be null.\n");
 
     int i=0, j=0;
 
-    /* Unfortunately due to "optional" properties likes
+    /* Unfortunately due to "optional" properties like
      * minimum/maximum, unit, etc, we cannot use an O(1) lookup here--
      * the index changes according to availability of properties.
      * Thus, we have to search through properties linearly,
@@ -676,13 +658,26 @@ int mapper_db_property_index(void *thestruct, char o_type,
     {
         prop = table_value_at_index_p(proptable, i);
         if (prop->indirect) {
-            lo_arg **pp = (lo_arg**)((char*)thestruct + prop->offset);
+            void **pp = (void**)((char*)thestruct + prop->offset);
             if (*pp) {
                 if (j==index) {
                     if (property)
                         *property = table_key_at_index(proptable, i);
-                    *type = prop->type == 'o' ? o_type : prop->type;
-                    *value = *pp;
+                    if (prop->type == 'o')
+                        *type = *((char*)thestruct + prop->alt_type);
+                    else
+                        *type = prop->type;
+                    if (prop->length > 0)
+                        *length = *(int*)((char*)thestruct + prop->length);
+                    else
+                        *length = prop->length * -1;
+                    if (prop->type == 's' && prop->length > 0 && *length == 1) {
+                        // In this case pass the char* rather than the array
+                        char **temp = *pp;
+                        *value = temp[0];
+                    }
+                    else
+                        *value = *pp;
                     return 0;
                 }
                 j++;
@@ -692,8 +687,15 @@ int mapper_db_property_index(void *thestruct, char o_type,
             if (j==index) {
                 if (property)
                     *property = table_key_at_index(proptable, i);
-                *type = prop->type == 'o' ? o_type : prop->type;
+                if (prop->type == 'o')
+                    *type = *((char*)thestruct + prop->alt_type);
+                else
+                    *type = prop->type;
                 *value = (lo_arg*)((char*)thestruct + prop->offset);
+                if (prop->length > 0)
+                    *length = *(int*)((char*)thestruct + prop->length);
+                else
+                    *length = prop->length * -1;
                 return 0;
             }
             j++;
@@ -701,50 +703,64 @@ int mapper_db_property_index(void *thestruct, char o_type,
     }
 
     index -= j;
-    mapper_osc_value_t *val;
+    mapper_prop_value_t *val;
     val = table_value_at_index_p(extra, index);
     if (val) {
         if (property)
             *property = table_key_at_index(extra, index);
-        *type = val->type == 'o' ? o_type : val->type;
-        *value = &val->value;
+        *type = val->type;
+        *value = val->value;
+        *length = val->length;
         return 0;
     }
 
     return 1;
 }
 
-static
-int mapper_db_property_lookup(void *thestruct, char o_type,
-                              table extra, const char *property,
-                              lo_type *type, const lo_arg **value,
-                              table proptable)
+static int mapper_db_property_lookup(void *thestruct, table extra,
+                                     const char *property, char *type,
+                                     const void **value, int *length, table proptable)
 {
     die_unless(type!=0, "type parameter cannot be null.\n");
     die_unless(value!=0, "value parameter cannot be null.\n");
+    die_unless(length!=0, "length parameter cannot be null.\n");
 
-    const mapper_osc_value_t *val;
+    const mapper_prop_value_t *val;
     val = table_find_p(extra, property);
     if (val) {
-        *type = val->type == 'o' ? o_type : val->type;
-        *value = &val->value;
+        *type = val->type;
+        *value = val->value;
+        *length = val->length;
         return 0;
     }
 
     property_table_value_t *prop;
     prop = table_find_p(proptable, property);
     if (prop) {
-        *type = prop->type == 'o' ? o_type : prop->type;
+        if (prop->type == 'o')
+            *type = *((char*)thestruct + prop->alt_type);
+        else
+            *type = prop->type;
+        if (prop->length > 0)
+            *length = *(int*)((char*)thestruct + prop->length);
+        else
+            *length = prop->length * -1;
         if (prop->indirect) {
-            lo_arg **pp = (lo_arg**)((char*)thestruct + prop->offset);
-            if (*pp)
-                *value = *pp;
-            else {
-                return 1;
+            void **pp = (void**)((char*)thestruct + prop->offset);
+            if (*pp) {
+                if (prop->type == 's' && prop->length > 0 && *length == 1) {
+                    // In this case pass the char* rather than the array
+                    char **temp = *pp;
+                    *value = temp[0];
+                }
+                else
+                    *value = *pp;
             }
+            else
+                return 1;
         }
         else
-            *value = (lo_arg*)((char*)thestruct + prop->offset);
+            *value = (void*)((char*)thestruct + prop->offset);
         return 0;
     }
     return 1;
@@ -755,8 +771,8 @@ int mapper_db_property_lookup(void *thestruct, char o_type,
 /*! Update information about a given device record based on message
  *  parameters. */
 static int update_device_record_params(mapper_db_device reg,
-                                        const char *name,
-                                        mapper_message_t *params)
+                                       const char *name,
+                                       mapper_message_t *params)
 {
     int updated = 0;
 
@@ -819,22 +835,18 @@ int mapper_db_add_or_update_device_params(mapper_db db,
 }
 
 int mapper_db_device_property_index(mapper_db_device dev, unsigned int index,
-                                    const char **property, lo_type *type,
-                                    const lo_arg **value)
+                                    const char **property, char *type,
+                                    const void **value, int *length)
 {
-    return mapper_db_property_index(dev, 0, dev->extra,
-                                    index, property, type,
-                                    value, &devdb_table);
+    return mapper_db_property_index(dev, dev->extra, index, property, type,
+                                    value, length, &devdb_table);
 }
 
-int mapper_db_device_property_lookup(mapper_db_device dev,
-                                     const char *property,
-                                     lo_type *type,
-                                     const lo_arg **value)
+int mapper_db_device_property_lookup(mapper_db_device dev, const char *property,
+                                     char *type, const void **value, int *length)
 {
-    return mapper_db_property_lookup(dev, 0, dev->extra,
-                                     property, type, value,
-                                     &devdb_table);
+    return mapper_db_property_lookup(dev, dev->extra, property, type,
+                                     value, length, &devdb_table);
 }
 
 void mapper_db_remove_device_by_name(mapper_db db, const char *name)
@@ -862,8 +874,12 @@ void mapper_db_remove_device_by_name(mapper_db db, const char *name)
         cb = cb->next;
     }
 
+    if (dev->name)
+        free(dev->name);
+    if (dev->host)
+        free(dev->host);
     if (dev->extra)
-        free(dev->extra);
+        table_free(dev->extra, 1);
     list_remove_item(dev, (void**)&db->registered_devices);
 }
 
@@ -973,30 +989,38 @@ void mapper_db_dump(mapper_db db)
     trace("Registered connections:\n");
     while (con) {
         char r[1024] = "(";
-        if (con->range.known & CONNECTION_RANGE_SRC_MIN)
-            sprintf(r+strlen(r), "%f, ", con->range.src_min);
+        if (con->range_known & CONNECTION_RANGE_SRC_MIN) {
+            mapper_prop_pp(con->src_type, con->src_length, con->src_min);
+            sprintf(r+strlen(r), ", ");
+        }
         else
             strcat(r, "-, ");
-        if (con->range.known & CONNECTION_RANGE_SRC_MAX)
-            sprintf(r+strlen(r), "%f, ", con->range.src_max);
+        if (con->range_known & CONNECTION_RANGE_SRC_MAX) {
+            mapper_prop_pp(con->src_type, con->src_length, con->src_max);
+            sprintf(r+strlen(r), ", ");
+        }
         else
             strcat(r, "-, ");
-        if (con->range.known & CONNECTION_RANGE_DEST_MIN)
-            sprintf(r+strlen(r), "%f, ", con->range.dest_min);
+        if (con->range_known & CONNECTION_RANGE_DEST_MIN) {
+            mapper_prop_pp(con->dest_type, con->dest_length, con->dest_min);
+            sprintf(r+strlen(r), ", ");
+        }
         else
             strcat(r, "-, ");
-        if (con->range.known & CONNECTION_RANGE_DEST_MAX)
-            sprintf(r+strlen(r), "%f", con->range.dest_max);
+        if (con->range_known & CONNECTION_RANGE_DEST_MAX) {
+            mapper_prop_pp(con->dest_type, con->dest_length, con->dest_max);
+        }
         else
             strcat(r, "-");
         strcat(r, ")");
         trace("  src_name=%s, dest_name=%s,\n"
-              "      src_type=%d, dest_type=%d,\n"
+              "      src_type=%c, dest_type=%c,\n"
+              "      src_length=%d, dest_length=%d,\n"
               "      bound_max=%s, bound_min=%s,\n"
               "      range=%s,\n"
               "      expression=%s, mode=%s, muted=%d\n",
               con->src_name, con->dest_name, con->src_type,
-              con->dest_type,
+              con->dest_type, con->src_length, con->dest_length,
               mapper_get_boundary_action_string(con->bound_max),
               mapper_get_boundary_action_string(con->bound_min),
               r, con->expression,
@@ -1035,7 +1059,10 @@ static int update_signal_record_params(mapper_db_signal sig,
                                        const char *device_name,
                                        mapper_message_t *params)
 {
-    int updated = 0;
+    lo_arg **args;
+    const char *types;
+    int length, updated = 0, result;
+
     updated += update_string_if_different((char**)&sig->name, name);
     updated += update_string_if_different((char**)&sig->device_name, device_name);
 
@@ -1047,11 +1074,51 @@ static int update_signal_record_params(mapper_db_signal sig,
 
     updated += update_string_if_arg((char**)&sig->unit, params, AT_UNITS);
 
-    updated += update_signal_value_if_arg(params, AT_MAX,
-                                          sig->type, &sig->maximum);
+    /* @max */
+    args = mapper_msg_get_param(params, AT_MAX);
+    types = mapper_msg_get_type(params, AT_MAX);
+    length = mapper_msg_get_length(params, AT_MAX);
+    if (args && types) {
+        if (length == sig->length) {
+            if (!sig->maximum)
+                sig->maximum = calloc(1, length * mapper_type_size(sig->type));
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(sig->maximum, sig->type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    free(sig->maximum);
+                    sig->maximum = 0;
+                    break;
+                }
+                else
+                    updated += result;
+            }
+        }
+    }
 
-    updated += update_signal_value_if_arg(params, AT_MIN,
-                                          sig->type, &sig->minimum);
+    /* @min */
+    args = mapper_msg_get_param(params, AT_MIN);
+    types = mapper_msg_get_type(params, AT_MIN);
+    length = mapper_msg_get_length(params, AT_MIN);
+    if (args && types) {
+        if (length == sig->length) {
+            if (!sig->minimum)
+                sig->minimum = calloc(1, length * mapper_type_size(sig->type));
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(sig->minimum, sig->type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    free(sig->minimum);
+                    sig->minimum = 0;
+                    break;
+                }
+                else
+                    updated += result;
+            }
+        }
+    }
 
     int is_output = mapper_msg_get_direction(params);
     if (is_output != -1 && is_output != sig->is_output) {
@@ -1123,6 +1190,7 @@ void mapper_db_signal_init(mapper_db_signal sig, int is_output,
     sig->length = length;
     sig->unit = unit ? strdup(unit) : 0;
     sig->extra = table_new();
+    sig->minimum = sig->maximum = 0;
 
     if (!name)
         return;
@@ -1141,22 +1209,18 @@ void mapper_db_signal_init(mapper_db_signal sig, int is_output,
 }
 
 int mapper_db_signal_property_index(mapper_db_signal sig, unsigned int index,
-                                    const char **property, lo_type *type,
-                                    const lo_arg **value)
+                                    const char **property, char *type,
+                                    const void **value, int *length)
 {
-    return mapper_db_property_index(sig, sig->type, sig->extra,
-                                    index, property, type,
-                                    value, &sigdb_table);
+    return mapper_db_property_index(sig, sig->extra, index, property, type,
+                                    value, length, &sigdb_table);
 }
 
-int mapper_db_signal_property_lookup(mapper_db_signal sig,
-                                     const char *property,
-                                     lo_type *type,
-                                     const lo_arg **value)
+int mapper_db_signal_property_lookup(mapper_db_signal sig, const char *property,
+                                     char *type, const void **value, int *length)
 {
-    return mapper_db_property_lookup(sig, sig->type, sig->extra,
-                                     property, type, value,
-                                     &sigdb_table);
+    return mapper_db_property_lookup(sig, sig->extra, property, type,
+                                     value, length, &sigdb_table);
 }
 
 void mapper_db_add_signal_callback(mapper_db db,
@@ -1350,8 +1414,18 @@ void mapper_db_remove_inputs_by_query(mapper_db db,
             cb = cb->next;
         }
 
+        if (sig->name)
+            free(sig->name);
+        if (sig->device_name)
+            free(sig->device_name);
+        if (sig->unit)
+            free(sig->unit);
+        if (sig->minimum)
+            free(sig->minimum);
+        if (sig->maximum)
+            free(sig->maximum);
         if (sig->extra)
-            free(sig->extra);
+            table_free(sig->extra, 1);
         list_remove_item(sig, (void**)&db->registered_inputs);
     }
 }
@@ -1370,8 +1444,18 @@ void mapper_db_remove_outputs_by_query(mapper_db db,
             cb = cb->next;
         }
 
+        if (sig->name)
+            free(sig->name);
+        if (sig->device_name)
+            free(sig->device_name);
+        if (sig->unit)
+            free(sig->unit);
+        if (sig->minimum)
+            free(sig->minimum);
+        if (sig->maximum)
+            free(sig->maximum);
         if (sig->extra)
-            free(sig->extra);
+            table_free(sig->extra, 1);
         list_remove_item(sig, (void**)&db->registered_outputs);
     }
 }
@@ -1385,94 +1469,143 @@ static int update_connection_record_params(mapper_db_connection con,
                                            const char *dest_name,
                                            mapper_message_t *params)
 {
-    int updated = 0;
+    lo_arg **args;
+    const char *types;
+    int updated = 0, result;
+
     updated += update_string_if_different(&con->src_name, src_name);
     updated += update_string_if_different(&con->dest_name, dest_name);
-
-    // TODO: Unhandled fields --
-    /* char src_type; */
-    /* char dest_type; */
+    updated += update_char_if_arg(&con->src_type, params, AT_SRC_TYPE);
+    updated += update_char_if_arg(&con->dest_type, params, AT_DEST_TYPE);
+    updated += update_int_if_arg(&con->src_length, params, AT_SRC_LENGTH);
+    updated += update_int_if_arg(&con->dest_length, params, AT_DEST_LENGTH);
 
     mapper_boundary_action bound;
     bound = mapper_msg_get_boundary_action(params, AT_BOUND_MAX);
-    if (bound != -1 && bound != con->bound_max) {
+    if ((int)bound != -1 && bound != con->bound_max) {
         con->bound_max = bound;
         updated++;
     }
 
     bound = mapper_msg_get_boundary_action(params, AT_BOUND_MIN);
-    if (bound != -1 && bound != con->bound_min) {
+    if ((int)bound != -1 && bound != con->bound_min) {
         con->bound_min = bound;
         updated++;
     }
 
-    lo_arg **a_range = mapper_msg_get_param(params, AT_RANGE);
-    const char *t_range = mapper_msg_get_type(params, AT_RANGE);
-
-    if (a_range && (*a_range)) {
-        if (t_range[0] == 'f') {
-            if (!(con->range.known & CONNECTION_RANGE_SRC_MIN)
-                || con->range.src_min != a_range[0]->f)
-                updated++;
-            con->range.src_min = a_range[0]->f;
-            con->range.known |= CONNECTION_RANGE_SRC_MIN;
-        } else if (t_range[0] == 'i') {
-            if (!(con->range.known & CONNECTION_RANGE_SRC_MIN)
-                || con->range.src_min != (float)a_range[0]->i)
-                updated++;
-            con->range.src_min = (float)a_range[0]->i;
-            con->range.known |= CONNECTION_RANGE_SRC_MIN;
+    /* @srcMax */
+    args = mapper_msg_get_param(params, AT_SRC_MAX);
+    types = mapper_msg_get_type(params, AT_SRC_MAX);
+    int length = mapper_msg_get_length(params, AT_SRC_MAX);
+    if (args && types) {
+        if (length == con->src_length) {
+            if (!con->src_max)
+                con->src_max = calloc(1, length *
+                                            mapper_type_size(con->src_type));
+            con->range_known |= CONNECTION_RANGE_SRC_MAX;
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(con->src_max,
+                                                 con->src_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    con->range_known &= ~CONNECTION_RANGE_SRC_MAX;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
-        if (t_range[1] == 'f') {
-            if (!(con->range.known & CONNECTION_RANGE_SRC_MAX)
-                || con->range.src_max != a_range[1]->f)
-                updated++;
-            con->range.src_max = a_range[1]->f;
-            con->range.known |= CONNECTION_RANGE_SRC_MAX;
-        } else if (t_range[1] == 'i') {
-            if (!(con->range.known & CONNECTION_RANGE_SRC_MAX)
-                || con->range.src_max != a_range[1]->i)
-                updated++;
-            con->range.src_max = (float)a_range[1]->i;
-            con->range.known |= CONNECTION_RANGE_SRC_MAX;
+        else
+            con->range_known &= ~CONNECTION_RANGE_SRC_MAX;
+    }
+
+    /* @srcMin */
+    args = mapper_msg_get_param(params, AT_SRC_MIN);
+    types = mapper_msg_get_type(params, AT_SRC_MIN);
+    length = mapper_msg_get_length(params, AT_SRC_MIN);
+    if (args && types) {
+        if (length == con->src_length) {
+            if (!con->src_min)
+                con->src_min = calloc(1, length *
+                                            mapper_type_size(con->src_type));
+            con->range_known |= CONNECTION_RANGE_SRC_MIN;
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(con->src_min,
+                                                 con->src_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    con->range_known &= ~CONNECTION_RANGE_SRC_MIN;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
-        if (t_range[2] == 'f') {
-            if (!(con->range.known & CONNECTION_RANGE_DEST_MIN)
-                || con->range.dest_min != a_range[2]->f)
-                updated++;
-            con->range.dest_min = a_range[2]->f;
-            con->range.known |= CONNECTION_RANGE_DEST_MIN;
-        } else if (t_range[2] == 'i') {
-            if (!(con->range.known & CONNECTION_RANGE_DEST_MIN)
-                || con->range.dest_min != a_range[2]->i)
-                updated++;
-            con->range.dest_min = (float)a_range[2]->i;
-            con->range.known |= CONNECTION_RANGE_DEST_MIN;
+        else
+            con->range_known &= ~CONNECTION_RANGE_SRC_MIN;
+    }
+
+    /* @destMax */
+    args = mapper_msg_get_param(params, AT_DEST_MAX);
+    types = mapper_msg_get_type(params, AT_DEST_MAX);
+    length = mapper_msg_get_length(params, AT_DEST_MAX);
+    if (args && types) {
+        if (length == con->dest_length) {
+            if (!con->dest_max)
+                con->dest_max = calloc(1, length *
+                                             mapper_type_size(con->dest_type));
+            con->range_known |= CONNECTION_RANGE_DEST_MAX;
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(con->dest_max,
+                                                 con->dest_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    con->range_known &= ~CONNECTION_RANGE_DEST_MAX;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
-        if (t_range[3] == 'f') {
-            if (!(con->range.known & CONNECTION_RANGE_DEST_MAX)
-                || con->range.dest_max != a_range[3]->f)
-                updated++;
-            con->range.dest_max = a_range[3]->f;
-            con->range.known |= CONNECTION_RANGE_DEST_MAX;
-        } else if (t_range[3] == 'i') {
-            if (!(con->range.known & CONNECTION_RANGE_DEST_MAX)
-                || con->range.dest_max != a_range[3]->i)
-                updated++;
-            con->range.dest_max = (float)a_range[3]->i;
-            con->range.known |= CONNECTION_RANGE_DEST_MAX;
+        else
+            con->range_known &= ~CONNECTION_RANGE_DEST_MAX;
+    }
+
+    /* @destMin */
+    args = mapper_msg_get_param(params, AT_DEST_MIN);
+    types = mapper_msg_get_type(params, AT_DEST_MIN);
+    length = mapper_msg_get_length(params, AT_DEST_MIN);
+    if (args && types) {
+        if (length == con->dest_length) {
+            if (!con->dest_min)
+                con->dest_min = calloc(1, length *
+                                             mapper_type_size(con->dest_type));
+            con->range_known |= CONNECTION_RANGE_DEST_MIN;
+            int i;
+            for (i=0; i<length; i++) {
+                result = propval_set_from_lo_arg(con->dest_min,
+                                                 con->dest_type,
+                                                 args[i], types[i], i);
+                if (result == -1) {
+                    con->range_known &= ~CONNECTION_RANGE_DEST_MIN;
+                    break;
+                }
+                else
+                    updated += result;
+            }
         }
+        else
+            con->range_known &= ~CONNECTION_RANGE_DEST_MIN;
     }
 
     updated += update_int_if_arg(&con->id, params, AT_ID);
     updated += update_string_if_arg(&con->expression, params, AT_EXPRESSION);
-    updated += update_char_if_arg(&con->src_type, params, AT_SRC_TYPE);
-    updated += update_char_if_arg(&con->dest_type, params, AT_DEST_TYPE);
-    updated += update_int_if_arg(&con->src_length, params, AT_SRC_LENGTH);
-    updated += update_int_if_arg(&con->dest_length, params, AT_DEST_LENGTH);
 
     mapper_mode_type mode = mapper_msg_get_mode(params);
-    if (mode != -1 && mode != con->mode) {
+    if ((int)mode != -1 && mode != con->mode) {
         con->mode = mode;
         updated++;
     }
@@ -1501,6 +1634,8 @@ int mapper_db_add_or_update_connection_params(mapper_db db,
     if (!con) {
         con = (mapper_db_connection)
             list_new_item(sizeof(mapper_db_connection_t));
+        con->src_min = 0;
+        con->src_max = 0;
         con->extra = table_new();
         rc = 1;
     }
@@ -1526,23 +1661,19 @@ int mapper_db_add_or_update_connection_params(mapper_db db,
 
 int mapper_db_connection_property_index(mapper_db_connection con,
                                         unsigned int index,
-                                        const char **property,
-                                        lo_type *type,
-                                        const lo_arg **value)
+                                        const char **property, char *type,
+                                        const void **value, int *length)
 {
-    return mapper_db_property_index(con, 0, con->extra,
-                                    index, property, type,
-                                    value, &condb_table);
+    return mapper_db_property_index(con, con->extra, index, property, type,
+                                    value, length, &condb_table);
 }
 
 int mapper_db_connection_property_lookup(mapper_db_connection con,
-                                         const char *property,
-                                         lo_type *type,
-                                         const lo_arg **value)
+                                         const char *property, char *type,
+                                         const void **value, int *length)
 {
-    return mapper_db_property_lookup(con, 0, con->extra,
-                                     property, type, value,
-                                     &condb_table);
+    return mapper_db_property_lookup(con, con->extra, property, type,
+                                     value, length, &condb_table);
 }
 
 mapper_db_connection_t **mapper_db_get_all_connections(mapper_db db)
@@ -1952,13 +2083,83 @@ void mapper_db_remove_connection(mapper_db db, mapper_db_connection con)
         cb = cb->next;
     }
 
+    if (con->src_name)
+        free(con->src_name);
+    if (con->dest_name)
+        free(con->dest_name);
+    if (con->expression)
+        free(con->expression);
+    if (con->src_min)
+        free(con->src_min);
+    if (con->src_max)
+        free(con->src_max);
+    if (con->dest_min)
+        free(con->dest_min);
+    if (con->dest_max)
+        free(con->dest_max);
     if (con->extra)
-        free(con->extra);
+        table_free(con->extra, 1);
     list_remove_item(con, (void**)&db->registered_connections);
 }
 
 /**** Link records ****/
 
+int mapper_db_link_add_scope(mapper_db_link link,
+                             const char *scope)
+{
+    int i;
+    if (!link || !scope)
+        return 1;
+
+    // Check if scope is already stored for this link
+    uint32_t hash;
+    if (strcmp(scope, "all")==0)
+        hash = 0;
+    else
+        hash = crc32(0L, (const Bytef *)scope, strlen(scope));
+    for (i=0; i<link->num_scopes; i++)
+        if (link->scope_hashes[i] == hash)
+            return 1;
+
+    // not found - add a new scope
+    i = ++link->num_scopes;
+    link->scope_names = realloc(link->scope_names, i * sizeof(char *));
+    link->scope_names[i-1] = strdup(scope);
+    link->scope_hashes = realloc(link->scope_hashes, i * sizeof(uint32_t));
+    link->scope_hashes[i-1] = hash;
+    return 0;
+}
+
+int mapper_db_link_remove_scope(mapper_db_link link,
+                                const char *scope)
+{
+    int i, j;
+    if (!link || !scope)
+        return 1;
+
+    uint32_t hash;
+    if (strcmp(scope, "all")==0)
+        hash = 0;
+    else
+        hash = crc32(0L, (const Bytef *)scope, strlen(scope));
+    for (i=0; i<link->num_scopes; i++) {
+        if (link->scope_hashes[i] == hash) {
+            free(link->scope_names[i]);
+            for (j=i+1; j<link->num_scopes; j++) {
+                link->scope_names[j-1] = link->scope_names[j];
+                link->scope_hashes[j-1] = link->scope_hashes[j];
+            }
+            link->num_scopes--;
+            link->scope_names = realloc(link->scope_names,
+                                        link->num_scopes * sizeof(char *));
+            link->scope_hashes = realloc(link->scope_hashes,
+                                         link->num_scopes * sizeof(uint32_t));
+            return 0;
+        }
+    }
+    return 1;
+}
+
 /*! Update information about a given link record based on message
  *  parameters. */
 static int update_link_record_params(mapper_db_link link,
@@ -1966,9 +2167,37 @@ static int update_link_record_params(mapper_db_link link,
                                      const char *dest_name,
                                      mapper_message_t *params)
 {
-    int updated = 0;
+    int i, j, num_scopes = 0, updated = 0;
     updated += update_string_if_different(&link->src_name, src_name);
     updated += update_string_if_different(&link->dest_name, dest_name);
+    updated += update_int_if_arg(&link->src_port, params, AT_SRC_PORT);
+    updated += update_int_if_arg(&link->dest_port, params, AT_DEST_PORT);
+
+    lo_arg **a_scopes = mapper_msg_get_param(params, AT_SCOPE);
+    num_scopes = mapper_msg_get_length(params, AT_SCOPE);
+
+    // First remove old scopes that are missing
+    for (i=0; i<link->num_scopes; i++) {
+        int found = 0;
+        for (j=0; j<num_scopes; j++) {
+            if (strcmp(link->scope_names[i], &a_scopes[j]->s) == 0) {
+                found = 1;
+                break;
+            }
+        }
+        if (!found) {
+            mapper_db_link_remove_scope(link, link->scope_names[i]);
+            updated++;
+        }
+    }
+    // ...then add any new scopes
+    for (i=0; i<num_scopes; i++)
+        updated += (1 - mapper_db_link_add_scope(link, &a_scopes[i]->s));
+
+    if (num_scopes != link->num_scopes) {
+        link->num_scopes = num_scopes;
+        updated++;
+    }
 
     updated += mapper_msg_add_or_update_extra_params(link->extra, params);
     return updated;
@@ -2014,22 +2243,18 @@ int mapper_db_add_or_update_link_params(mapper_db db,
 }
 
 int mapper_db_link_property_index(mapper_db_link link, unsigned int index,
-                                  const char **property, lo_type *type,
-                                  const lo_arg **value)
+                                  const char **property, char *type,
+                                  const void **value, int *length)
 {
-    return mapper_db_property_index(link, 0, link->extra,
-                                    index, property, type,
-                                    value, &linkdb_table);
+    return mapper_db_property_index(link, link->extra, index, property,
+                                    type, value, length, &linkdb_table);
 }
 
-int mapper_db_link_property_lookup(mapper_db_link link,
-                                   const char *property,
-                                   lo_type *type,
-                                   const lo_arg **value)
+int mapper_db_link_property_lookup(mapper_db_link link, const char *property,
+                                   char *type, const void **value, int *length)
 {
-    return mapper_db_property_lookup(link, 0, link->extra,
-                                     property, type, value,
-                                     &linkdb_table);
+    return mapper_db_property_lookup(link, link->extra, property, type,
+                                     value, length, &linkdb_table);
 }
 
 void mapper_db_add_link_callback(mapper_db db,
@@ -2264,6 +2489,7 @@ void mapper_db_remove_links_by_query(mapper_db db, mapper_db_link_t **s)
 
 void mapper_db_remove_link(mapper_db db, mapper_db_link link)
 {
+    int i;
     if (!link)
         return;
 
@@ -2274,8 +2500,18 @@ void mapper_db_remove_link(mapper_db db, mapper_db_link link)
         cb = cb->next;
     }
 
+    if (link->src_name)
+        free(link->src_name);
+    if (link->dest_name)
+        free(link->dest_name);
+    if (link->num_scopes && link->scope_names) {
+        for (i=0; i<link->num_scopes; i++)
+            free(link->scope_names[i]);
+        free(link->scope_names);
+        free(link->scope_hashes);
+    }
     if (link->extra)
-        free(link->extra);
+        table_free(link->extra, 1);
     list_remove_item(link, (void**)&db->registered_links);
 }
 
diff --git a/src/device.c b/src/device.c
index 1f7f6cc..6df6c82 100644
--- a/src/device.c
+++ b/src/device.c
@@ -36,7 +36,6 @@ mapper_device mdev_new(const char *name_prefix, int port,
 {
     mapper_device md =
         (mapper_device) calloc(1, sizeof(struct _mapper_device));
-    md->name_prefix = strdup(name_prefix);
 
     if (admin) {
         md->admin = admin;
@@ -54,10 +53,21 @@ mapper_device mdev_new(const char *name_prefix, int port,
         return NULL;
     }
 
-    mapper_admin_add_device(md->admin, md, name_prefix);
-
+    md->props.identifier = strdup(name_prefix);
+    md->props.name = 0;
+    md->props.name_hash = 0;
+    md->ordinal.value = 1;
+    md->ordinal.locked = 0;
+    md->registered = 0;
+    md->routers = 0;
+    md->active_id_map = 0;
+    md->reserve_id_map = 0;
     md->id_counter = 0;
-    md->extra = table_new();
+    md->props.extra = table_new();
+    md->flags = 0;
+
+    mapper_admin_add_device(md->admin, md);
+
     return md;
 }
 
@@ -68,11 +78,16 @@ void mdev_free(mapper_device md)
     if (!md)
         return;
 
+    if (md->registered) {
+        // A registered device must tell the network it is leaving.
+        mapper_admin_send(md->admin, ADM_LOGOUT, 0, "s", mdev_name(md));
+    }
+
     // First release active instances
     mapper_signal sig;
     if (md->outputs) {
         // release all active output instances
-        for (i = 0; i < md->n_outputs; i++) {
+        for (i = 0; i < md->props.n_outputs; i++) {
             sig = md->outputs[i];
             for (j = 0; j < sig->id_map_length; j++) {
                 if (sig->id_maps[j].instance) {
@@ -83,7 +98,7 @@ void mdev_free(mapper_device md)
     }
     if (md->inputs) {
         // release all active input instances
-        for (i = 0; i < md->n_inputs; i++) {
+        for (i = 0; i < md->props.n_inputs; i++) {
             sig = md->inputs[i];
             for (j = 0; j < sig->id_map_length; j++) {
                 if (sig->id_maps[j].instance) {
@@ -100,12 +115,12 @@ void mdev_free(mapper_device md)
         mdev_remove_receiver(md, md->receivers);
 
     if (md->outputs) {
-        for (i = 0; i < md->n_outputs; i++)
+        for (i = 0; i < md->props.n_outputs; i++)
             msig_free(md->outputs[i]);
         free(md->outputs);
     }
     if (md->inputs) {
-        for (i = 0; i < md->n_inputs; i++) {
+        for (i = 0; i < md->props.n_inputs; i++) {
             msig_free(md->inputs[i]);
         }
         free(md->inputs);
@@ -124,36 +139,45 @@ void mdev_free(mapper_device md)
         free(map);
     }
 
-    if (md->extra)
-        table_free(md->extra, 1);
+    if (md->props.extra)
+        table_free(md->props.extra, 1);
+    if (md->props.identifier)
+        free(md->props.identifier);
+    if (md->props.name)
+        free(md->props.name);
+    if (md->props.host)
+        free(md->props.host);
+    if (md->admin) {
+        if (md->own_admin)
+            mapper_admin_free(md->admin);
+        else
+            md->admin->device = 0;
+    }
     if (md->server)
         lo_server_free(md->server);
-    if (md->name_prefix)
-        free(md->name_prefix);
-    if (md->admin && md->own_admin)
-        mapper_admin_free(md->admin);
     free(md);
 }
 
 void mdev_registered(mapper_device md)
 {
     int i, j;
+    md->registered = 1;
     /* Add device name to signals. Also add device name hash to
      * locally-activated signal instances. */
-    for (i = 0; i < md->n_inputs; i++) {
-        md->inputs[i]->props.device_name = mdev_name(md);
+    for (i = 0; i < md->props.n_inputs; i++) {
+        md->inputs[i]->props.device_name = (char *)mdev_name(md);
         for (j = 0; j < md->inputs[i]->id_map_length; j++) {
             if (md->inputs[i]->id_maps[j].map &&
-                md->inputs[i]->id_maps[j].map->group == 0)
-                md->inputs[i]->id_maps[j].map->group = md->admin->name_hash;
+                md->inputs[i]->id_maps[j].map->origin == 0)
+                md->inputs[i]->id_maps[j].map->origin = md->props.name_hash;
         }
     }
-    for (i = 0; i < md->n_outputs; i++) {
-        md->outputs[i]->props.device_name = mdev_name(md);
+    for (i = 0; i < md->props.n_outputs; i++) {
+        md->outputs[i]->props.device_name = (char *)mdev_name(md);
         for (j = 0; j < md->outputs[i]->id_map_length; j++) {
             if (md->outputs[i]->id_maps[j].map &&
-                md->outputs[i]->id_maps[j].map->group == 0)
-                md->outputs[i]->id_maps[j].map->group = md->admin->name_hash;
+                md->outputs[i]->id_maps[j].map->origin == 0)
+                md->outputs[i]->id_maps[j].map->origin = md->props.name_hash;
         }
     }
 }
@@ -173,8 +197,8 @@ static void grow_ptr_array(void **array, int length, int *size)
 
 static void mdev_increment_version(mapper_device md)
 {
-    md->version ++;
-    if (md->admin->registered) {
+    md->props.version ++;
+    if (md->registered) {
         md->flags |= FLAGS_DEVICE_ATTRIBS_CHANGED;
     }
 }
@@ -206,6 +230,11 @@ static int handler_signal(const char *path, const char *types,
 
     mapper_signal_instance si = sig->id_maps[index].instance;
 
+    // TODO: optionally discard out-of-order messages
+    // requires timebase sync for many-to-one connections or local updates
+    //    if (sig->discard_out_of_order && out_of_order(si->timetag, tt))
+    //        return 0;
+
     if (types[0] == LO_BLOB) {
         dataptr = lo_blob_dataptr((lo_blob)argv[0]);
         count = lo_blob_datasize((lo_blob)argv[0]) /
@@ -231,7 +260,6 @@ static int handler_signal(const char *path, const char *types,
     if (sig->handler)
         sig->handler(sig, &sig->props, sig->id_maps[index].map->local,
                      dataptr, count, &tt);
-    si = si->next;
     if (!sig->props.is_output)
         mdev_receive_update(md, sig, index, tt);
 
@@ -254,10 +282,10 @@ static int handler_signal_instance(const char *path, const char *types,
     if (argc < 3)
         return 0;
 
-    int group_id = argv[0]->i32;
-    int instance_id = argv[1]->i32;
+    int origin = argv[0]->i32;
+    int public_id = argv[1]->i32;
 
-    int index = msig_find_instance_with_remote_ids(sig, group_id, instance_id,
+    int index = msig_find_instance_with_remote_ids(sig, origin, public_id,
                                                    IN_RELEASED_LOCALLY);
 
     lo_timetag tt = lo_message_get_timestamp(msg);
@@ -269,10 +297,10 @@ static int handler_signal_instance(const char *path, const char *types,
             return 0;
 
         // otherwise try to init reserved/stolen instance with device map
-        index = msig_get_instance_with_remote_ids(sig, group_id, instance_id, 0, &tt);
+        index = msig_get_instance_with_remote_ids(sig, origin, public_id, 0, &tt);
         if (index < 0) {
-            trace("no instances available for group=%ld, id=%ld\n",
-                  (long)group_id, (long)instance_id);
+            trace("no instances available for origin=%ld, public_id=%ld\n",
+                  (long)origin, (long)public_id);
             return 0;
         }
     }
@@ -299,6 +327,11 @@ static int handler_signal_instance(const char *path, const char *types,
     mapper_signal_instance si = sig->id_maps[index].instance;
     map = sig->id_maps[index].map;
 
+    // TODO: optionally discard out-of-order messages
+    // requires timebase sync for many-to-one connections or local updates
+    //    if (sig->discard_out_of_order && out_of_order(si->timetag, tt))
+    //        return 0;
+
     si->timetag.sec = tt.sec;
     si->timetag.frac = tt.frac;
 
@@ -397,8 +430,8 @@ static int handler_query(const char *path, const char *types,
         if (!(si = sig->id_maps[i].instance))
             continue;
         if (sig->props.num_instances > 1) {
-            lo_message_add_int32(m, (long)sig->id_maps[i].map->group);
-            lo_message_add_int32(m, (long)sig->id_maps[i].map->local);
+            lo_message_add_int32(m, (long)sig->id_maps[i].map->origin);
+            lo_message_add_int32(m, (long)sig->id_maps[i].map->public);
         }
         if (si->has_value) {
             if (sig->props.type == 'f') {
@@ -448,16 +481,14 @@ mapper_signal mdev_add_input(mapper_device md, const char *name, int length,
                                  maximum, handler, user_data);
     if (!sig)
         return 0;
-    md->n_inputs++;
-    grow_ptr_array((void **) &md->inputs, md->n_inputs,
+    md->props.n_inputs++;
+    grow_ptr_array((void **) &md->inputs, md->props.n_inputs,
                    &md->n_alloc_inputs);
 
     mdev_increment_version(md);
 
-    md->inputs[md->n_inputs - 1] = sig;
+    md->inputs[md->props.n_inputs - 1] = sig;
     sig->device = md;
-    if (md->admin->name)
-        sig->props.device_name = md->admin->name;
 
     type_string = (char*) realloc(type_string, sig->props.length + 3);
     type_string[0] = type_string[1] = 'i';
@@ -510,16 +541,14 @@ mapper_signal mdev_add_output(mapper_device md, const char *name, int length,
                                  maximum, 0, 0);
     if (!sig)
         return 0;
-    md->n_outputs++;
-    grow_ptr_array((void **) &md->outputs, md->n_outputs,
+    md->props.n_outputs++;
+    grow_ptr_array((void **) &md->outputs, md->props.n_outputs,
                    &md->n_alloc_outputs);
 
     mdev_increment_version(md);
 
-    md->outputs[md->n_outputs - 1] = sig;
+    md->outputs[md->props.n_outputs - 1] = sig;
     sig->device = md;
-    if (md->admin->name)
-        sig->props.device_name = md->admin->name;
     return sig;
 }
 
@@ -536,12 +565,8 @@ void mdev_add_signal_methods(mapper_device md, mapper_signal sig)
     snprintf(path, len, "%s%s", sig->props.name, "/got");
     type = (char*) realloc(type, sig->props.length + 3);
     type[0] = type[1] = 'i';
-    memset(type + 2, sig->props.type,
-           sig->props.length);
+    memset(type + 2, sig->props.type, sig->props.length);
     type[sig->props.length + 2] = 0;
-    len = (int) strlen(sig->props.name) + 5;
-    path = (char*) realloc(path, len);
-    snprintf(path, len, "%s%s", sig->props.name, "/got");
     lo_server_add_method(md->server,
                          path,
                          type + 2,
@@ -560,6 +585,7 @@ void mdev_add_signal_methods(mapper_device md, mapper_signal sig)
                          handler_signal_instance, (void *)sig);
     md->n_output_callbacks ++;
     free(path);
+    free(type);
 }
 
 void mdev_remove_signal_methods(mapper_device md, mapper_signal sig)
@@ -568,11 +594,11 @@ void mdev_remove_signal_methods(mapper_device md, mapper_signal sig)
     int len, i;
     if (!md || !sig)
         return;
-    for (i=0; i<md->n_outputs; i++) {
+    for (i=0; i<md->props.n_outputs; i++) {
         if (md->outputs[i] == sig)
             break;
     }
-    if (i==md->n_outputs)
+    if (i==md->props.n_outputs)
         return;
     type = (char*) realloc(type, sig->props.length + 3);
     type[0] = type[1] = 'i';
@@ -606,11 +632,11 @@ void mdev_remove_instance_release_request_callback(mapper_device md, mapper_sign
     int i;
     if (!md || !sig)
         return;
-    for (i=0; i<md->n_outputs; i++) {
+    for (i=0; i<md->props.n_outputs; i++) {
         if (md->outputs[i] == sig)
             break;
     }
-    if (i==md->n_outputs)
+    if (i==md->props.n_outputs)
         return;
     lo_server_del_method(md->server, sig->props.name, "iiF");
     md->n_output_callbacks --;
@@ -620,14 +646,14 @@ void mdev_remove_input(mapper_device md, mapper_signal sig)
 {
     int i, n;
     char str1[1024], str2[1024];
-    for (i=0; i<md->n_inputs; i++) {
+    for (i=0; i<md->props.n_inputs; i++) {
         if (md->inputs[i] == sig)
             break;
     }
-    if (i==md->n_inputs)
+    if (i==md->props.n_inputs)
         return;
 
-    for (n=i; n<(md->n_inputs-1); n++) {
+    for (n=i; n<(md->props.n_inputs-1); n++) {
         md->inputs[n] = md->inputs[n+1];
     }
 
@@ -653,9 +679,10 @@ void mdev_remove_input(mapper_device md, mapper_signal sig)
                 // need to disconnect?
                 mapper_connection c = rs->connections;
                 while (c) {
-                    snprintf(str1, 1024, "%s%s", r->props.src_name, c->props.src_name);
-                    mapper_admin_send_osc(md->admin, 0, "/disconnect", "ss",
-                                          str1, str2);
+                    snprintf(str1, 1024, "%s%s", r->props.src_name,
+                             c->props.src_name);
+                    mapper_admin_send(md->admin, ADM_DISCONNECT, 0, "ss",
+                                      str1, str2);
                     mapper_connection temp = c->next;
                     mapper_receiver_remove_connection(r, c);
                     c = temp;
@@ -667,7 +694,7 @@ void mdev_remove_input(mapper_device md, mapper_signal sig)
         r = r->next;
     }
 
-    md->n_inputs --;
+    md->props.n_inputs --;
     mdev_increment_version(md);
     msig_free(sig);
 }
@@ -676,14 +703,14 @@ void mdev_remove_output(mapper_device md, mapper_signal sig)
 {
     int i, n;
     char str1[1024], str2[1024];
-    for (i=0; i<md->n_outputs; i++) {
+    for (i=0; i<md->props.n_outputs; i++) {
         if (md->outputs[i] == sig)
             break;
     }
-    if (i==md->n_outputs)
+    if (i==md->props.n_outputs)
         return;
 
-    for (n=i; n<(md->n_outputs-1); n++) {
+    for (n=i; n<(md->props.n_outputs-1); n++) {
         md->outputs[n] = md->outputs[n+1];
     }
     if (sig->handler) {
@@ -704,9 +731,10 @@ void mdev_remove_output(mapper_device md, mapper_signal sig)
                 // need to disconnect?
                 mapper_connection c = rs->connections;
                 while (c) {
-                    snprintf(str2, 1024, "%s%s", r->props.dest_name, c->props.dest_name);
-                    mapper_admin_send_osc(md->admin, 0, "/disconnected", "ss",
-                                          str1, str2);
+                    snprintf(str2, 1024, "%s%s", r->props.dest_name,
+                             c->props.dest_name);
+                    mapper_admin_send(md->admin, ADM_DISCONNECTED, 0, "ss",
+                                      str1, str2);
                     mapper_connection temp = c->next;
                     mapper_router_remove_connection(r, c);
                     c = temp;
@@ -718,29 +746,29 @@ void mdev_remove_output(mapper_device md, mapper_signal sig)
         r = r->next;
     }
 
-    md->n_outputs --;
+    md->props.n_outputs --;
     mdev_increment_version(md);
     msig_free(sig);
 }
 
 int mdev_num_inputs(mapper_device md)
 {
-    return md->n_inputs;
+    return md->props.n_inputs;
 }
 
 int mdev_num_outputs(mapper_device md)
 {
-    return md->n_outputs;
+    return md->props.n_outputs;
 }
 
 int mdev_num_links_in(mapper_device md)
 {
-    return md->n_links_in;
+    return md->props.n_links_in;
 }
 
 int mdev_num_links_out(mapper_device md)
 {
-    return md->n_links_out;
+    return md->props.n_links_out;
 }
 
 int mdev_num_connections_in(mapper_device md)
@@ -778,9 +806,12 @@ mapper_signal *mdev_get_outputs(mapper_device md)
 mapper_signal mdev_get_input_by_name(mapper_device md, const char *name,
                                      int *index)
 {
-    int i;
-    int slash = name[0]=='/' ? 1 : 0;
-    for (i=0; i<md->n_inputs; i++)
+    int i, slash;
+    if (!name)
+        return 0;
+
+    slash = name[0]=='/' ? 1 : 0;
+    for (i=0; i<md->props.n_inputs; i++)
     {
         if (strcmp(md->inputs[i]->props.name + 1,
                    name + slash)==0)
@@ -796,9 +827,12 @@ mapper_signal mdev_get_input_by_name(mapper_device md, const char *name,
 mapper_signal mdev_get_output_by_name(mapper_device md, const char *name,
                                       int *index)
 {
-    int i;
-    int slash = name[0]=='/' ? 1 : 0;
-    for (i=0; i<md->n_outputs; i++)
+    int i, slash;
+    if (!name)
+        return 0;
+
+    slash = name[0]=='/' ? 1 : 0;
+    for (i=0; i<md->props.n_outputs; i++)
     {
         if (strcmp(md->outputs[i]->props.name + 1,
                    name + slash)==0)
@@ -813,14 +847,14 @@ mapper_signal mdev_get_output_by_name(mapper_device md, const char *name,
 
 mapper_signal mdev_get_input_by_index(mapper_device md, int index)
 {
-    if (index >= 0 && index < md->n_inputs)
+    if (index >= 0 && index < md->props.n_inputs)
         return md->inputs[index];
     return 0;
 }
 
 mapper_signal mdev_get_output_by_index(mapper_device md, int index)
 {
-    if (index >= 0 && index < md->n_outputs)
+    if (index >= 0 && index < md->props.n_outputs)
         return md->outputs[index];
     return 0;
 }
@@ -853,7 +887,7 @@ int mdev_poll(mapper_device md, int block_ms)
          * no point.  Perhaps if this is supported in the future it
          * can be a heuristic based on a recent number of messages per
          * channel per poll. */
-        while (count < (md->n_inputs + md->n_output_callbacks)*1
+        while (count < (md->props.n_inputs + md->n_output_callbacks)*1
                && lo_server_recv_noblock(md->server, 0))
             count++;
     }
@@ -895,14 +929,15 @@ void mdev_service_fd(mapper_device md, int fd)
 }
 
 void mdev_num_instances_changed(mapper_device md,
-                                mapper_signal sig)
+                                mapper_signal sig,
+                                int size)
 {
     if (!md)
         return;
 
     mapper_router r = md->routers;
     while (r) {
-        mapper_router_num_instances_changed(r, sig);
+        mapper_router_num_instances_changed(r, sig, size);
         r = r->next;
     }
 }
@@ -914,12 +949,11 @@ void mdev_route_signal(mapper_device md,
                        int count,
                        mapper_timetag_t timetag)
 {
-    int flags = 0;
     // pass update to each router in turn
     mapper_router r = md->routers;
     while (r) {
-        mapper_router_process_signal(r, sig, instance_index, value,
-                                     count, timetag, flags);
+        mapper_router_process_signal(r, sig, instance_index,
+                                     value, count, timetag);
         r = r->next;
     }
 }
@@ -995,7 +1029,7 @@ void mdev_add_router(mapper_device md, mapper_router rt)
     mapper_router *r = &md->routers;
     rt->next = *r;
     *r = rt;
-    md->n_links_out++;
+    md->props.n_links_out++;
 }
 
 void mdev_remove_router(mapper_device md, mapper_router rt)
@@ -1005,7 +1039,7 @@ void mdev_remove_router(mapper_device md, mapper_router rt)
         if (*r == rt) {
             *r = rt->next;
             mapper_router_free(rt);
-            md->n_links_out--;
+            md->props.n_links_out--;
             break;
         }
         r = &(*r)->next;
@@ -1017,7 +1051,7 @@ void mdev_add_receiver(mapper_device md, mapper_receiver rc)
     mapper_receiver *r = &md->receivers;
     rc->next = *r;
     *r = rc;
-    md->n_links_in++;
+    md->props.n_links_in++;
 }
 
 void mdev_remove_receiver(mapper_device md, mapper_receiver rc)
@@ -1028,7 +1062,7 @@ void mdev_remove_receiver(mapper_device md, mapper_receiver rc)
         if (*r == rc) {
             *r = rc->next;
             mapper_receiver_free(rc);
-            md->n_links_in--;
+            md->props.n_links_in--;
             break;
         }
         r = &(*r)->next;
@@ -1044,15 +1078,15 @@ void mdev_reserve_instance_id_map(mapper_device dev)
 }
 
 mapper_id_map mdev_add_instance_id_map(mapper_device dev, int local_id,
-                                       int group_id, int remote_id)
+                                       int origin, int public_id)
 {
     if (!dev->reserve_id_map)
         mdev_reserve_instance_id_map(dev);
 
     mapper_id_map map = dev->reserve_id_map;
     map->local = local_id;
-    map->group = group_id;
-    map->remote = remote_id;
+    map->origin = origin;
+    map->public = public_id;
     map->refcount_local = 0;
     map->refcount_remote = 0;
     dev->reserve_id_map = map->next;
@@ -1088,11 +1122,11 @@ mapper_id_map mdev_find_instance_id_map_by_local(mapper_device dev,
 }
 
 mapper_id_map mdev_find_instance_id_map_by_remote(mapper_device dev,
-                                                  int group_id, int remote_id)
+                                                  int origin, int public_id)
 {
     mapper_id_map map = dev->active_id_map;
     while (map) {
-        if (map->group == group_id && map->remote == remote_id)
+        if (map->origin == origin && map->public == public_id)
             return map;
         map = map->next;
     }
@@ -1132,10 +1166,10 @@ void mdev_start_server(mapper_device md, int starting_port)
         // Disable liblo message queueing
         lo_server_enable_queue(md->server, 0, 1);
 
-        md->admin->port = lo_server_get_port(md->server);
-        trace("bound to port %i\n", md->admin->port);
+        md->props.port = lo_server_get_port(md->server);
+        trace("bound to port %i\n", md->props.port);
 
-        for (i = 0; i < md->n_inputs; i++) {
+        for (i = 0; i < md->props.n_inputs; i++) {
             type = (char*) realloc(type, md->inputs[i]->props.length + 3);
             type[0] = type[1] = 'i';
             memset(type + 2, md->inputs[i]->props.type,
@@ -1173,7 +1207,7 @@ void mdev_start_server(mapper_device md, int starting_port)
                                  "s",
                                  handler_query, (void *) (md->inputs[i]));
         }
-        for (i = 0; i < md->n_outputs; i++) {
+        for (i = 0; i < md->props.n_outputs; i++) {
             if (md->outputs[i]->handler) {
                 type = (char*) realloc(type, md->outputs[i]->props.length + 3);
                 type[0] = type[1] = 'i';
@@ -1218,35 +1252,39 @@ void mdev_start_server(mapper_device md, int starting_port)
 
 const char *mdev_name(mapper_device md)
 {
-    /* Hand this off to the admin struct, where the name may be
-     * cached. However: manually checking ordinal.locked here so that
-     * we can safely trace bad usage when mapper_admin_full_name is
-     * called inappropriately. */
-    if (md->admin->registered)
-        return mapper_admin_name(md->admin);
-    else
+    if (!md->registered || !md->ordinal.locked)
         return 0;
+
+    if (md->props.name)
+        return md->props.name;
+
+    unsigned int len = strlen(md->props.identifier) + 6;
+    md->props.name = (char *) malloc(len);
+    md->props.name[0] = 0;
+    snprintf(md->props.name, len, "/%s.%d", md->props.identifier,
+             md->ordinal.value);
+    return md->props.name;
 }
 
 unsigned int mdev_id(mapper_device md)
 {
-    if (md->admin->registered)
-        return md->admin->name_hash;
+    if (md->registered)
+        return md->props.name_hash;
     else
         return 0;
 }
 
 unsigned int mdev_port(mapper_device md)
 {
-    if (md->admin->registered)
-        return md->admin->port;
+    if (md->registered)
+        return md->props.port;
     else
         return 0;
 }
 
 const struct in_addr *mdev_ip4(mapper_device md)
 {
-    if (md->admin->registered)
+    if (md->registered)
         return &md->admin->interface_ip;
     else
         return 0;
@@ -1259,8 +1297,8 @@ const char *mdev_interface(mapper_device md)
 
 unsigned int mdev_ordinal(mapper_device md)
 {
-    if (md->admin->registered)
-        return md->admin->ordinal.value;
+    if (md->registered)
+        return md->ordinal.value;
     else
         return 0;
 }
@@ -1270,19 +1308,24 @@ int mdev_ready(mapper_device device)
     if (!device)
         return 0;
 
-    return device->admin->registered;
+    return device->registered;
+}
+
+mapper_db_device mdev_properties(mapper_device dev)
+{
+    return &dev->props;
 }
 
 void mdev_set_property(mapper_device dev, const char *property,
-                       lo_type type, lo_arg *value)
+                       char type, void *value, int length)
 {
-    mapper_table_add_or_update_osc_value(dev->extra,
-                                         property, type, value);
+    mapper_table_add_or_update_typed_value(dev->props.extra, property,
+                                           type, value, length);
 }
 
 void mdev_remove_property(mapper_device dev, const char *property)
 {
-    table_remove_key(dev->extra, property, 1);
+    table_remove_key(dev->props.extra, property, 1);
 }
 
 lo_server mdev_get_lo_server(mapper_device md)
@@ -1290,19 +1333,19 @@ lo_server mdev_get_lo_server(mapper_device md)
     return md->server;
 }
 
-void mdev_timetag_now(mapper_device dev, mapper_timetag_t *timetag)
+void mdev_now(mapper_device dev, mapper_timetag_t *timetag)
 {
     mapper_clock_now(&dev->admin->clock, timetag);
 }
 
-void mdev_add_link_callback(mapper_device dev,
+void mdev_set_link_callback(mapper_device dev,
                             mapper_device_link_handler *h, void *user)
 {
     dev->link_cb = h;
     dev->link_cb_userdata = user;
 }
 
-void mdev_add_connection_callback(mapper_device dev,
+void mdev_set_connection_callback(mapper_device dev,
                                   mapper_device_connection_handler *h,
                                   void *user)
 {
diff --git a/src/expression.c b/src/expression.c
index 1e86f32..7e42332 100644
--- a/src/expression.c
+++ b/src/expression.c
@@ -6,45 +6,286 @@
 
 #include "mapper_internal.h"
 
-#define STACK_SIZE 256
+#define MAX_HISTORY -100
+#define STACK_SIZE 128
 #ifdef DEBUG
 #define TRACING 0 /* Set non-zero to see trace during parse & eval. */
 #else
 #define TRACING 0
 #endif
 
+#define lex_error trace
+#define parse_error trace
+
+typedef union _mapper_signal_value {
+    float f;
+    double d;
+    int i32;
+} mapper_signal_value_t, mval;
+
+static int mini(int x, int y)
+{
+    if (y < x) return y;
+    else return x;
+}
+
 static float minf(float x, float y)
 {
     if (y < x) return y;
     else return x;
 }
 
+static double mind(double x, double y)
+{
+    if (y < x) return y;
+    else return x;
+}
+
+static int maxi(int x, int y)
+{
+    if (y > x) return y;
+    else return x;
+}
+
 static float maxf(float x, float y)
 {
     if (y > x) return y;
     else return x;
 }
 
+static double maxd(double x, double y)
+{
+    if (y > x) return y;
+    else return x;
+}
+
 static float pif()
 {
     return M_PI;
 }
 
-static float midiToHz(float x)
+static double pid()
+{
+    return M_PI;
+}
+
+static float ef()
+{
+    return M_E;
+}
+
+static double ed()
+{
+    return M_E;
+}
+
+static float midiToHzf(float x)
+{
+    return 440. * pow(2.0, (x - 69) / 12.0);
+}
+
+static double midiToHzd(double x)
 {
     return 440. * pow(2.0, (x - 69) / 12.0);
 }
 
-static float hzToMidi(float x)
+static float hzToMidif(float x)
 {
     return 69. + 12. * log2(x / 440.);
 }
 
-static float uniform(float x)
+static double hzToMidid(double x)
+{
+    return 69. + 12. * log2(x / 440.);
+}
+
+static float uniformf(float x)
+{
+    return rand() / (RAND_MAX + 1.0) * x;
+}
+
+static double uniformd(double x)
 {
     return rand() / (RAND_MAX + 1.0) * x;
 }
 
+static int alli(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].i32 == 0) {
+            return 0;
+        }
+    }
+    return 1;
+}
+
+static int allf(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].f == 0) {
+            return 0;
+        }
+    }
+    return 1;
+}
+
+static int alld(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].d == 0) {
+            return 0;
+        }
+    }
+    return 1;
+}
+
+
+static int anyi(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].i32 != 0) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+static float anyf(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].f != 0.f) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+static double anyd(mapper_signal_value_t *val, int length) {
+    int i;
+    for (i = 0; i < length; i++) {
+        if (val[i].d != 0.) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+static int sumi(mapper_signal_value_t *val, int length)
+{
+    int i, aggregate = 0;
+    for (i = 0; i < length; i++) {
+        aggregate += val[i].i32;
+    }
+    return aggregate;
+}
+
+static float sumf(mapper_signal_value_t *val, int length)
+{
+    int i;
+    float aggregate = 0.f;
+    for (i = 0; i < length; i++) {
+        aggregate += val[i].f;
+    }
+    return aggregate;
+}
+
+static double sumd(mapper_signal_value_t *val, int length)
+{
+    int i;
+    double aggregate = 0.;
+    for (i = 0; i < length; i++) {
+        aggregate += val[i].d;
+    }
+    return aggregate;
+}
+
+static float meanf(mapper_signal_value_t *val, int length)
+{
+    return sumf(val, length) / (float)length;
+}
+
+static double meand(mapper_signal_value_t *val, int length)
+{
+    return sumd(val, length) / (double)length;
+}
+
+static int vmaxi(mapper_signal_value_t *val, int length)
+{
+    int i, max = val[0].i32;
+    for (i = 1; i < length; i++) {
+        if (val[i].i32 > max)
+            max = val[i].i32;
+    }
+    return max;
+}
+
+static float vmaxf(mapper_signal_value_t *val, int length)
+{
+    int i;
+    float max = val[0].f;
+    for (i = 1; i < length; i++) {
+        if (val[i].f > max)
+            max = val[i].f;
+    }
+    return max;
+}
+
+static double vmaxd(mapper_signal_value_t *val, int length)
+{
+    int i;
+    double max = val[0].d;
+    for (i = 1; i < length; i++) {
+        if (val[i].d > max)
+            max = val[i].d;
+    }
+    return max;
+}
+
+static int vmini(mapper_signal_value_t *val, int length)
+{
+    int i, min = val[0].i32;
+    for (i = 1; i < length; i++) {
+        if (val[i].i32 < min)
+            min = val[i].i32;
+    }
+    return min;
+}
+
+static float vminf(mapper_signal_value_t *val, int length)
+{
+    int i;
+    float min = val[0].f;
+    for (i = 1; i < length; i++) {
+        if (val[i].f < min)
+            min = val[i].f;
+    }
+    return min;
+}
+
+static double vmind(mapper_signal_value_t *val, int length)
+{
+    int i;
+    double min = val[0].d;
+    for (i = 1; i < length; i++) {
+        if (val[i].d < min)
+            min = val[i].d;
+    }
+    return min;
+}
+
+typedef enum {
+    VAR_UNKNOWN=-1,
+    VAR_X=0,
+    VAR_Y,
+    N_VARS
+} expr_var_t;
+
+const char *var_strings[] =
+{
+    "x",
+    "y",
+};
+
 typedef enum {
     FUNC_UNKNOWN=-1,
     FUNC_ABS=0,
@@ -59,6 +300,7 @@ typedef enum {
     FUNC_CEIL,
     FUNC_COS,
     FUNC_COSH,
+    FUNC_E,
     FUNC_EXP,
     FUNC_EXP2,
     FUNC_FLOOR,
@@ -80,6 +322,7 @@ typedef enum {
     FUNC_TAN,
     FUNC_TANH,
     FUNC_TRUNC,
+    /* place functions which should never be precomputed below this point */
     FUNC_UNIFORM,
     N_FUNCS
 } expr_func_t;
@@ -87,74 +330,179 @@ typedef enum {
 static struct {
     const char *name;
     unsigned int arity;
-    void *func;
+    void *func_int32;
+    void *func_float;
+    void *func_double;
 } function_table[] = {
-    { "abs", 1, fabsf },
-    { "acos", 1, acosf },
-    { "acosh", 1, acoshf },
-    { "asin", 1, asinf },
-    { "asinh", 1, asinhf },
-    { "atan", 1, atanf },
-    { "atan2", 2, atan2f },
-    { "atanh", 1, atanhf },
-    { "cbrt", 1, cbrtf },
-    { "ceil", 1, ceilf },
-    { "cos", 1, cosf },
-    { "cosh", 1, coshf },
-    { "exp", 1, expf },
-    { "exp2", 1, exp2f },
-    { "floor", 1, floorf },
-    { "hypot", 2, hypotf },
-    { "hzToMidi", 1, hzToMidi },
-    { "log", 1, logf },
-    { "log10", 1, log10f },
-    { "log2", 1, log2f },
-    { "logb", 1, logbf },
-    { "max", 2, maxf },
-    { "midiToHz", 1, midiToHz },
-    { "min", 2, minf },
-    { "pi", 0, pif },
-    { "pow", 2, powf },
-    { "round", 1, roundf },
-    { "sin", 1, sinf },
-    { "sinh", 1, sinhf },
-    { "sqrt", 1, sqrtf },
-    { "tan", 1, tanf },
-    { "tanh", 1, tanhf },
-    { "trunc", 1, truncf },
-    { "uniform", 1, uniform },
+    { "abs",      1,    abs,        fabsf,      fabs        },
+    { "acos",     1,    0,          acosf,      acos        },
+    { "acosh",    1,    0,          acoshf,     acosh       },
+    { "asin",     1,    0,          asinf,      asin        },
+    { "asinh",    1,    0,          asinhf,     asinh       },
+    { "atan",     1,    0,          atanf,      atan        },
+    { "atan2",    2,    0,          atan2f,     atan2       },
+    { "atanh",    1,    0,          atanhf,     atanh       },
+    { "cbrt",     1,    0,          cbrtf,      cbrt        },
+    { "ceil",     1,    0,          ceilf,      ceil        },
+    { "cos",      1,    0,          cosf,       cos         },
+    { "cosh",     1,    0,          coshf,      cosh        },
+    { "e",        0,    0,          ef,         ed          },
+    { "exp",      1,    0,          expf,       exp         },
+    { "exp2",     1,    0,          exp2f,      exp2        },
+    { "floor",    1,    0,          floorf,     floor       },
+    { "hypot",    2,    0,          hypotf,     hypot       },
+    { "hzToMidi", 1,    0,          hzToMidif,  hzToMidid   },
+    { "log",      1,    0,          logf,       log         },
+    { "log10",    1,    0,          log10f,     log10       },
+    { "log2",     1,    0,          log2f,      log2        },
+    { "logb",     1,    0,          logbf,      logb        },
+    { "max",      2,    maxi,       maxf,       maxd        },
+    { "midiToHz", 1,    0,          midiToHzf,  midiToHzd   },
+    { "min",      2,    mini,       minf,       mind        },
+    { "pi",       0,    0,          pif,        pid         },
+    { "pow",      2,    0,          powf,       pow         },
+    { "round",    1,    0,          roundf,     round       },
+    { "sin",      1,    0,          sinf,       sin         },
+    { "sinh",     1,    0,          sinhf,      sinh        },
+    { "sqrt",     1,    0,          sqrtf,      sqrt        },
+    { "tan",      1,    0,          tanf,       tan         },
+    { "tanh",     1,    0,          tanhf,      tanh        },
+    { "trunc",    1,    0,          truncf,     trunc       },
+    /* place functions which should never be precomputed below this point */
+    { "uniform",  1,    0,          uniformf,   uniformd    },
+};
+
+typedef enum {
+    VFUNC_UNKNOWN=-1,
+    VFUNC_ALL=0,
+    VFUNC_ANY,
+    VFUNC_MEAN,
+    VFUNC_SUM,
+    VFUNC_MAX,
+    VFUNC_MIN,
+    N_VFUNCS
+} expr_vfunc_t;
+
+static struct {
+    const char *name;
+    unsigned int arity;
+    void *func_int32;
+    void *func_float;
+    void *func_double;
+} vfunction_table[] = {
+    { "all",    1,      alli,       allf,       alld        },
+    { "any",    1,      anyi,       anyf,       anyd        },
+    { "mean",   1,      0,          meanf,      meand       },
+    { "sum",    1,      sumi,       sumf,       sumd        },
+    { "vmax",   1,      vmaxi,      vmaxf,      vmaxd       },
+    { "vmin",   1,      vmini,      vminf,      vmind       },
 };
 
+typedef enum {
+    OP_LOGICAL_NOT,
+    OP_MULTIPLY,
+    OP_DIVIDE,
+    OP_MODULO,
+    OP_ADD,
+    OP_SUBTRACT,
+    OP_LEFT_BIT_SHIFT,
+    OP_RIGHT_BIT_SHIFT,
+    OP_IS_GREATER_THAN,
+    OP_IS_GREATER_THAN_OR_EQUAL,
+    OP_IS_LESS_THAN,
+    OP_IS_LESS_THAN_OR_EQUAL,
+    OP_IS_EQUAL,
+    OP_IS_NOT_EQUAL,
+    OP_BITWISE_AND,
+    OP_BITWISE_XOR,
+    OP_BITWISE_OR,
+    OP_LOGICAL_AND,
+    OP_LOGICAL_OR,
+    OP_ASSIGNMENT,
+    OP_CONDITIONAL_IF_THEN,
+    OP_CONDITIONAL_IF_ELSE,
+    OP_CONDITIONAL_IF_THEN_ELSE,
+} expr_op_t;
+
+static struct {
+    const char *name;
+    unsigned int arity;
+    unsigned int precedence;
+} op_table[] = {
+    { "!",          1,  11 },
+    { "*",          2,  10 },
+    { "/",          2,  10 },
+    { "%",          2,  10 },
+    { "+",          2,   9 },
+    { "-",          2,   9 },
+    { "<<",         2,   8 },
+    { ">>",         2,   8 },
+    { ">",          2,   7 },
+    { ">=",         2,   7 },
+    { "<",          2,   7 },
+    { "<=",         2,   7 },
+    { "==",         2,   6 },
+    { "!=",         2,   6 },
+    { "&",          2,   5 },
+    { "^",          2,   4 },
+    { "|",          2,   3 },
+    { "&&",         2,   2 },
+    { "||",         2,   1 },
+    { "=",          2,   0 },
+    { "IFTHEN",     2,   0 },
+    { "IFELSE",     2,   0 },
+    { "IFTHENELSE", 3,   0 },
+};
+
+typedef int func_int32_arity0();
+typedef int func_int32_arity1(int);
+typedef int func_int32_arity2(int,int);
 typedef float func_float_arity0();
 typedef float func_float_arity1(float);
 typedef float func_float_arity2(float,float);
+typedef double func_double_arity0();
+typedef double func_double_arity1(double);
+typedef double func_double_arity2(double,double);
+typedef int vfunc_int32_arity1(mapper_signal_value_t*, int);
+typedef float vfunc_float_arity1(mapper_signal_value_t*, int);
+typedef double vfunc_double_arity1(mapper_signal_value_t*, int);
 
 typedef struct _token {
     enum {
-        TOK_FLOAT,
-        TOK_INT,
-        TOK_OP,
-        TOK_OPEN_PAREN,
-        TOK_CLOSE_PAREN,
-        TOK_VAR,
-        TOK_OPEN_SQUARE,
-        TOK_CLOSE_SQUARE,
-        TOK_OPEN_CURLY,
-        TOK_CLOSE_CURLY,
-        TOK_FUNC,
-        TOK_COMMA,
+        TOK_CONST           = 0x0001,
+        TOK_OP              = 0x0002,
+        TOK_VAR             = 0x0004,
+        TOK_FUNC            = 0x0008,
+        TOK_OPEN_PAREN      = 0x0010,
+        TOK_CLOSE_PAREN     = 0x0020,
+        TOK_OPEN_SQUARE     = 0x0040,
+        TOK_CLOSE_SQUARE    = 0x0080,
+        TOK_OPEN_CURLY      = 0x0100,
+        TOK_CLOSE_CURLY     = 0x0200,
+        TOK_COMMA           = 0x0400,
+        TOK_QUESTION        = 0x0800,
+        TOK_COLON           = 0x1000,
+        TOK_NEGATE          = 0x2000,
+        TOK_VECTORIZE       = 0x4000,
+        TOK_VFUNC           = 0x8000,
         TOK_END,
-        TOK_TOFLOAT,
-        TOK_TOINT32,
-    } type;
+    } toktype;
     union {
         float f;
         int i;
-        char var;
-        char op;
+        double d;
+        expr_var_t var;
+        expr_op_t op;
         expr_func_t func;
+        expr_vfunc_t vfunc;
     };
-} mapper_token_t;
+    char datatype;
+    char casttype;
+    char history_index;
+    char vector_length_locked;
+    int vector_length;
+    int vector_index;
+} mapper_token_t, *mapper_token;
 
 static expr_func_t function_lookup(const char *s, int len)
 {
@@ -166,774 +514,964 @@ static expr_func_t function_lookup(const char *s, int len)
     return FUNC_UNKNOWN;
 }
 
-static int expr_lex(const char **str, mapper_token_t *tok)
+static expr_vfunc_t vfunction_lookup(const char *s, int len)
 {
-    int n=0;
-    char c = **str;
-    const char *s = *str;
+    int i;
+    for (i=0; i<N_VFUNCS; i++) {
+        if (strncmp(s, vfunction_table[i].name, len)==0)
+            return i;
+    }
+    return VFUNC_UNKNOWN;
+}
+
+static expr_var_t variable_lookup(const char *s, int len)
+{
+    int i;
+    for (i=0; i<N_VARS; i++) {
+        if (strncmp(s, var_strings[i], len)==0)
+            return i;
+    }
+    return VAR_UNKNOWN;
+}
+
+static int expr_lex(const char *str, int index, mapper_token_t *tok)
+{
+    tok->datatype = 'i';
+    tok->casttype = 0;
+    tok->vector_length = 1;
+    tok->vector_index = 0;
+    tok->vector_length_locked = 0;
+    int n, i;
+    char c = str[index];
     int integer_found = 0;
 
     if (c==0) {
-        tok->type = TOK_END;
-        return 0;
+        tok->toktype = TOK_END;
+        return index;
     }
 
   again:
 
+    i = index;
     if (isdigit(c)) {
         do {
-            c = (*(++*str));
+            c = str[++index];
         } while (c && isdigit(c));
-        n = atoi(s);
+        n = atoi(str+i);
         integer_found = 1;
         if (c!='.' && c!='e') {
             tok->i = n;
-            tok->type = TOK_INT;
-            return 0;
+            tok->toktype = TOK_CONST;
+            tok->datatype = 'i';
+            return index;
         }
     }
 
     switch (c) {
     case '.':
-        c = (*(++*str));
+        c = str[++index];
         if (!isdigit(c) && c!='e' && integer_found) {
-            tok->type = TOK_FLOAT;
+            tok->toktype = TOK_CONST;
             tok->f = (float)n;
-            return 0;
+            tok->datatype = 'f';
+            return index;
         }
         if (!isdigit(c) && c!='e')
             break;
         do {
-            c = (*(++*str));
+            c = str[++index];
         } while (c && isdigit(c));
         if (c!='e') {
-            tok->f = atof(s);
-            tok->type = TOK_FLOAT;
-            return 0;
+            tok->f = atof(str+i);
+            tok->toktype = TOK_CONST;
+            tok->datatype = 'f';
+            return index;
         }
     case 'e':
         if (!integer_found) {
-            s = *str;
+            n = index;
             while (c && (isalpha(c) || isdigit(c)))
-                c = (*(++*str));
-            tok->type = TOK_FUNC;
-            tok->func = function_lookup(s, *str-s);
+                c = str[++index];
+            tok->toktype = TOK_FUNC;
+            tok->func = function_lookup(str+i, index-i);
             if (tok->func == FUNC_UNKNOWN) {
-                printf("unexpected `e' outside float\n");
+                lex_error("unexpected `e' outside float\n");
                 break;
             }
             else
-                return 0;
+                return index;
         }
-        c = (*(++*str));
+        c = str[++index];
         if (c!='-' && c!='+' && !isdigit(c)) {
-            printf("Incomplete scientific notation `%s'.\n",s);
+            lex_error("Incomplete scientific notation `%s'.\n", str+i);
             break;
         }
         if (c=='-' || c=='+')
-            c = (*(++*str));
+            c = str[++index];
         while (c && isdigit(c))
-            c = (*(++*str));
-        tok->type = TOK_FLOAT;
-        tok->f = atof(s);
-        return 0;
+            c = str[++index];
+        tok->toktype = TOK_CONST;
+        tok->datatype = 'f';
+        tok->f = atof(str+i);
+        return index;
     case '+':
+        tok->toktype = TOK_OP;
+        tok->op = OP_ADD;
+        return ++index;
     case '-':
+        // could be either subtraction or negation
+        i = index-1;
+        // back up one character
+        while (i && strchr(" \t\r\n", str[i]))
+           i--;
+        if (isalpha(str[i]) || isdigit(str[i]) || strchr(")]}", str[i])) {
+            tok->toktype = TOK_OP;
+            tok->op = OP_SUBTRACT;
+        }
+        else {
+            tok->toktype = TOK_NEGATE;
+        }
+        return ++index;
     case '/':
+        tok->toktype = TOK_OP;
+        tok->op = OP_DIVIDE;
+        return ++index;
     case '*':
+        tok->toktype = TOK_OP;
+        tok->op = OP_MULTIPLY;
+        return ++index;
     case '%':
+        tok->toktype = TOK_OP;
+        tok->op = OP_MODULO;
+        return ++index;
     case '=':
-        tok->type = TOK_OP;
-        tok->op = c;
-        ++*str;
-        return 0;
+        // could be '=', '=='
+        tok->toktype = TOK_OP;
+        tok->op = OP_ASSIGNMENT;
+        c = str[++index];
+        if (c == '=') {
+            tok->op = OP_IS_EQUAL;
+            ++index;
+        }
+        return index;
+    case '<':
+        // could be '<', '<=', '<<'
+        tok->toktype = TOK_OP;
+        tok->op = OP_IS_LESS_THAN;
+        c = str[++index];
+        if (c == '=') {
+            tok->op = OP_IS_LESS_THAN_OR_EQUAL;
+            ++index;
+        }
+        else if (c == '<') {
+            tok->op = OP_LEFT_BIT_SHIFT;
+            ++index;
+        }
+        return index;
+    case '>':
+        // could be '>', '>=', '>>'
+        tok->toktype = TOK_OP;
+        tok->op = OP_IS_GREATER_THAN;
+        c = str[++index];
+        if (c == '=') {
+            tok->op = OP_IS_GREATER_THAN_OR_EQUAL;
+            ++index;
+        }
+        else if (c == '>') {
+            tok->op = OP_RIGHT_BIT_SHIFT;
+            ++index;
+        }
+        return index;
+    case '!':
+        // could be '!', '!='
+        // TODO: handle factorial case
+        tok->toktype = TOK_OP;
+        tok->op = OP_LOGICAL_NOT;
+        c = str[++index];
+        if (c == '=') {
+            tok->op = OP_IS_NOT_EQUAL;
+            ++index;
+        }
+        return index;
+    case '&':
+        // could be '&', '&&'
+        tok->toktype = TOK_OP;
+        tok->op = OP_BITWISE_AND;
+        c = str[++index];
+        if (c == '&') {
+            tok->op = OP_LOGICAL_AND;
+            ++index;
+        }
+        return index;
+    case '|':
+        // could be '|', '||'
+        tok->toktype = TOK_OP;
+        tok->op = OP_BITWISE_OR;
+        c = str[++index];
+        if (c == '|') {
+            tok->op = OP_LOGICAL_OR;
+            ++index;
+        }
+        return index;
+    case '^':
+        // bitwise XOR
+        tok->toktype = TOK_OP;
+        tok->op = OP_BITWISE_XOR;
+        return ++index;
     case '(':
-        tok->type = TOK_OPEN_PAREN;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_OPEN_PAREN;
+        return ++index;
     case ')':
-        tok->type = TOK_CLOSE_PAREN;
-        ++*str;
-        return 0;
-    case 'x':
-    case 'y':
-        tok->type = TOK_VAR;
-        tok->var = c;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_CLOSE_PAREN;
+        return ++index;
     case '[':
-        tok->type = TOK_OPEN_SQUARE;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_OPEN_SQUARE;
+        return ++index;
     case ']':
-        tok->type = TOK_CLOSE_SQUARE;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_CLOSE_SQUARE;
+        return ++index;
     case '{':
-        tok->type = TOK_OPEN_CURLY;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_OPEN_CURLY;
+        return ++index;
     case '}':
-        tok->type = TOK_CLOSE_CURLY;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_CLOSE_CURLY;
+        return ++index;
     case ' ':
     case '\t':
     case '\r':
     case '\n':
-        c = (*(++*str));
+        c = str[++index];
         goto again;
     case ',':
-        tok->type = TOK_COMMA;
-        ++*str;
-        return 0;
+        tok->toktype = TOK_COMMA;
+        return ++index;
+    case '?':
+        // conditional
+        tok->toktype = TOK_QUESTION;
+        tok->op = OP_CONDITIONAL_IF_THEN;
+        c = str[++index];
+        if (c == ':') {
+            tok->op = OP_CONDITIONAL_IF_ELSE;
+            ++index;
+        }
+        return index;
+    case ':':
+        tok->toktype = TOK_COLON;
+        return ++index;
     default:
         if (!isalpha(c)) {
-            printf("unknown character '%c' in lexer\n", c);
+            lex_error("unknown character '%c' in lexer\n", c);
             break;
         }
-        s = *str;
         while (c && (isalpha(c) || isdigit(c)))
-            c = (*(++*str));
-        tok->type = TOK_FUNC;
-        tok->func = function_lookup(s, *str-s);
-        return 0;
+            c = str[++index];
+        if ((tok->var = variable_lookup(str+i, index-i)) != VAR_UNKNOWN) {
+            tok->toktype = TOK_VAR;
+        }
+        else if ((tok->func = function_lookup(str+i, index-i)) != FUNC_UNKNOWN) {
+            tok->toktype = TOK_FUNC;
+        }
+        else if ((tok->vfunc = vfunction_lookup(str+i, index-i)) != VFUNC_UNKNOWN) {
+            tok->toktype = TOK_VFUNC;
+        }
+        else {
+            lex_error("Unknown variable or function name `%s'.\n",str+i);
+            break;
+        }
+        return index;
     }
 
     return 1;
 }
 
-typedef struct _exprnode
-{
-    mapper_token_t tok;
-    int is_float;
-    int history_index;  // when tok.type==TOK_VAR
-    int vector_index;   // when tok.type==TOK_VAR
-    struct _exprnode *next;
-} *exprnode;
-
 struct _mapper_expr
 {
-    exprnode node;
+    mapper_token start;
+    int length;
     int vector_size;
     int input_history_size;
     int output_history_size;
+    int constant_output;
 };
 
-typedef enum {
-    YEQUAL_Y,
-    YEQUAL_EQ,
-    EXPR,
-    EXPR_RIGHT,
-    TERM,
-    TERM_RIGHT,
-    VALUE,
-    NEGATE,
-    VAR_RIGHT,
-    VAR_VECTINDEX,
-    VAR_HISTINDEX,
-    CLOSE_VECTINDEX,
-    CLOSE_HISTINDEX,
-    OPEN_PAREN,
-    CLOSE_PAREN,
-    COMMA,
-    END,
-} state_t;
-
-typedef struct _stack_obj
-{
-    union {
-        state_t state;
-        exprnode node;
-    };
-    enum {
-        ST_STATE,
-        ST_NODE,
-    } type;
-} stack_obj_t;
-
-static exprnode exprnode_new(mapper_token_t *tok, int is_float)
-{
-    exprnode t = (exprnode)
-        malloc(sizeof(struct _exprnode));
-    t->tok = *tok;
-    t->is_float = is_float;
-    t->history_index = 0;
-    t->vector_index = 0;
-    t->next = 0;
-    return t;
-}
-
-static void exprnode_free(exprnode e)
-{
-    while (e) {
-        exprnode tmp = e;
-        e = e->next;
-        free(tmp);
-    }
-}
-
 void mapper_expr_free(mapper_expr expr)
 {
-    exprnode_free(expr->node);
+    if (expr->start)
+        free(expr->start);
     free(expr);
 }
 
 #ifdef DEBUG
-void printtoken(mapper_token_t *tok)
+
+void printtoken(mapper_token_t tok)
 {
-    switch (tok->type) {
-    case TOK_FLOAT:        printf("%f", tok->f);          break;
-    case TOK_INT:          printf("%d", tok->i);          break;
-    case TOK_OP:           printf("%c", tok->op);         break;
+    int locked = tok.vector_length_locked;
+    switch (tok.toktype) {
+    case TOK_CONST:
+        switch (tok.datatype) {
+            case 'f':      printf("%ff%d", tok.f,
+                                  tok.vector_length);     break;
+            case 'd':      printf("%fd%d", tok.d,
+                                  tok.vector_length);     break;
+            case 'i':      printf("%di%d", tok.i,
+                                  tok.vector_length);     break;
+        }
+        if (locked)        printf("'");                   break;
+    case TOK_OP:           printf("%s%c%d%s",
+                                  op_table[tok.op].name,
+                                  tok.datatype,
+                                  tok.vector_length,
+                                  locked ? "'" : "");     break;
+    case TOK_OPEN_CURLY:   printf("{");                   break;
     case TOK_OPEN_PAREN:   printf("(");                   break;
     case TOK_CLOSE_PAREN:  printf(")");                   break;
-    case TOK_VAR:          printf("VAR(%c)", tok->var);   break;
     case TOK_OPEN_SQUARE:  printf("[");                   break;
     case TOK_CLOSE_SQUARE: printf("]");                   break;
-    case TOK_OPEN_CURLY:   printf("{");                   break;
-    case TOK_CLOSE_CURLY:  printf("}");                   break;
-    case TOK_FUNC:         printf("FUNC(%s)",
-                                  function_table[tok->func].name);
-        break;
+    case TOK_VAR:          printf("VAR(%s%c%d%s){%d}[%d]",
+                                  var_strings[tok.var], tok.datatype,
+                                  tok.vector_length,
+                                  locked ? "'" : "",
+                                  tok.history_index,
+                                  tok.vector_index);      break;
+    case TOK_FUNC:         printf("FUNC(%s)%c%d%s",
+                                  function_table[tok.func].name,
+                                  tok.datatype,
+                                  tok.vector_length,
+                                  locked ? "'" : "");     break;
     case TOK_COMMA:        printf(",");                   break;
+    case TOK_QUESTION:     printf("?");                   break;
+    case TOK_COLON:        printf(":");                   break;
+    case TOK_VECTORIZE:    printf("VECT%c%d(%d)",
+                                  tok.datatype,
+                                  tok.vector_length,
+                                  tok.vector_index);      break;
+    case TOK_NEGATE:       printf("-");                   break;
+    case TOK_VFUNC:        printf("VFUNC(%s)%c%d",
+                                  vfunction_table[tok.func].name,
+                                  tok.datatype,
+                                  tok.vector_length);     break;
     case TOK_END:          printf("END");                 break;
-    case TOK_TOFLOAT:      printf("(float)");             break;
-    case TOK_TOINT32:      printf("(int32)");             break;
     default:               printf("(unknown token)");     break;
     }
+    if (tok.casttype)
+        printf("->%c", tok.casttype);
 }
 
-void printexprnode(const char *s, exprnode list)
+void printstack(const char *s, mapper_token_t *stack, int top)
 {
-    printf("%s", s);
-    while (list) {
-        if (list->is_float
-            && list->tok.type != TOK_FLOAT
-            && list->tok.type != TOK_TOFLOAT)
-            printf(".");
-        printtoken(&list->tok);
-        if (list->tok.type == TOK_VAR) {
-            if (list->history_index < 0)
-                printf("{%d}", list->history_index);
-            if (list->vector_index > -1)
-                printf("[%d]", list->vector_index);
-        }
-        list = list->next;
-        if (list) printf(" ");
+    int i;
+    printf("%s ", s);
+    for (i=0; i<=top; i++) {
+        printtoken(stack[i]);
+        printf(" ");
     }
+    printf("\n");
 }
 
 void printexpr(const char *s, mapper_expr e)
 {
-    printexprnode(s, e->node);
+    printstack(s, e->start, e->length-1);
 }
 
-void printstack(stack_obj_t *stack, int top)
+#endif
+
+static char compare_token_datatype(mapper_token_t tok, char type)
 {
-    const char *state_name[] = {
-        "YEQUAL_Y", "YEQUAL_EQ", "EXPR", "EXPR_RIGHT", "TERM",
-        "TERM_RIGHT", "VALUE", "NEGATE", "VAR_RIGHT",
-        "VAR_VECTINDEX", "VAR_HISTINDEX", "CLOSE_VECTINDEX",
-        "CLOSE_HISTINDEX", "OPEN_PAREN", "CLOSE_PAREN",
-        "COMMA", "END" };
+    // return the higher datatype
+    if (tok.datatype == 'd' || tok.casttype == 'd' || type == 'd')
+        return 'd';
+    else if (tok.datatype == 'f' || tok.casttype == 'f' || type == 'f')
+        return 'f';
+    else
+        return 'i';
+}
 
-    int i;
-    printf("Stack: ");
-    for (i=0; i<=top; i++) {
-        if (stack[i].type == ST_NODE) {
-            printf("[");
-            printexprnode("", stack[i].node);
-            printf("] ");
-            continue;
+static void promote_token_datatype(mapper_token_t *tok, char type)
+{
+    if (tok->datatype == type)
+        return;
+
+    if (tok->toktype == TOK_CONST) {
+        // constants can be cast immediately
+        if (tok->datatype == 'i') {
+            if (type == 'f') {
+                tok->f = (float)tok->i;
+                tok->datatype = 'f';
+            }
+            else if (type == 'd') {
+                tok->d = (double)tok->i;
+                tok->datatype = 'd';
+            }
+        }
+        else if (tok->datatype == 'f') {
+            if (type == 'd') {
+                tok->d = (double)tok->f;
+                tok->datatype = 'd';
+            }
         }
-        printf("%s ", state_name[stack[i].state]);
     }
-    printf("\n");
+    else if (tok->toktype == TOK_VAR) {
+        // we need to cast at runtime
+        if (tok->datatype == 'i' || type == 'd')
+            tok->casttype = type;
+    }
+    else {
+        if (tok->datatype == 'i' || type == 'd')
+            tok->datatype = type;
+    }
 }
-#endif
 
-static void collapse_expr_to_left(exprnode* plhs, exprnode rhs,
-                                  int constant_folding)
+static void lock_vector_lengths(mapper_token_t *stack, int top)
 {
-    // track whether any variable references
-    int refvar = 0;
-    int refrand = 0;
-    int is_float = 0;
-
-    // find trailing operator on right hand side
-    exprnode rhs_last = rhs;
-    if (rhs->tok.type == TOK_VAR)
-        refvar = 1;
-    else if (rhs->tok.type == TOK_FUNC && rhs->tok.func == FUNC_UNIFORM)
-        refrand = 1;
-    while (rhs_last->next) {
-        rhs_last = rhs_last->next;
-        if (rhs_last->tok.type == TOK_VAR)
-            refvar = 1;
-        else if (rhs_last->tok.type == TOK_FUNC && rhs_last->tok.func == FUNC_UNIFORM)
-            refrand = 1;
+    int i=top, arity=1;
+
+    while ((i >= 0) && arity--) {
+        stack[i].vector_length_locked = 1;
+        if (stack[i].toktype == TOK_OP)
+            arity += op_table[stack[i].op].arity;
+        else if (stack[i].toktype == TOK_FUNC)
+            arity += function_table[stack[i].func].arity;
+        else if (stack[i].toktype == TOK_VECTORIZE)
+            arity += stack[i].vector_index;
+        i--;
     }
+}
 
-    // find pointer to insertion place:
-    // - could be a function that needs args,
-    // - otherwise assume it's before the trailing operator
-    exprnode *plhs_last = plhs;
-    if ((*plhs_last)->tok.type == TOK_VAR)
-        refvar = 1;
-    else if ((*plhs_last)->tok.type == TOK_FUNC && (*plhs_last)->tok.func == FUNC_UNIFORM)
-        refrand = 1;
-    while ((*plhs_last)->next) {
-        if ((*plhs_last)->tok.type == TOK_VAR)
-            refvar = 1;
-        else if ((*plhs_last)->tok.type == TOK_FUNC && (*plhs_last)->tok.func == FUNC_UNIFORM)
-            refrand = 1;
-        plhs_last = &(*plhs_last)->next;
+static int check_types_and_lengths(mapper_token_t *stack, int top)
+{
+    // TODO: allow precomputation of const-only vectors
+    int i, arity, can_precompute = 1;
+    char type = stack[top].datatype;
+    int vector_length = stack[top].vector_length;
+
+    if (stack[top].toktype == TOK_OP)
+        arity = op_table[stack[top].op].arity;
+    else if (stack[top].toktype == TOK_FUNC) {
+        arity = function_table[stack[top].func].arity;
+        if (stack[top].func >= FUNC_UNIFORM)
+            can_precompute = 0;
     }
-
-    // insert float coercion if sides disagree on type
-    mapper_token_t coerce;
-    coerce.type = TOK_TOFLOAT;
-    is_float = (*plhs_last)->is_float || rhs_last->is_float;
-    if ((*plhs_last)->is_float && !rhs_last->is_float) {
-        rhs_last = rhs_last->next = exprnode_new(&coerce, 1);
-    } else if (!(*plhs_last)->is_float && rhs_last->is_float) {
-        exprnode e = exprnode_new(&coerce, 1);
-        e->next = (*plhs_last);
-        (*plhs_last) = e;
-        plhs_last = &e->next;
-        e->next->is_float = 1;
+    else if (stack[top].toktype == TOK_VFUNC) {
+        arity = vfunction_table[stack[top].func].arity;
     }
+    else if (stack[top].toktype == TOK_VECTORIZE) {
+        arity = stack[top].vector_index;
+        can_precompute = 0;
+    }
+    else
+        return top;
+
+    if (arity) {
+        // find operator or function inputs
+        i = top;
+        int skip = 0;
+        int depth = arity;
+        // last arg of op or func is at top-1
+        type = compare_token_datatype(stack[top-1], type);
+        if (stack[top-1].vector_length > vector_length)
+            vector_length = stack[top-1].vector_length;
+
+        /* Walk down stack distance of arity, checking datatypes
+         * and vector lengths. */
+        while (--i >= 0) {
+            if (stack[i].toktype == TOK_FUNC &&
+                function_table[stack[i].func].arity)
+                can_precompute = 0;
+            else if (stack[i].toktype != TOK_CONST)
+                can_precompute = 0;
+
+            if (skip == 0) {
+                type = compare_token_datatype(stack[i], type);
+                if (stack[i].toktype == TOK_VFUNC)
+                    stack[i].vector_length = vector_length;
+                else if (stack[i].vector_length > vector_length)
+                    vector_length = stack[i].vector_length;
+                depth--;
+                if (depth == 0)
+                    break;
+            }
+            else
+                skip--;
+            if (stack[i].toktype == TOK_OP)
+                skip += op_table[stack[i].op].arity;
+            else if (stack[i].toktype == TOK_FUNC)
+                skip += function_table[stack[i].func].arity;
+            else if (stack[i].toktype == TOK_VFUNC)
+                skip += vfunction_table[stack[i].func].arity;
+            else if (stack[i].toktype == TOK_VECTORIZE)
+                skip += stack[i].vector_index;
+        }
 
-    // insert the list before the trailing op of left hand side
-    rhs_last->next = (*plhs_last);
-    (*plhs_last) = rhs;
-
-    // if there were no variable references, then expression is
-    // constant, so evaluate it immediately
-    if (constant_folding && !refvar && !refrand) {
-        struct _mapper_expr e;
-        e.node = *plhs;
-        mapper_signal_history_t h;
-        mapper_signal_value_t v;
-        h.type = is_float ? 'f' : 'i';
-        h.value = &v;
-        h.position = -1;
-        h.length = 1;
-        h.size = 1;
-        mapper_expr_evaluate(&e, 0, &h);
-
-        exprnode_free((*plhs)->next);
-        (*plhs)->next = 0;
-        (*plhs)->is_float = is_float;
-
-        if (is_float) {
-            (*plhs)->tok.type = TOK_FLOAT;
-            (*plhs)->tok.f = v.f;
+        if (depth)
+            return -1;
+
+        /* walk down stack distance of arity again, promoting datatypes
+         * and vector lengths */
+        i = top;
+        if (stack[top].toktype == TOK_VECTORIZE) {
+            skip = stack[top].vector_index;
+            depth = 0;
+        }
+        else if (stack[top].toktype == TOK_VFUNC) {
+            skip = 1;
+            depth = 0;
         }
         else {
-            (*plhs)->tok.type = TOK_INT;
-            (*plhs)->tok.i = v.i32;
+            skip = 0;
+            depth = arity;
         }
+        while (--i >= 0) {
+            // we will promote types within range of compound arity
+            promote_token_datatype(&stack[i], type);
+
+            if (skip <= 0) {
+                // also check/promote vector length
+                if (!stack[i].vector_length_locked) {
+                    if (stack[i].toktype != TOK_VFUNC)
+                        stack[i].vector_length = vector_length;
+                }
+                else if (stack[i].vector_length != vector_length) {
+                    parse_error("Vector length mismatch (%d != %d).\n",
+                                stack[i].vector_length, vector_length);
+                    return -1;
+                }
+            }
+
+            if (stack[i].toktype == TOK_OP) {
+                if (skip > 0)
+                    skip += op_table[stack[i].op].arity;
+                else
+                    depth += op_table[stack[i].op].arity;
+            }
+            else if (stack[i].toktype == TOK_FUNC) {
+                if (skip > 0)
+                    skip += function_table[stack[i].func].arity;
+                else
+                    depth += function_table[stack[i].func].arity;
+            }
+            else if (stack[i].toktype == TOK_VFUNC)
+                skip = 2;
+            else if (stack[i].toktype == TOK_VECTORIZE)
+                skip = stack[i].vector_index+1;
+
+            if (skip > 0)
+                skip--;
+            else
+                depth--;
+            if (depth <= 0 && skip <= 0)
+                break;
+        }
+        stack[top].datatype = type;
+
+        if (!stack[top].vector_length_locked) {
+            if (stack[top].toktype != TOK_VFUNC)
+                stack[top].vector_length = vector_length;
+        }
+        else if (stack[top].vector_length != vector_length) {
+            parse_error("Vector length mismatch (%d != %d).\n",
+                        stack[i].vector_length, vector_length);
+            return -1;
+        }
+    }
+    else {
+        stack[top].datatype = 'f';
+    }
+
+    // if stack within bounds of arity was only constants, we're ok to compute
+    if (!can_precompute)
+        return top;
+
+    struct _mapper_expr e;
+    e.start = &stack[top-arity];
+    e.length = arity+1;
+    e.vector_size = vector_length;
+    mapper_signal_history_t h;
+    mapper_signal_value_t v;
+    h.type = stack[top].datatype;
+    h.value = &v;
+    h.position = -1;
+    h.length = 1;
+    h.size = 1;
+    if (!mapper_expr_evaluate(&e, 0, &h))
+        return top;
+
+    switch (stack[top].datatype) {
+        case 'f':
+            stack[top-arity].f = v.f;
+            break;
+        case 'd':
+            stack[top-arity].d = v.d;
+            break;
+        case 'i':
+            stack[top-arity].i = v.i32;
+            break;
+        default:
+            return 0;
+            break;
     }
+    stack[top-arity].toktype = TOK_CONST;
+    return top-arity;
 }
 
 /* Macros to help express stack operations in parser. */
-#define PUSHSTATE(x) { top++; stack[top].state = x; stack[top].type = ST_STATE; }
-#define PUSHEXPR(x, f) { top++; stack[top].node = exprnode_new(&x, f); stack[top].type = ST_NODE; }
-#define POP() (top--)
-#define TOPSTATE_IS(x) (stack[top].type == ST_STATE && stack[top].state == x)
-#define APPEND_OP(x)                                                    \
-    if (stack[top].type == ST_NODE) {                                   \
-        exprnode e = stack[top].node;                                   \
-        while (e->next) e = e->next;                                    \
-        e->next = exprnode_new(&tok, 0);                                \
-        e->next->is_float = e->is_float;                                \
-    }
-#define SUCCESS(x) { result = x; goto done; }
-#define FAIL(msg) { error_message = msg; result = 0; goto done; }
+#define FAIL(msg) { parse_error("%s\n", msg); return 0; }
+#define PUSH_TO_OUTPUT(x)                                           \
+{                                                                   \
+    if (++outstack_index >= STACK_SIZE)                             \
+        {FAIL("Stack size exceeded.");}                             \
+    memcpy(outstack + outstack_index, &x, sizeof(mapper_token_t));  \
+}
+#define PUSH_TO_OPERATOR(x)                                         \
+{                                                                   \
+    if (++opstack_index >= STACK_SIZE)                              \
+        {FAIL("Stack size exceeded.");}                             \
+    memcpy(opstack + opstack_index, &x, sizeof(mapper_token_t));    \
+}
+#define POP_OPERATOR() ( opstack_index-- )
+#define POP_OPERATOR_TO_OUTPUT()                                    \
+{                                                                   \
+    if (opstack[opstack_index].toktype == TOK_QUESTION) {           \
+        opstack[opstack_index].toktype = TOK_OP;                    \
+    }                                                               \
+    PUSH_TO_OUTPUT(opstack[opstack_index]);                         \
+    outstack_index = check_types_and_lengths(outstack,              \
+                                             outstack_index);       \
+    if (outstack_index < 0)                                         \
+         {FAIL("Malformed expression.");}                           \
+    POP_OPERATOR();                                                 \
+}
+#define GET_NEXT_TOKEN(x)                                           \
+{                                                                   \
+    lex_index = expr_lex(str, lex_index, &x);                       \
+    if (!lex_index)                                                 \
+        {FAIL("Error in lexer.");}                                  \
+}
 
-/*! Create a new expression by parsing the given string. */
+/*! Use Dijkstra's shunting-yard algorithm to parse expression into RPN stack. */
 mapper_expr mapper_expr_new_from_string(const char *str,
-                                        int input_is_float,
-                                        int output_is_float,
-                                        int vector_size,
+                                        char input_type,
+                                        char output_type,
+                                        int input_vector_size,
+                                        int output_vector_size,
                                         int *input_history_size,
                                         int *output_history_size)
 {
-    const char *s = str;
     if (!str) return 0;
-    stack_obj_t stack[STACK_SIZE];
-    int top = -1;
-    exprnode result = 0;
-    const char *error_message = 0;
-
+    if (input_type != 'i' && input_type != 'f' && input_type != 'd') return 0;
+    if (output_type != 'i' && output_type != 'f' && output_type != 'd') return 0;
+
+    mapper_token_t outstack[STACK_SIZE];
+    mapper_token_t opstack[STACK_SIZE];
+    int lex_index = 0, outstack_index = -1, opstack_index = -1;
+    int oldest_input = 0, oldest_output = 0, max_vector = 1;
+
+    int vectorizing = 0;
+    int variable = 0;
+    int allow_toktype = 0xFFFF;
+    int constant_output = 1;
     mapper_token_t tok;
-    int i, next_token = 1;
-
-    int var_allowed = 1;
-    int oldest_input = 0, oldest_output = 0;
-
-    PUSHSTATE(EXPR);
-    PUSHSTATE(YEQUAL_EQ);
-    PUSHSTATE(YEQUAL_Y);
-
-    while (top >= 0) {
-        if (next_token && expr_lex(&s, &tok))
-            {FAIL("Error in lexical analysis.");}
-        next_token = 0;
-
-        if (stack[top].type == ST_NODE) {
-            if (top==0)
-                SUCCESS(stack[top].node);
-            if (stack[top-1].type == ST_STATE) {
-                if (top >= 2 && stack[top-2].type == ST_NODE) {
-                    if (stack[top-1].type == ST_STATE
-                        && (stack[top-1].state == EXPR_RIGHT
-                            || stack[top-1].state == TERM_RIGHT
-                            || stack[top-1].state == CLOSE_PAREN))
-                    {
-                        collapse_expr_to_left(&stack[top-2].node,
-                                              stack[top].node, 1);
-                        POP();
-                    }
-                    else if (stack[top-1].type == ST_STATE
-                             && stack[top-1].state == CLOSE_HISTINDEX)
-                    {
-                        die_unless(stack[top-2].node->tok.type == TOK_VAR,
-                                   "expected VAR two-down on the stack.\n");
-                        die_unless(!stack[top].node->next && (stack[top].node->tok.type == TOK_INT
-                                                              || stack[top].node->tok.type == TOK_FLOAT),
-                                   "expected lonely INT or FLOAT expression on the stack.\n");
-                        if (stack[top].node->tok.type == TOK_FLOAT)
-                            stack[top-2].node->history_index = (int)stack[top].node->tok.f;
-                        else
-                            stack[top-2].node->history_index = stack[top].node->tok.i;
-
-                        /* Track the oldest history reference in order
-                         * to know how much buffer needs to be
-                         * allocated for this expression. */
-                        if (stack[top-2].node->tok.var == 'x'
-                            && oldest_input > stack[top-2].node->history_index) {
-                            oldest_input = stack[top-2].node->history_index;
-                        }
-                        else if (stack[top-2].node->tok.var == 'y'
-                                 && oldest_output > stack[top-2].node->history_index) {
-                            oldest_output = stack[top-2].node->history_index;
-                        }
 
-                        exprnode_free(stack[top].node);
-                        POP();
-                    }
-                    else if (stack[top-1].type == ST_STATE
-                             && stack[top-1].state == CLOSE_VECTINDEX)
-                    {
-                        die_unless(stack[top-2].node->tok.type == TOK_VAR,
-                                   "expected VAR two-down on the stack.\n");
-                        die_unless(!stack[top].node->next && (stack[top].node->tok.type == TOK_INT
-                                                              || stack[top].node->tok.type == TOK_FLOAT),
-                                   "expected lonely INT or FLOAT expression on the stack.\n");
-                        if (stack[top].node->tok.type == TOK_FLOAT)
-                            stack[top-2].node->vector_index = (int)stack[top].node->tok.f;
-                        else
-                            stack[top-2].node->vector_index = stack[top].node->tok.i;
-                        if (stack[top-2].node->vector_index > 0)
-                            {FAIL("Vector indexing not yet implemented.");}
-                        if (stack[top-2].node->vector_index < 0
-                            || stack[top-2].node->vector_index >= vector_size)
-                            {FAIL("Vector index outside input size.");}
-
-                        exprnode_free(stack[top].node);
-                        POP();
+    // all expressions must start with "y=" (ignoring spaces)
+    if (str[lex_index++] != 'y') return 0;
+    while (str[lex_index] == ' ') lex_index++;
+    if (str[lex_index++] != '=') return 0;
+
+    while (str[lex_index]) {
+        GET_NEXT_TOKEN(tok);
+        if (variable && tok.toktype != TOK_OPEN_SQUARE
+            && tok.toktype != TOK_OPEN_CURLY)
+            variable = 0;
+        if (!(tok.toktype & allow_toktype))
+            {FAIL("Illegal token sequence.");}
+        switch (tok.toktype) {
+            case TOK_CONST:
+                // push to output stack
+                PUSH_TO_OUTPUT(tok);
+                allow_toktype = TOK_OP | TOK_CLOSE_PAREN | TOK_CLOSE_SQUARE |
+                                TOK_COMMA | TOK_QUESTION | TOK_COLON;
+                break;
+            case TOK_VAR:
+                // set datatype
+                tok.datatype = tok.var < VAR_Y ? input_type : output_type;
+                if (tok.var == VAR_X)
+                    constant_output = 0;
+                tok.history_index = 0;
+                tok.vector_index = 0;
+                tok.vector_length = tok.var < VAR_Y ? input_vector_size : output_vector_size;
+                tok.vector_length_locked = 1;
+                PUSH_TO_OUTPUT(tok);
+                // variables can have vector and history indices
+                variable = TOK_OPEN_SQUARE | TOK_OPEN_CURLY;
+                allow_toktype = TOK_OP | TOK_CLOSE_PAREN | TOK_CLOSE_SQUARE |
+                                TOK_COMMA | TOK_QUESTION | TOK_COLON | variable;
+                break;
+            case TOK_FUNC:
+                if (function_table[tok.func].func_int32)
+                    tok.datatype = 'i';
+                else
+                    tok.datatype = 'f';
+                PUSH_TO_OPERATOR(tok);
+                if (!function_table[tok.func].arity) {
+                    POP_OPERATOR_TO_OUTPUT();
+                }
+                if (function_table[tok.func].arity)
+                    allow_toktype = TOK_OPEN_PAREN;
+                else
+                    allow_toktype = TOK_OP | TOK_CLOSE_PAREN | TOK_CLOSE_SQUARE |
+                                    TOK_COMMA | TOK_QUESTION | TOK_COLON;
+                if (tok.func >= FUNC_UNIFORM)
+                    constant_output = 0;
+                break;
+            case TOK_VFUNC:
+                if (vfunction_table[tok.func].func_int32)
+                    tok.datatype = 'i';
+                else
+                    tok.datatype = 'f';
+                PUSH_TO_OPERATOR(tok);
+                allow_toktype = TOK_OPEN_PAREN;
+                break;
+            case TOK_OPEN_PAREN:
+                PUSH_TO_OPERATOR(tok);
+                allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC |
+                                TOK_NEGATE | TOK_OPEN_PAREN | TOK_OPEN_SQUARE;
+                break;
+            case TOK_CLOSE_PAREN:
+                // pop from operator stack to output until left parenthesis found
+                while (opstack_index >= 0 && opstack[opstack_index].toktype != TOK_OPEN_PAREN) {
+                    POP_OPERATOR_TO_OUTPUT();
+                }
+                if (opstack_index < 0)
+                    {FAIL("Unmatched parentheses or misplaced comma.");}
+                // remove left parenthesis from operator stack
+                if (tok.toktype == TOK_CLOSE_PAREN) {
+                    POP_OPERATOR();
+                    if (opstack[opstack_index].toktype == TOK_FUNC ||
+                        opstack[opstack_index].toktype == TOK_VFUNC) {
+                        // if stack[top] is tok_func or tok_vfunc, pop to output
+                        POP_OPERATOR_TO_OUTPUT();
                     }
                 }
-                else {
-                    // swap the expression down the stack
-                    stack_obj_t tmp = stack[top-1];
-                    stack[top-1] = stack[top];
-                    stack[top] = tmp;
+                allow_toktype = TOK_OP | TOK_QUESTION | TOK_COLON | TOK_COMMA |
+                                TOK_CLOSE_PAREN | TOK_CLOSE_SQUARE;
+                break;
+            case TOK_COMMA:
+                // pop from operator stack to output until left parenthesis or TOK_VECTORIZE found
+                while (opstack_index >= 0
+                       && opstack[opstack_index].toktype != TOK_OPEN_PAREN
+                       && opstack[opstack_index].toktype != TOK_VECTORIZE) {
+                    POP_OPERATOR_TO_OUTPUT();
                 }
-            }
-
-#if TRACING
-            printstack(&stack[0], top);
-#endif
-            continue;
-        }
-
-        switch (stack[top].state) {
-        case YEQUAL_Y:
-            if (tok.type == TOK_VAR && tok.var == 'y')
-                POP();
-            else
-                {FAIL("Error in y= prefix.");}
-            next_token = 1;
-            break;
-        case YEQUAL_EQ:
-            if (tok.type == TOK_OP && tok.op == '=') {
-                POP();
-            } else {
-                {FAIL("Error in y= prefix.");}
-            }
-            next_token = 1;
-            break;
-        case EXPR:
-            POP();
-            PUSHSTATE(EXPR_RIGHT);
-            PUSHSTATE(TERM);
-            break;
-        case EXPR_RIGHT:
-            if (tok.type == TOK_OP) {
-                POP();
-                if (tok.op == '+' || tok.op == '-') {
-                    APPEND_OP(tok);
-                    PUSHSTATE(EXPR);
-                    next_token = 1;
+                if (opstack_index < 0)
+                    {FAIL("Unmatched parentheses, brackets or misplaced comma.");}
+                if (opstack[opstack_index].toktype == TOK_VECTORIZE) {
+                    opstack[opstack_index].vector_index++;
+                    opstack[opstack_index].vector_length +=
+                        outstack[outstack_index].vector_length;
+                    lock_vector_lengths(outstack, outstack_index);
                 }
-            }
-            else POP();
-            break;
-        case TERM:
-            POP();
-            PUSHSTATE(TERM_RIGHT);
-            PUSHSTATE(VALUE);
-            break;
-        case TERM_RIGHT:
-            if (tok.type == TOK_OP) {
-                POP();
-                if (tok.op == '*' || tok.op == '/' || tok.op == '%') {
-                    APPEND_OP(tok);
-                    PUSHSTATE(TERM);
-                    next_token = 1;
+                allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC |
+                                TOK_NEGATE | TOK_OPEN_PAREN | TOK_OPEN_SQUARE;
+                break;
+            case TOK_COLON:
+                // pop from operator stack to output until conditional found
+                while (opstack_index >= 0 &&
+                       (opstack[opstack_index].toktype != TOK_OP ||
+                        opstack[opstack_index].op != OP_CONDITIONAL_IF_THEN)) {
+                    POP_OPERATOR_TO_OUTPUT();
                 }
-            }
-            else POP();
-            break;
-        case VALUE:
-            if (tok.type == TOK_INT) {
-                POP();
-                PUSHEXPR(tok, 0);
-                next_token = 1;
-            } else if (tok.type == TOK_FLOAT) {
-                POP();
-                PUSHEXPR(tok, 1);
-                next_token = 1;
-            } else if (tok.type == TOK_VAR) {
-                if (var_allowed) {
-                    POP();
-                    PUSHEXPR(tok, input_is_float);
-                    PUSHSTATE(VAR_RIGHT);
-                    next_token = 1;
+                if (opstack_index < 0)
+                    {FAIL("Unmatched colon.");}
+                opstack[opstack_index].op = OP_CONDITIONAL_IF_THEN_ELSE;
+                allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC |
+                                TOK_NEGATE | TOK_OPEN_PAREN | TOK_OPEN_SQUARE;
+                break;
+            case TOK_QUESTION:
+                tok.toktype = TOK_OP;
+                // lexer has already set op for either '?' or "?:"
+            case TOK_OP:
+                // check precedence of operators on stack
+                while (opstack_index >= 0 && opstack[opstack_index].toktype == TOK_OP
+                       && op_table[opstack[opstack_index].op].precedence >=
+                       op_table[tok.op].precedence) {
+                    POP_OPERATOR_TO_OUTPUT();
                 }
-                else
-                    {FAIL("Unexpected variable reference.");}
-            } else if (tok.type == TOK_OPEN_PAREN) {
-                POP();
-                PUSHSTATE(CLOSE_PAREN);
-                PUSHSTATE(EXPR);
-                next_token = 1;
-            } else if (tok.type == TOK_FUNC) {
-                POP();
-                if (tok.func == FUNC_UNKNOWN)
-                    {FAIL("Unknown function.");}
-                else {
-                    PUSHEXPR(tok, 1);
-                    int arity = function_table[tok.func].arity;
-                    if (arity > 0) {
-                        PUSHSTATE(CLOSE_PAREN);
-                        PUSHSTATE(EXPR);
-                        for (i=1; i < arity; i++) {
-                            PUSHSTATE(COMMA);
-                            PUSHSTATE(EXPR);
+                PUSH_TO_OPERATOR(tok);
+                allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC |
+                                TOK_NEGATE | TOK_OPEN_PAREN | TOK_OPEN_SQUARE;
+                break;
+            case TOK_OPEN_SQUARE:
+                if (variable & TOK_OPEN_SQUARE) {
+                    GET_NEXT_TOKEN(tok);
+                    if (tok.toktype != TOK_CONST || tok.datatype != 'i')
+                        {FAIL("Non-integer vector index.");}
+                    if (outstack[outstack_index].var < VAR_Y) {
+                        if (tok.i >= input_vector_size)
+                            {FAIL("Index exceeds input vector length.");}
+                    }
+                    else if (tok.i >= output_vector_size)
+                        {FAIL("Index exceeds output vector length.");}
+                    outstack[outstack_index].vector_index = tok.i;
+                    outstack[outstack_index].vector_length = 1;
+                    outstack[outstack_index].vector_length_locked = 1;
+                    GET_NEXT_TOKEN(tok);
+                    if (tok.toktype == TOK_COLON) {
+                        // index is range A:B
+                        GET_NEXT_TOKEN(tok);
+                        if (tok.toktype != TOK_CONST || tok.datatype != 'i')
+                            {FAIL("Malformed vector index.");}
+                        if (outstack[outstack_index].var < VAR_Y) {
+                            if (tok.i >= input_vector_size)
+                                {FAIL("Index exceeds vector length.");}
                         }
-                        PUSHSTATE(OPEN_PAREN);
+                        else if (tok.i >= output_vector_size)
+                            {FAIL("Index exceeds vector length.");}
+                        if (tok.i <= outstack[outstack_index].vector_index)
+                            {FAIL("Malformed vector index.");}
+                        outstack[outstack_index].vector_length =
+                            tok.i - outstack[outstack_index].vector_index + 1;
+                        GET_NEXT_TOKEN(tok);
                     }
-                    next_token = 1;
+                    if (tok.toktype != TOK_CLOSE_SQUARE)
+                        {FAIL("Unmatched bracket.");}
+                    // vector index set
+                    variable &= ~TOK_OPEN_SQUARE;
+                    allow_toktype = TOK_OP | TOK_COMMA | TOK_CLOSE_PAREN |
+                                    TOK_CLOSE_SQUARE | TOK_QUESTION |
+                                    TOK_COLON | variable;
+                }
+                else {
+                    if (vectorizing)
+                        {FAIL("Nested (multidimensional) vectors not allowed.");}
+                    tok.toktype = TOK_VECTORIZE;
+                    tok.vector_length = 0;
+                    // use vector index for tracking arity of tok
+                    tok.vector_index = 0;
+                    PUSH_TO_OPERATOR(tok);
+                    vectorizing = 1;
+                    allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC |
+                                    TOK_OPEN_PAREN | TOK_NEGATE;
                 }
-            } else if (tok.type == TOK_OP && tok.op == '-') {
-                POP();
-                PUSHSTATE(NEGATE);
-                PUSHSTATE(VALUE);
-                next_token = 1;
-            } else
-                {FAIL("Expected value.");}
-            break;
-        case NEGATE:
-            POP();
-            // insert '0' before, and '-' after the expression.
-            // set is_float according to trailing operator.
-            if (stack[top].type == ST_NODE) {
-                mapper_token_t t;
-                t.type = TOK_INT;
-                t.i = 0;
-                exprnode e = exprnode_new(&t, 0);
-                t.type = TOK_OP;
-                t.op = '-';
-                e->next = exprnode_new(&t, 0);
-                collapse_expr_to_left(&e, stack[top].node, 1);
-                stack[top].node = e;
-            }
-            else
-                {FAIL("Expected to negate an expression.");}
-            break;
-        case VAR_RIGHT:
-            if (tok.type == TOK_OPEN_SQUARE) {
-                POP();
-                PUSHSTATE(VAR_VECTINDEX);
-            }
-            else if (tok.type == TOK_OPEN_CURLY) {
-                POP();
-                PUSHSTATE(VAR_HISTINDEX);
-            }
-            else
-                POP();
-            break;
-        case VAR_VECTINDEX:
-            POP();
-            if (tok.type == TOK_OPEN_SQUARE) {
-                var_allowed = 0;
-                PUSHSTATE(CLOSE_VECTINDEX);
-                PUSHSTATE(EXPR);
-                next_token = 1;
-            }
-            break;
-        case VAR_HISTINDEX:
-            POP();
-            if (tok.type == TOK_OPEN_CURLY) {
-                var_allowed = 0;
-                PUSHSTATE(CLOSE_HISTINDEX);
-                PUSHSTATE(EXPR);
-                next_token = 1;
-            }
-            break;
-        case CLOSE_VECTINDEX:
-            if (tok.type == TOK_CLOSE_SQUARE) {
-                var_allowed = 1;
-                POP();
-                PUSHSTATE(VAR_HISTINDEX);
-                next_token = 1;
-            }
-            else
-                {FAIL("Expected ']'.");}
-            break;
-        case CLOSE_HISTINDEX:
-            if (tok.type == TOK_CLOSE_CURLY) {
-                var_allowed = 1;
-                POP();
-                PUSHSTATE(VAR_VECTINDEX);
-                next_token = 1;
-            }
-            else
-                {FAIL("Expected '}'.");}
-            break;
-        case CLOSE_PAREN:
-            if (tok.type == TOK_CLOSE_PAREN) {
-                POP();
-                next_token = 1;
                 break;
-            } else
-                {FAIL("Expected ')'.");}
-            break;
-        case COMMA:
-            if (tok.type == TOK_COMMA) {
-                POP();
-                // find previous expression on the stack
-                for (i=top-1; i>=0 && stack[i].type!=ST_NODE; --i) {};
-                if (i>=0) {
-                    collapse_expr_to_left(&stack[i].node,
-                                          stack[top].node, 0);
-                    POP();
+            case TOK_CLOSE_SQUARE:
+                // pop from operator stack to output until TOK_VECTORIZE found
+                while (opstack_index >= 0 &&
+                       opstack[opstack_index].toktype != TOK_VECTORIZE) {
+                    POP_OPERATOR_TO_OUTPUT();
                 }
-                next_token = 1;
-            } else
-                {FAIL("Expected ','.");}
-            break;
-        case OPEN_PAREN:
-            if (tok.type == TOK_OPEN_PAREN) {
-                POP();
-                next_token = 1;
-            } else
-                {FAIL("Expected '('.");}
-            break;
-        case END:
-            if (tok.type == TOK_END) {
-                POP();
+                if (opstack_index < 0)
+                    {FAIL("Unmatched brackets or misplaced comma.");}
+                if (opstack[opstack_index].vector_length) {
+                    opstack[opstack_index].vector_length_locked = 1;
+                    opstack[opstack_index].vector_index++;
+                    opstack[opstack_index].vector_length +=
+                        outstack[outstack_index].vector_length;
+                    lock_vector_lengths(outstack, outstack_index);
+                    POP_OPERATOR_TO_OUTPUT();
+                }
+                else {
+                    // we do not need vectorizer token if vector length == 1
+                    POP_OPERATOR();
+                }
+                vectorizing = 0;
+                allow_toktype = TOK_OP | TOK_CLOSE_PAREN | TOK_COMMA |
+                                TOK_QUESTION | TOK_COLON;
                 break;
-            } else
-                {FAIL("Expected END.");}
-        default:
-            FAIL("Unexpected parser state.");
-            break;
-        }
+            case TOK_OPEN_CURLY:
+                if (!(variable & TOK_OPEN_CURLY))
+                    {FAIL("Misplaced brace.");}
+                GET_NEXT_TOKEN(tok);
+                if (tok.toktype == TOK_NEGATE) {
+                    // if negative sign found, get next token
+                    outstack[outstack_index].history_index = -1;
+                    GET_NEXT_TOKEN(tok);
+                }
+                if (tok.toktype != TOK_CONST || tok.datatype != 'i')
+                    {FAIL("Non-integer history index.");}
+                outstack[outstack_index].history_index *= tok.i;
+                if (outstack[outstack_index].var == VAR_X) {
+                    if (outstack[outstack_index].history_index > 0)
+                        {FAIL("Input history index cannot be > 0.");}
+                    else if (outstack[outstack_index].history_index < MAX_HISTORY)
+                        {FAIL("Input history index cannot be < -100.");}
+                }
+                else if (outstack[outstack_index].var == VAR_Y) {
+                    if (outstack[outstack_index].history_index > -1)
+                        {FAIL("Output history index cannot be > -1.");}
+                    else if (outstack[outstack_index].history_index < MAX_HISTORY)
+                        {FAIL("Output history index cannot be < -100.");}
+                }
 
+                if (outstack[outstack_index].var == VAR_X
+                    && outstack[outstack_index].history_index < oldest_input)
+                    oldest_input = outstack[outstack_index].history_index;
+                else if (outstack[outstack_index].var == VAR_Y
+                         && outstack[outstack_index].history_index < oldest_output)
+                    oldest_output = outstack[outstack_index].history_index;
+                GET_NEXT_TOKEN(tok);
+                if (tok.toktype != TOK_CLOSE_CURLY)
+                    {FAIL("Unmatched brace.");}
+                variable &= ~TOK_OPEN_CURLY;
+                allow_toktype = TOK_OP | TOK_COMMA | TOK_CLOSE_PAREN |
+                                TOK_CLOSE_SQUARE | TOK_QUESTION |
+                                TOK_COLON | variable;
+                break;
+            case TOK_NEGATE:
+                // push '0' to output stack, and '-' to operator stack
+                tok.toktype = TOK_CONST;
+                tok.datatype = 'i';
+                tok.i = 0;
+                PUSH_TO_OUTPUT(tok);
+                tok.toktype = TOK_OP;
+                tok.op = OP_SUBTRACT;
+                PUSH_TO_OPERATOR(tok);
+                allow_toktype = TOK_CONST | TOK_VAR | TOK_FUNC | TOK_VFUNC;
+                break;
+            default:
+                {FAIL("Unknown token type.");}
+                break;
+        }
 #if TRACING
-        printstack(&stack[0], top);
+        printstack("OUTPUT STACK:", outstack, outstack_index);
+        printstack("OPERATOR STACK:", opstack, opstack_index);
 #endif
     }
 
-  done:
-    if (!result) {
-        if (error_message)
-            printf("%s\n", error_message);
-        goto cleanup;
+    // finish popping operators to output, check for unbalanced parentheses
+    while (opstack_index >= 0) {
+        if (opstack[opstack_index].toktype == TOK_OPEN_PAREN)
+            {FAIL("Unmatched parentheses or misplaced comma.");}
+        POP_OPERATOR_TO_OUTPUT();
     }
 
-    // We need a limit, but this is a bit arbitrary.
-    if (oldest_input < -100) {
-        trace("Expression contains history references of %i\n", oldest_input);
-        goto cleanup;
-    }
-    if (oldest_output < -100) {
-        trace("Expression contains history references of %i\n", oldest_output);
-        goto cleanup;
-    }
+    // Fail if top vector length doesn't match output vector length
+    if (outstack[outstack_index].vector_length != output_vector_size)
+        {FAIL("Expression vector length does not match destination.");}
 
-    // Coerce the final output if necessary
-    exprnode e = result;
-    while (e->next) e = e->next;
-    if (e->is_float && !output_is_float) {
-        mapper_token_t coerce;
-        coerce.type = TOK_TOINT32;
-        e->next = exprnode_new(&coerce, 0);
-        e->next->is_float = 0;
-    }
-    else if (!e->is_float && output_is_float) {
-        mapper_token_t coerce;
-        coerce.type = TOK_TOFLOAT;
-        e->next = exprnode_new(&coerce, 0);
-        e->next->is_float = 1;
+    // Check for maximum vector length used in stack
+    int i;
+    for (i = 0; i < outstack_index; i++) {
+        if (outstack[i].vector_length > max_vector)
+            max_vector = outstack[i].vector_length;
     }
 
-    /* Special case: if this is a vector expression, we currently do
-     * not completely support it.  However, we can "fake" vector
-     * operations by performing the entire expression element-wise.
-     * In this case, we have to disallow any vector indexing, so here
-     * we scan the compiled expression and check for it.  This will be
-     * removed in a future version. */
-    if (vector_size > 1) {
-        e = result;
-        while (e) {
-            if (e->tok.type == TOK_VAR && e->vector_index > 0) {
-                trace("vector indexing not yet implemented\n");
-                goto cleanup;
-            }
-            e = e->next;
-        }
+    // If stack top type doesn't match output type, add cast
+    if (outstack[outstack_index].datatype != output_type) {
+        promote_token_datatype(&outstack[outstack_index], output_type);
+        outstack_index = check_types_and_lengths(outstack, outstack_index);
+        if (outstack[outstack_index].datatype != output_type)
+            outstack[outstack_index].casttype = output_type;
     }
 
     mapper_expr expr = malloc(sizeof(struct _mapper_expr));
-    expr->node = result;
-    expr->vector_size = vector_size;
-    *input_history_size = (int)ceilf(-oldest_input)+1;
-    *output_history_size = (int)ceilf(-oldest_output)+1;
-    return expr;
+    expr->length = outstack_index + 1;
+    expr->start = malloc(sizeof(struct _token)*expr->length);
+    memcpy(expr->start, &outstack, sizeof(struct _token)*expr->length);
+    expr->vector_size = max_vector;
+    expr->input_history_size = *input_history_size = -oldest_input+1;
+    expr->output_history_size = *output_history_size = -oldest_output+1;
+    expr->constant_output = constant_output;
 
-  cleanup:
-    for (i=0; i<top; i++) {
-        if (stack[i].type == ST_NODE)
-            exprnode_free(stack[i].node);
-    }
-    return 0;
+    return expr;
 }
 
 int mapper_expr_input_history_size(mapper_expr expr)
@@ -946,151 +1484,642 @@ int mapper_expr_output_history_size(mapper_expr expr)
     return expr->output_history_size;
 }
 
+int mapper_expr_constant_output(mapper_expr expr)
+{
+    if (expr->constant_output)
+        return 1;
+    return 0;
+}
+
 #if TRACING
-#define trace_eval printf
-#else
-static void trace_eval(const char *s,...) {}
+static void print_stack_vector(mapper_signal_value_t *stack, char type,
+                               int vector_length)
+{
+    int i;
+    if (vector_length > 1)
+        printf("[");
+    switch (type) {
+        case 'i':
+            for (i = 0; i < vector_length; i++)
+                printf("%d, ", stack[i].i32);
+            break;
+        case 'f':
+            for (i = 0; i < vector_length; i++)
+                printf("%f, ", stack[i].f);
+            break;
+        case 'd':
+            for (i = 0; i < vector_length; i++)
+                printf("%f, ", stack[i].d);
+            break;
+        default:
+            break;
+    }
+    if (vector_length > 1)
+        printf("\b\b]");
+    else
+        printf("\b\b");
+}
 #endif
 
 int mapper_expr_evaluate(mapper_expr expr,
                          mapper_signal_history_t *from,
                          mapper_signal_history_t *to)
 {
-    mapper_signal_value_t stack[to->length][STACK_SIZE];
+    mapper_signal_value_t stack[expr->length][expr->vector_size];
+    int dims[expr->length];
 
-    int i = 0, top = -1;
-    exprnode node = expr->node;
-    /* Increment index position of output data structure. */
-    to->position = (to->position + 1) % to->size;
-    while (node) {
-            switch (node->tok.type) {
-        case TOK_INT:
-            ++top;
-            for (i = 0; i < to->length; i++)
-                stack[i][top].i32 = node->tok.i;
-            break;
-        case TOK_FLOAT:
+    int i, j, k, top = -1, count = 0;
+    mapper_token_t *tok = expr->start;
+
+    while (count < expr->length && tok->toktype != TOK_END) {
+        switch (tok->toktype) {
+        case TOK_CONST:
             ++top;
-            for (i = 0; i < to->length; i++)
-                stack[i][top].f = node->tok.f;
+            dims[top] = tok->vector_length;
+            if (tok->datatype == 'f') {
+                for (i = 0; i < tok->vector_length; i++)
+                    stack[top][i].f = tok->f;
+            }
+            else if (tok->datatype == 'd') {
+                for (i = 0; i < tok->vector_length; i++)
+                    stack[top][i].d = tok->d;
+            }
+            else if (tok->datatype == 'i') {
+                for (i = 0; i < tok->vector_length; i++)
+                    stack[top][i].i32 = tok->i;
+            }
             break;
         case TOK_VAR:
             {
                 int idx;
-                switch (node->tok.var) {
-                case 'x':
+                switch (tok->var) {
+                case VAR_X:
                     ++top;
-                    idx = ((node->history_index + from->position
+                    dims[top] = tok->vector_length;
+                    idx = ((tok->history_index + from->position
                             + from->size) % from->size);
-                    if (from->type == 'f') {
+                    if (from->type == 'd') {
+                        double *v = from->value + idx * from->length * mapper_type_size(from->type);
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = v[i+tok->vector_index];
+                    }
+                    else if (from->type == 'f') {
                         float *v = from->value + idx * from->length * mapper_type_size(from->type);
-                        for (i = 0; i < from->length; i++)
-                            stack[i][top].f = v[i];
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = v[i+tok->vector_index];
                     }
                     else if (from->type == 'i') {
                         int *v = from->value + idx * from->length * mapper_type_size(from->type);
-                        for (i = 0; i < from->length; i++)
-                            stack[i][top].i32 = v[i];
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = v[i+tok->vector_index];
                     }
                     break;
-                case 'y':
+                case VAR_Y:
                     ++top;
-                    idx = ((node->history_index + to->position
+                    dims[top] = tok->vector_length;
+                    idx = ((tok->history_index + to->position + 1
                             + to->size) % to->size);
-                    if (to->type == 'f') {
+                    if (to->type == 'd') {
+                        double *v = to->value + idx * to->length * mapper_type_size(to->type);
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = v[i+tok->vector_index];
+                    }
+                    else if (to->type == 'f') {
                         float *v = to->value + idx * to->length * mapper_type_size(to->type);
-                        for (i = 0; i < to->length; i++)
-                            stack[i][top].f = v[i];
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = v[i+tok->vector_index];
                     }
                     else if (to->type == 'i') {
                         int *v = to->value + idx * to->length * mapper_type_size(to->type);
-                        for (i = 0; i < to->length; i++)
-                            stack[i][top].i32 = v[i];
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = v[i+tok->vector_index];
                     }
                     break;
                 default: goto error;
                 }
             }
             break;
-        case TOK_TOFLOAT:
-            for (i = 0; i < to->length; i++)
-                stack[i][top].f = (float)stack[i][top].i32;
-            break;
-        case TOK_TOINT32:
-            for (i = 0; i < to->length; i++)
-                stack[i][top].i32 = (int)stack[i][top].f;
-            break;
         case TOK_OP:
-            --top;
-            for (i = 0; i < to->length; i++) {
-                if (node->is_float) {
-                    trace_eval("%f %c %f = ", stack[i][top].f, node->tok.op, stack[i][top + 1].f);
-                    switch (node->tok.op) {
-                    case '+': stack[i][top].f = stack[i][top].f + stack[i][top + 1].f; break;
-                    case '-': stack[i][top].f = stack[i][top].f - stack[i][top + 1].f; break;
-                    case '*': stack[i][top].f = stack[i][top].f * stack[i][top + 1].f; break;
-                    case '/': stack[i][top].f = stack[i][top].f / stack[i][top + 1].f; break;
-                    case '%': stack[i][top].f = fmod(stack[i][top].f, stack[i][top + 1].f); break;
-                    default: goto error;
+            top -= op_table[tok->op].arity-1;
+            dims[top] = tok->vector_length;
+#if TRACING
+            if (tok->op == OP_CONDITIONAL_IF_THEN || tok->op == OP_CONDITIONAL_IF_ELSE ||
+                tok->op == OP_CONDITIONAL_IF_THEN_ELSE) {
+                printf("IF ");
+                print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+                printf(" THEN ");
+                if (tok->op == OP_CONDITIONAL_IF_ELSE) {
+                    print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+                    printf(" ELSE ");
+                    print_stack_vector(stack[top+1], tok->datatype, tok->vector_length);
+                }
+                else {
+                    print_stack_vector(stack[top+1], tok->datatype, tok->vector_length);
+                    if (tok->op == OP_CONDITIONAL_IF_THEN_ELSE) {
+                        printf(" ELSE ");
+                        print_stack_vector(stack[top+2], tok->datatype, tok->vector_length);
                     }
-                    trace_eval("%f\n", stack[i][top].f);
-                } else {
-                    trace_eval("%d %c %d = ", stack[i][top].i32, node->tok.op, stack[i][top + 1].i32);
-                    switch (node->tok.op) {
-                    case '+': stack[i][top].i32 = stack[i][top].i32 + stack[i][top + 1].i32; break;
-                    case '-': stack[i][top].i32 = stack[i][top].i32 - stack[i][top + 1].i32; break;
-                    case '*': stack[i][top].i32 = stack[i][top].i32 * stack[i][top + 1].i32; break;
-                    case '/': stack[i][top].i32 = stack[i][top].i32 / stack[i][top + 1].i32; break;
-                    case '%': stack[i][top].i32 = stack[i][top].i32 % stack[i][top + 1].i32; break;
+                }
+            }
+            else {
+                print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+                printf(" %s%c ", op_table[tok->op].name, tok->datatype);
+                print_stack_vector(stack[top+1], tok->datatype, tok->vector_length);
+            }
+#endif
+            if (tok->datatype == 'f') {
+                switch (tok->op) {
+                    case OP_ADD:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f + stack[top+1][i].f;
+                        break;
+                    case OP_SUBTRACT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f - stack[top+1][i].f;
+                        break;
+                    case OP_MULTIPLY:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f * stack[top+1][i].f;
+                        break;
+                    case OP_DIVIDE:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f / stack[top+1][i].f;
+                        break;
+                    case OP_MODULO:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = fmod(stack[top][i].f, stack[top+1][i].f);
+                        break;
+                    case OP_IS_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f == stack[top+1][i].f;
+                        break;
+                    case OP_IS_NOT_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f != stack[top+1][i].f;
+                        break;
+                    case OP_IS_LESS_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f < stack[top+1][i].f;
+                        break;
+                    case OP_IS_LESS_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f <= stack[top+1][i].f;
+                        break;
+                    case OP_IS_GREATER_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f > stack[top+1][i].f;
+                        break;
+                    case OP_IS_GREATER_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f >= stack[top+1][i].f;
+                        break;
+                    case OP_LOGICAL_AND:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f && stack[top+1][i].f;
+                        break;
+                    case OP_LOGICAL_OR:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][i].f || stack[top+1][i].f;
+                        break;
+                    case OP_LOGICAL_NOT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = !stack[top][i].f;
+                        break;
+                    case OP_CONDITIONAL_IF_THEN:
+                        // TODO: should not permit implicit any()/all()
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].f)
+                                stack[top][i].f = stack[top+1][i].f;
+                            else
+                                return 0;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (!stack[top][i].f)
+                                stack[top][i].f = stack[top+1][i].f;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_THEN_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].f)
+                                stack[top][i].f = stack[top+1][i].f;
+                            else
+                                stack[top][i].f = stack[top+2][i].f;
+                        }
+                        break;
+                    default: goto error;
+                }
+            } else if (tok->datatype == 'd') {
+                switch (tok->op) {
+                    case OP_ADD:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d + stack[top+1][i].d;
+                        break;
+                    case OP_SUBTRACT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d - stack[top+1][i].d;
+                        break;
+                    case OP_MULTIPLY:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d * stack[top+1][i].d;
+                        break;
+                    case OP_DIVIDE:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d / stack[top+1][i].d;
+                        break;
+                    case OP_MODULO:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = fmod(stack[top][i].d, stack[top+1][i].d);
+                        break;
+                    case OP_IS_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d == stack[top+1][i].d;
+                        break;
+                    case OP_IS_NOT_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d != stack[top+1][i].d;
+                        break;
+                    case OP_IS_LESS_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d < stack[top+1][i].d;
+                        break;
+                    case OP_IS_LESS_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d <= stack[top+1][i].d;
+                        break;
+                    case OP_IS_GREATER_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d > stack[top+1][i].d;
+                        break;
+                    case OP_IS_GREATER_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d >= stack[top+1][i].d;
+                        break;
+                    case OP_LOGICAL_AND:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d && stack[top+1][i].d;
+                        break;
+                    case OP_LOGICAL_OR:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][i].d || stack[top+1][i].d;
+                        break;
+                    case OP_LOGICAL_NOT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = !stack[top][i].d;
+                        break;
+                    case OP_CONDITIONAL_IF_THEN:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].d)
+                                stack[top][i].d = stack[top+1][i].d;
+                            else
+                                return 0;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (!stack[top][i].d)
+                                stack[top][i].d = stack[top+1][i].d;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_THEN_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].d)
+                                stack[top][i].d = stack[top+1][i].d;
+                            else
+                                stack[top][i].d = stack[top+2][i].d;
+                        }
+                        break;
+                    default: goto error;
+                }
+            } else {
+                switch (tok->op) {
+                    case OP_ADD:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 + stack[top+1][i].i32;
+                        break;
+                    case OP_SUBTRACT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 - stack[top+1][i].i32;
+                        break;
+                    case OP_MULTIPLY:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 * stack[top+1][i].i32;
+                        break;
+                    case OP_DIVIDE:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 / stack[top+1][i].i32;
+                        break;
+                    case OP_MODULO:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 % stack[top+1][i].i32;
+                        break;
+                    case OP_IS_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 == stack[top+1][i].i32;
+                        break;
+                    case OP_IS_NOT_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 != stack[top+1][i].i32;
+                        break;
+                    case OP_IS_LESS_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 < stack[top+1][i].i32;
+                        break;
+                    case OP_IS_LESS_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 <= stack[top+1][i].i32;
+                        break;
+                    case OP_IS_GREATER_THAN:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 > stack[top+1][i].i32;
+                        break;
+                    case OP_IS_GREATER_THAN_OR_EQUAL:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 >= stack[top+1][i].i32;
+                        break;
+                    case OP_LEFT_BIT_SHIFT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 << stack[top+1][i].i32;
+                        break;
+                    case OP_RIGHT_BIT_SHIFT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 >> stack[top+1][i].i32;
+                        break;
+                    case OP_BITWISE_AND:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 & stack[top+1][i].i32;
+                        break;
+                    case OP_BITWISE_OR:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 | stack[top+1][i].i32;
+                        break;
+                    case OP_BITWISE_XOR:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 ^ stack[top+1][i].i32;
+                        break;
+                    case OP_LOGICAL_AND:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 && stack[top+1][i].i32;
+                        break;
+                    case OP_LOGICAL_OR:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][i].i32 || stack[top+1][i].i32;
+                        break;
+                    case OP_LOGICAL_NOT:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = !stack[top][i].i32;
+                        break;
+                    case OP_CONDITIONAL_IF_THEN:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].i32)
+                                stack[top][i].i32 = stack[top+1][i].i32;
+                            else
+                                return 0;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (!stack[top][i].i32)
+                                stack[top][i].i32 = stack[top+1][i].i32;
+                        }
+                        break;
+                    case OP_CONDITIONAL_IF_THEN_ELSE:
+                        for (i = 0; i < tok->vector_length; i++) {
+                            if (stack[top][i].i32)
+                                stack[top][i].i32 = stack[top+1][i].i32;
+                            else
+                                stack[top][i].i32 = stack[top+2][i].i32;
+                        }
+                        break;
                     default: goto error;
-                    }
-                    trace_eval("%d\n", stack[i][top].i32);
                 }
             }
+#if TRACING
+            printf(" = ");
+            print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+            printf(" \n");
+#endif
             break;
         case TOK_FUNC:
-            switch (function_table[node->tok.func].arity) {
-            case 0:
-                ++top;
-                for (i = 0; i < to->length; i++) {
-                    stack[i][top].f = ((func_float_arity0*)function_table[node->tok.func].func)();
-                    trace_eval("%s = %f\n", function_table[node->tok.func].name,
-                               stack[i][top].f);
+            top -= function_table[tok->func].arity-1;
+            dims[top] = tok->vector_length;
+#if TRACING
+            printf("%s%c(", function_table[tok->func].name, tok->datatype);
+            for (i = 0; i < function_table[tok->func].arity; i++) {
+                print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+                printf(", ");
+            }
+            printf("\b\b)");
+#endif
+            if (tok->datatype == 'f') {
+                switch (function_table[tok->func].arity) {
+                    case 0:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = ((func_float_arity0*)function_table[tok->func].func_float)();
+                        break;
+                    case 1:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = ((func_float_arity1*)function_table[tok->func].func_float)(stack[top][i].f);
+                        break;
+                    case 2:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].f = ((func_float_arity2*)function_table[tok->func].func_float)(stack[top][i].f, stack[top+1][i].f);
+                        break;
+                    default: goto error;
                 }
-                break;
-            case 1:
-                for (i = 0; i < to->length; i++) {
-                    trace_eval("%s(%f) = ", function_table[node->tok.func].name, stack[i][top].f);
-                    stack[i][top].f = ((func_float_arity1*)function_table[node->tok.func].func)(stack[i][top].f);
-                    trace_eval("%f\n", stack[i][top].f);
+            }
+            else if (tok->datatype == 'd') {
+                switch (function_table[tok->func].arity) {
+                    case 0:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = ((func_double_arity0*)function_table[tok->func].func_double)();
+                        break;
+                    case 1:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = ((func_double_arity1*)function_table[tok->func].func_double)(stack[top][i].d);
+                        break;
+                    case 2:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].d = ((func_double_arity2*)function_table[tok->func].func_double)(stack[top][i].d, stack[top+1][i].d);
+                        break;
+                    default: goto error;
                 }
-                break;
-            case 2:
-                --top;
-                for (i = 0; i < to->length; i++) {
-                    trace_eval("%s(%f,%f) = ", function_table[node->tok.func].name, stack[i][top].f, stack[i][top + 1].f);
-                    stack[i][top].f = ((func_float_arity2*)function_table[node->tok.func].func)(stack[i][top].f, stack[i][top + 1].f);
-                    trace_eval("%f\n", stack[i][top].f);
+            }
+            else if (tok->datatype == 'i') {
+                switch (function_table[tok->func].arity) {
+                    case 0:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = ((func_int32_arity0*)function_table[tok->func].func_int32)();
+                        break;
+                    case 1:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = ((func_int32_arity1*)function_table[tok->func].func_int32)(stack[top][i].i32);
+                        break;
+                    case 2:
+                        for (i = 0; i < tok->vector_length; i++)
+                            stack[top][i].i32 = ((func_int32_arity2*)function_table[tok->func].func_int32)(stack[top][i].i32, stack[top+1][i].i32);
+                        break;
+                    default: goto error;
                 }
-                break;
-            default: goto error;
             }
+#if TRACING
+            printf(" = ");
+            print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+            printf(" \n");
+#endif
+            break;
+        case TOK_VFUNC:
+            top -= function_table[tok->func].arity-1;
+#if TRACING
+            printf("%s%c(", vfunction_table[tok->func].name, tok->datatype);
+            for (i = 0; i < vfunction_table[tok->func].arity; i++) {
+                print_stack_vector(stack[top], tok->datatype, dims[top]);
+                printf(", ");
+            }
+            printf("\b\b)");
+#endif
+            if (tok->datatype == 'f') {
+                switch (vfunction_table[tok->func].arity) {
+                    case 1:
+                        stack[top][0].f = ((vfunc_float_arity1*)vfunction_table[tok->func].func_float)(stack[top], dims[top]);
+                        for (i = 1; i < tok->vector_length; i++)
+                            stack[top][i].f = stack[top][0].f;
+                        break;
+                    default: goto error;
+                }
+            }
+            else if (tok->datatype == 'd') {
+                switch (vfunction_table[tok->func].arity) {
+                    case 1:
+                        stack[top][0].d = ((vfunc_double_arity1*)vfunction_table[tok->func].func_double)(stack[top], dims[top]);
+                        for (i = 1; i < tok->vector_length; i++)
+                            stack[top][i].d = stack[top][0].d;
+                        break;
+                    default: goto error;
+                }
+            }
+            else if (tok->datatype == 'i') {
+                switch (vfunction_table[tok->func].arity) {
+                    case 1:
+                        stack[top][0].i32 = ((vfunc_int32_arity1*)vfunction_table[tok->func].func_int32)(stack[top], dims[top]);
+                        for (i = 1; i < tok->vector_length; i++)
+                            stack[top][i].i32 = stack[top][0].i32;
+                        break;
+                    default: goto error;
+                }
+            }
+            dims[top] = tok->vector_length;
+#if TRACING
+            printf(" = ");
+            print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+            printf(" \n");
+#endif
+            break;
+        case TOK_VECTORIZE:
+            // don't need to copy vector elements from first token
+            top -= tok->vector_index-1;
+            k = dims[top];
+            if (tok->datatype == 'f') {
+                for (i = 1; i < tok->vector_index; i++) {
+                    for (j = 0; j < dims[top+1]; j++)
+                        stack[top][k++].f = stack[top+i][j].f;
+                }
+            }
+            else if (tok->datatype == 'i') {
+                for (i = 1; i < tok->vector_index; i++) {
+                    for (j = 0; j < dims[top+1]; j++)
+                        stack[top][k++].i32 = stack[top+i][j].i32;
+                }
+            }
+            else if (tok->datatype == 'd') {
+                for (i = 1; i < tok->vector_index; i++) {
+                    for (j = 0; j < dims[top+1]; j++)
+                        stack[top][k++].d = stack[top+i][j].d;
+                }
+            }
+            dims[top] = tok->vector_length;
+#if TRACING
+            printf("built %i-element vector: ", tok->vector_length);
+            print_stack_vector(stack[top], tok->datatype, tok->vector_length);
+            printf(" \n");
+#endif
             break;
         default: goto error;
         }
-        node = node->next;
+        if (tok->casttype) {
+#if TRACING
+            printf("casting from %c to %c\n", tok->datatype, tok->casttype);
+#endif
+            // need to cast to a different type
+            if (tok->datatype == 'i') {
+                if (tok->casttype == 'f') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].f = (float)stack[top][i].i32;
+                    }
+                }
+                else if (tok->casttype == 'd') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].d = (double)stack[top][i].i32;
+                    }
+                }
+            }
+            else if (tok->datatype == 'f') {
+                if (tok->casttype == 'i') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].i32 = (int)stack[top][i].f;
+                    }
+                }
+                else if (tok->casttype == 'd') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].d = (double)stack[top][i].f;
+                    }
+                }
+            }
+            else if (tok->datatype == 'd') {
+                if (tok->casttype == 'i') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].i32 = (int)stack[top][i].d;
+                    }
+                }
+                else if (tok->casttype == 'f') {
+                    for (i = 0; i < tok->vector_length; i++) {
+                        stack[top][i].f = (float)stack[top][i].d;
+                    }
+                }
+            }
+        }
+        tok++;
+        count++;
     }
 
+    /* Increment index position of output data structure.
+     * We do this after computation to handle conditional output. */
+    to->position = (to->position + 1) % to->size;
+
     if (to->type == 'f') {
         float *v = msig_history_value_pointer(*to);
         for (i = 0; i < to->length; i++)
-            v[i] = stack[i][top].f;
+            v[i] = stack[top][i].f;
     }
     else if (to->type == 'i') {
         int *v = msig_history_value_pointer(*to);
         for (i = 0; i < to->length; i++)
-            v[i] = stack[i][top].i32;
+            v[i] = stack[top][i].i32;
+    }
+    else if (to->type == 'd') {
+        double *v = msig_history_value_pointer(*to);
+        for (i = 0; i < to->length; i++)
+            v[i] = stack[top][i].d;
     }
+
+    if (from) {
+        // Also copy timetag from input
+        mapper_timetag_t *ttfrom = msig_history_tt_pointer(*from);
+        mapper_timetag_t *ttto = msig_history_tt_pointer(*to);
+        memcpy(ttto, ttfrom, sizeof(mapper_timetag_t));
+    }
+
     return 1;
 
   error:
diff --git a/src/mapper_internal.h b/src/mapper_internal.h
index 6fd5fae..641fc94 100644
--- a/src/mapper_internal.h
+++ b/src/mapper_internal.h
@@ -26,8 +26,8 @@ struct _mapper_signal
     struct _mapper_signal_id_map *id_maps;
     int id_map_length;
 
-    /*! The first reserve instance of this signal. */
-    struct _mapper_signal_instance *reserve_instances;
+    /*! Array of pointers to the signal instances. */
+    struct _mapper_signal_instance **instances;
 
     /*! Type of voice stealing to perform on instances. */
     mapper_instance_allocation_type instance_allocation_type;
@@ -47,10 +47,11 @@ struct _mapper_signal
 /**** Devices ****/
 
 struct _mapper_device {
-    /*! Prefix for the name of this device.  It gets a unique ordinal
-     *  appended to it to differentiate from other devices of the same
-     *  name. */
-    char *name_prefix;
+    mapper_db_device_t props;           //!< Properties.
+    mapper_admin_allocated_t ordinal;   /*!< A unique ordinal for this
+                                         *   device instance. */
+    int registered;                     /*!< Non-zero if this device has
+                                         *   been registered. */
 
     /*! Non-zero if this device is the sole owner of this admin, i.e.,
      *  it was created during mdev_new() and should be freed during
@@ -60,13 +61,9 @@ struct _mapper_device {
     mapper_admin admin;
     struct _mapper_signal **inputs;
     struct _mapper_signal **outputs;
-    int n_inputs;
-    int n_outputs;
     int n_alloc_inputs;
     int n_alloc_outputs;
     int n_output_callbacks;
-    int n_links_in;
-    int n_links_out;
     int version;
     int flags;    /*!< Bitflags indicating if information has already been
                    *   sent in a given polling step. */
@@ -77,25 +74,20 @@ struct _mapper_device {
     mapper_device_link_handler *link_cb;
     void *link_cb_userdata;
 
-    /*!< Function to call for custom connection handling. */
+    /*! Function to call for custom connection handling. */
     mapper_device_connection_handler *connection_cb;
     void *connection_cb_userdata;
 
-    /*!< The list of active instance id mappings. */
+    /*! The list of active instance id mappings. */
     struct _mapper_id_map *active_id_map;
 
-    /*!< The list of reserve instance id mappings. */
+    /*! The list of reserve instance id mappings. */
     struct _mapper_id_map *reserve_id_map;
 
     uint32_t id_counter;
 
-    /*! Server used to handle incoming messages.  NULL until at least
-     *  one input has been registered and the incoming port has been
-     *  allocated. */
+    /*! Server used to handle incoming messages. */
     lo_server server;
-
-    /*! Extra properties associated with this device. */
-    struct _mapper_string_table *extra;
 };
 
 /**** Instances ****/
@@ -104,9 +96,15 @@ struct _mapper_device {
  *  metadata. */
 typedef struct _mapper_signal_instance
 {
-    /*! Unique instance ID */
+    /*! User-assignable instance id. */
+    int id;
+
+    /*! Index for accessing associated value history */
     int index;
 
+    /*! Status of this instance. */
+    int is_active;
+
     /*! User data of this instance. */
     void *user_data;
 
@@ -121,18 +119,22 @@ typedef struct _mapper_signal_instance
 
     /*! The timetag associated with the current value. */
     mapper_timetag_t timetag;
-
-    /*! Pointer to the next instance. */
-    struct _mapper_signal_instance *next;
-} *mapper_signal_instance;
+} mapper_signal_instance_t, *mapper_signal_instance;
 
 /*! Bit flags for indicating signal instance status. */
 #define IN_RELEASED_LOCALLY  0x01
 #define IN_RELEASED_REMOTELY 0x02
 
-typedef struct _mapper_signal_id_map {
-    struct _mapper_id_map *map;                 /*! Pointer to id_map in use */
-    struct _mapper_signal_instance *instance;   /*! Pointer to signal instance. */
+typedef struct _mapper_signal_id_map
+{
+    /*! Pointer to id_map in use */
+    struct _mapper_id_map *map;
+
+    /*! Pointer to signal instance. */
+    struct _mapper_signal_instance *instance;
+
+    /*! Status of the id_map. Can be either 0 or a combination of
+     *  IN_RELEASED_LOCALLY and IN_RELEASED_REMOTELY. */
     int status;
 } mapper_signal_id_map_t;
 
@@ -140,8 +142,7 @@ typedef struct _mapper_signal_id_map {
 
 /**** Admin ****/
 
-void mapper_admin_add_device(mapper_admin admin, mapper_device dev,
-                             const char *identifier);
+void mapper_admin_add_device(mapper_admin admin, mapper_device dev);
 
 void mapper_admin_add_monitor(mapper_admin admin, mapper_monitor mon);
 
@@ -149,37 +150,28 @@ void mapper_admin_remove_monitor(mapper_admin admin, mapper_monitor mon);
 
 int mapper_admin_poll(mapper_admin admin);
 
-void mapper_admin_name_probe(mapper_admin admin);
-
-/* A macro allow tracing bad usage of this function. */
-#define mapper_admin_name(admin)                        \
-    _real_mapper_admin_name(admin, __FILE__, __LINE__)
-
-/* The real function, don't call directly. */
-const char *_real_mapper_admin_name(mapper_admin admin,
-                                    const char *file, unsigned int line);
+void mapper_admin_send_bundle(mapper_admin admin);
 
 /*! Macro for calling message-sending function. */
-#define mapper_admin_send_osc(...)                  \
-    _real_mapper_admin_send_osc(__VA_ARGS__, N_AT_PARAMS)
+#define mapper_admin_send(...)                  \
+    _real_mapper_admin_send(__VA_ARGS__, N_AT_PARAMS)
 
 /*! Message-sending function, not to be called directly. */
-void _real_mapper_admin_send_osc(mapper_admin admin, lo_bundle b,
-                                 const char *path,
-                                 const char *types, ...);
+void _real_mapper_admin_send(mapper_admin admin,
+                             int msg_index,
+                             const char *path,
+                             const char *types, ...);
 
 /*! Message-sending function which appends a parameter list at the end. */
-void _real_mapper_admin_send_osc_with_params(const char *file, int line,
-                                             mapper_admin admin,
-                                             mapper_message_t *params,
-                                             mapper_string_table_t *extra,
-                                             const char *path,
-                                             const char *types, ...);
-
-#define mapper_admin_send_osc_with_params(...)                          \
-    _real_mapper_admin_send_osc_with_params(__FILE__, __LINE__,         \
-                                            __VA_ARGS__,                \
-                                            LO_MARKER_A, LO_MARKER_B)
+void _real_mapper_admin_send_with_params(mapper_admin admin,
+                                         mapper_message_t *params,
+                                         mapper_string_table_t *extra,
+                                         int msg_index,
+                                         const char *path,
+                                         const char *types, ...);
+
+#define mapper_admin_send_with_params(...)                          \
+    _real_mapper_admin_send_with_params(__VA_ARGS__, N_AT_PARAMS)
 
 /***** Device *****/
 
@@ -196,7 +188,8 @@ void mdev_remove_instance_release_request_callback(mapper_device md,
                                                    mapper_signal sig);
 
 void mdev_num_instances_changed(mapper_device md,
-                                mapper_signal sig);
+                                mapper_signal sig,
+                                int size);
 
 void mdev_route_signal(mapper_device md,
                        mapper_signal sig,
@@ -232,7 +225,7 @@ void mdev_on_id_and_ordinal(mapper_device md,
                             mapper_admin_allocated_t *resource);
 
 mapper_id_map mdev_add_instance_id_map(mapper_device device, int local_id,
-                                       int group_id, int remote_id);
+                                       int origin, int public_id);
 
 void mdev_remove_instance_id_map(mapper_device device, mapper_id_map map);
 
@@ -240,25 +233,24 @@ mapper_id_map mdev_find_instance_id_map_by_local(mapper_device device,
                                                  int local_id);
 
 mapper_id_map mdev_find_instance_id_map_by_remote(mapper_device device,
-                                                  int group_id, int remote_id);
+                                                  int origin, int public_id);
 
 const char *mdev_name(mapper_device md);
 
-void mdev_num_instances_changed(mapper_device md, mapper_signal sig);
-
 /***** Router *****/
 
 mapper_router mapper_router_new(mapper_device device, const char *host,
-                                int port, const char *name, int default_scope);
+                                int port, const char *name);
 
 void mapper_router_free(mapper_router router);
 
 /*! Set a router's properties based on message parameters. */
-void mapper_router_set_from_message(mapper_router router,
-                                    mapper_message_t *msg);
+int mapper_router_set_from_message(mapper_router router,
+                                   mapper_message_t *msg);
 
 void mapper_router_num_instances_changed(mapper_router r,
-                                         mapper_signal sig);
+                                         mapper_signal sig,
+                                         int size);
 
 /*! For a given connection instance, construct a mapped signal and
  *  send it on to the destination. */
@@ -267,8 +259,7 @@ void mapper_router_process_signal(mapper_router r,
                                   int instance_index,
                                   void *value,
                                   int count,
-                                  mapper_timetag_t timetag,
-                                  int flags);
+                                  mapper_timetag_t timetag);
 
 void mapper_router_send_update(mapper_router r,
                                mapper_connection c,
@@ -295,20 +286,17 @@ mapper_connection mapper_router_find_connection_by_names(mapper_router rt,
                                                          const char* src_name,
                                                          const char* dest_name);
 
-int mapper_router_in_scope(mapper_router router, uint32_t group_id);
+int mapper_router_in_scope(mapper_router router, uint32_t origin);
 
 /*! Find a router by destination address in a linked list of routers. */
 mapper_router mapper_router_find_by_dest_address(mapper_router routers,
-                                                 lo_address dest_addr);
+                                                 const char *host,
+                                                 int port);
 
 /*! Find a router by destination device name in a linked list of routers. */
 mapper_router mapper_router_find_by_dest_name(mapper_router routers,
                                               const char *dest_name);
 
-int mapper_router_add_scope(mapper_router router, const char *scope);
-
-void mapper_router_remove_scope(mapper_router router, const char *scope);
-
 void mapper_router_start_queue(mapper_router router, mapper_timetag_t tt);
 
 void mapper_router_send_queue(mapper_router router, mapper_timetag_t tt);
@@ -316,13 +304,13 @@ void mapper_router_send_queue(mapper_router router, mapper_timetag_t tt);
 /***** Receiver *****/
 
 mapper_receiver mapper_receiver_new(mapper_device device, const char *host,
-                                    int port, const char *name, int default_scope);
+                                    int port, const char *name);
 
 void mapper_receiver_free(mapper_receiver receiver);
 
 /*! Set a router's properties based on message parameters. */
-void mapper_receiver_set_from_message(mapper_receiver receiver,
-                                      mapper_message_t *msg);
+int mapper_receiver_set_from_message(mapper_receiver receiver,
+                                     mapper_message_t *msg);
 
 void mapper_receiver_send_update(mapper_receiver r,
                                  mapper_signal sig,
@@ -348,11 +336,12 @@ mapper_connection mapper_receiver_find_connection_by_names(mapper_receiver rc,
                                                            const char* src_name,
                                                            const char* dest_name);
 
-int mapper_receiver_in_scope(mapper_receiver receiver, uint32_t group_id);
+int mapper_receiver_in_scope(mapper_receiver receiver, uint32_t origin);
 
 /*! Find a receiver by source address in a linked list of receivers. */
 mapper_receiver mapper_receiver_find_by_src_address(mapper_receiver receivers,
-                                                    lo_address src_addr);
+                                                    const char *host,
+                                                    int port);
 
 /*! Find a receiver by source device name in a linked list of receivers. */
 mapper_receiver mapper_receiver_find_by_src_name(mapper_receiver receivers,
@@ -360,7 +349,7 @@ mapper_receiver mapper_receiver_find_by_src_name(mapper_receiver receivers,
 
 int mapper_receiver_add_scope(mapper_receiver receiver, const char *scope);
 
-void mapper_receiver_remove_scope(mapper_receiver receiver, const char *scope);
+int mapper_receiver_remove_scope(mapper_receiver receiver, const char *scope);
 
 /**** Signals ****/
 
@@ -411,14 +400,14 @@ int msig_add_id_map(mapper_signal sig, mapper_signal_instance si,
 int msig_find_instance_with_local_id(mapper_signal sig, int id, int flags);
 
 /*! Find an active instance with the given instance ID.
- *  \param sig   The signal owning the desired instance.
- *  \param group The remote group.
- *  \param id    The remote id.
- *  \param flags Bitflags indicating if search should include released instances.
- *  \return      The index of the retrieved signal instance, or -1 if no active
- *               instances match the specified instance ID map. */
-int msig_find_instance_with_remote_ids(mapper_signal sig, int group,
-                                       int id, int flags);
+ *  \param sig       The signal owning the desired instance.
+ *  \param origin    Unique hash identifying the device that activated this instance.
+ *  \param public_id The public id of this instance.
+ *  \param flags     Bitflags indicating if search should include released instances.
+ *  \return          The index of the retrieved signal instance, or -1 if no active
+ *                   instances match the specified instance ID map. */
+int msig_find_instance_with_remote_ids(mapper_signal sig, int origin,
+                                       int public_id, int flags);
 
 /*! Fetch a reserved (preallocated) signal instance using an instance id,
  *  activating it if necessary.
@@ -435,16 +424,16 @@ int msig_get_instance_with_local_id(mapper_signal sig, int id,
 
 /*! Fetch a reserved (preallocated) signal instance using instance id map,
  *  activating it if necessary.
- *  \param sig   The signal owning the desired instance.
- *  \param group The remote group.
- *  \param id    The remote id.
- *  \param flags Bitflags indicating if search should include released instances.
- *  \param tt    Timetag associated with this action.
- *  \return      The index of the retrieved signal instance, or NULL if no free
- *               instances were available and allocation of a new instance
- *               was unsuccessful according to the selected allocation
- *               strategy. */
-int msig_get_instance_with_remote_ids(mapper_signal sig, int group, int id,
+ *  \param sig       The signal owning the desired instance.
+ *  \param origin    Unique hash identifying the device that activated this instance.
+ *  \param public_id The public id of this instance.
+ *  \param flags     Bitflags indicating if search should include released instances.
+ *  \param tt        Timetag associated with this action.
+ *  \return          The index of the retrieved signal instance, or NULL if no free
+ *                   instances were available and allocation of a new instance
+ *                   was unsuccessful according to the selected allocation
+ *                   strategy. */
+int msig_get_instance_with_remote_ids(mapper_signal sig, int origin, int public_id,
                                       int flags, mapper_timetag_t *tt);
 
 /*! Release a specific signal instance. */
@@ -468,19 +457,17 @@ int mapper_boundary_perform(mapper_connection connection,
                             mapper_signal_history_t *from_value);
 
 /*! Set a connection's properties based on message parameters. */
-void mapper_connection_set_from_message(mapper_connection connection,
-                                        mapper_message_t *msg);
+int mapper_connection_set_from_message(mapper_connection connection,
+                                       mapper_message_t *msg);
 
-void mapper_connection_set_direct(mapper_connection connection);
+void mapper_connection_set_mode_direct(mapper_connection connection);
 
-void mapper_connection_set_linear_range(mapper_connection connection,
-                                        mapper_connection_range_t *range);
+void mapper_connection_set_mode_linear(mapper_connection connection);
 
-void mapper_connection_set_expression(mapper_connection connection,
-                                      const char *expr);
+void mapper_connection_set_mode_expression(mapper_connection connection,
+                                           const char *expr);
 
-void mapper_connection_set_calibrate(mapper_connection connection,
-                                     float dest_min, float dest_max);
+void mapper_connection_set_mode_calibrate(mapper_connection connection);
 
 const char *mapper_get_boundary_action_string(mapper_boundary_action bound);
 
@@ -582,6 +569,14 @@ int mapper_db_add_or_update_link_params(mapper_db db,
                                         const char *dest_name,
                                         mapper_message_t *params);
 
+/*! Add a scope identifier to a given link record. */
+int mapper_db_link_add_scope(mapper_db_link link,
+                             const char *scope);
+
+/*! Remove a scope identifier from a given link record. */
+int mapper_db_link_remove_scope(mapper_db_link link,
+                                const char *scope);
+
 /**** Messages ****/
 
 /*! Parse a message based on an OSC path and parameters.
@@ -606,14 +601,21 @@ lo_arg** mapper_msg_get_param(mapper_message_t *msg,
  *  Note that it's possible the returned type string will be longer
  *  than the actual contents pointed to; it is up to the usage of this
  *  function to ensure it only processes the a priori expected number
- *  of parameters.  (e.g., "@range" has 4 parameters.)
+ *  of parameters. The number of parameter elements can be retrieved
+ *  using the function mapper_msg_get_length().
  *  \param msg    Structure containing parameter info.
  *  \param param  Symbolic identifier of the parameter to look for.
- *  \return       String containing type of each parameter argument.
- */
+ *  \return       String containing type of each parameter argument. */
 const char* mapper_msg_get_type(mapper_message_t *msg,
                                 mapper_msg_param_t param);
 
+/*! Look up the vector length of a message parameter by symbolic identifier.
+ *  \param msg    Structure containing parameter info.
+ *  \param param  Symbolic identifier of the parameter to look for.
+ *  \return       Integer containing the length of the parameter vector. */
+int mapper_msg_get_length(mapper_message_t *msg,
+                          mapper_msg_param_t param);
+
 /*! Helper to get a direct parameter value only if it's a string.
  *  \param msg    Structure containing parameter info.
  *  \param param  Symbolic identifier of the parameter to look for.
@@ -694,12 +696,17 @@ void mapper_link_prepare_osc_message(lo_message m,
 void mapper_connection_prepare_osc_message(lo_message m,
                                            mapper_connection c);
 
+// Helper for setting property value from different lo_arg types
+int propval_set_from_lo_arg(void *dest, const char dest_type,
+                            lo_arg *src, const char src_type, int index);
+
 /**** Expression parser/evaluator ****/
 
 mapper_expr mapper_expr_new_from_string(const char *str,
-                                        int input_is_float,
-                                        int output_is_float,
-                                        int vector_size,
+                                        char input_type,
+                                        char output_type,
+                                        int input_vector_size,
+                                        int output_vector_size,
                                         int *input_history_size,
                                         int *output_history_size);
 
@@ -715,6 +722,8 @@ int mapper_expr_evaluate(mapper_expr expr,
                          mapper_signal_history_t *input_history,
                          mapper_signal_history_t *output_history);
 
+int mapper_expr_constant_output(mapper_expr expr);
+
 void mapper_expr_free(mapper_expr expr);
 
 /**** String tables ****/
@@ -728,7 +737,7 @@ table table_new();
 void table_free(table t, int free_values);
 
 /*! Add a string to a table. */
-void table_add(table t, const char *key, void *value);
+void table_add(table t, const char *key, void *value, int is_mapper_prop);
 
 /*! Sort a table.  Call this after table_add and before table_find. */
 void table_sort(table t);
@@ -766,17 +775,30 @@ int table_add_or_update(table t, const char *key, void *value);
 void table_dump_osc_values(table t);
 #endif
 
-/*! Add a typed OSC argument to a string table.
- *  \param t    Table to update.
- *  \param key  Key to store.
- *  \param type OSC type of value to add.
- *  \param arg  OSC value to add
+/*! Add a typed OSC argument from a mapper_msg to a string table.
+ *  \param t        Table to update.
+ *  \param key      Key to store.
+ *  \param type     OSC type of value to add.
+ *  \param arg      Array of OSC values to add
+ *  \param length   Number of OSC argument in array
+ *  \return The number of table values added or modified. */
+int mapper_table_add_or_update_msg_value(table t, const char *key,
+                                         lo_type type, lo_arg **args,
+                                         int length);
+
+/*! Add a typed argument to a string table.
+ *  \param t        Table to update.
+ *  \param key      Key to store.
+ *  \param type     OSC type of value to add.
+ *  \param arg      Value(s) to add
+ *  \param length   Number of OSC argument in array
  *  \return The number of table values added or modified. */
-int mapper_table_add_or_update_osc_value(table t, const char *key,
-                                         lo_type type, lo_arg *arg);
+int mapper_table_add_or_update_typed_value(table t, const char *key,
+                                           char type, void *args,
+                                           int length);
 
-/*! Add OSC arguments contained in a string table to a lo_message */
-void mapper_msg_add_osc_value_table(lo_message m, table t);
+/*! Add arguments contained in a string table to a lo_message */
+void mapper_msg_add_value_table(lo_message m, table t);
 
 /**** Clock synchronization ****/
 
@@ -821,11 +843,15 @@ static void die_unless(...) {};
 /*! Helper to find size of signal value types. */
 inline static int mapper_type_size(char type)
 {
-    mapper_signal_value_t v;
     switch (type) {
-    case 'i': return sizeof(v.i32);
-    case 'f': return sizeof(v.f);
-    case 'd': return sizeof(v.d);
+    case 'i': return sizeof(int);
+    case 'f': return sizeof(float);
+    case 'd': return sizeof(double);
+    case 's':
+    case 'S': return sizeof(char*);
+    case 'h': return sizeof(int64_t);
+    case 't': return sizeof(mapper_timetag_t);
+    case 'c': return sizeof(char);
     default:
         die_unless(0, "getting size of unknown type %c\n", type);
         return 0;
diff --git a/src/methodlist.c b/src/methodlist.c
new file mode 100644
index 0000000..d61644a
--- /dev/null
+++ b/src/methodlist.c
@@ -0,0 +1,111 @@
+
+#include <mapper.h>
+#include <stdlib.h>
+#include <string.h>
+
+int mapper_method_add(mapper_method *head, const char *path,
+                      const char *types)
+{
+    /* Allocate new structure */
+    mapper_method method = malloc(sizeof(mapper_method_t));
+    if (!method)
+        return 0;
+
+    method->path = strdup(path);
+    if (!method->path) {
+        free(method);
+        return 0;
+    }
+
+    method->types = strdup(types);
+    if (!method->types) {
+        free(method->path);
+        free(method);
+        return 0;
+    }
+
+    method->next = NULL;
+
+    if (*head) {
+        /* Find end of list.  Check if same method has been previously
+         * added while we're at it */
+        mapper_method node = *head;
+        while (node->next) {
+            if (strcmp(node->path, path) == 0
+                && strcmp(node->types, types) == 0) {
+                free(method->path);
+                free(method->types);
+                free(method);
+                return 0;
+            }
+            node = node->next;
+        }
+
+        if (strcmp(node->path, path) == 0
+            && strcmp(node->types, types) == 0) {
+            free(method->path);
+            free(method->types);
+            free(method);
+            return 0;
+        }
+        node->next = method;
+    } else {
+        *head = method;
+    }
+
+    return 1;
+}
+
+int mapper_method_remove(mapper_method *head, const char *path,
+                         const char *types)
+{
+    if (*head) {
+        /* Find specified method */
+        mapper_method node = *head;
+        mapper_method *prev = head;
+        while (node) {
+            if (strcmp(node->path, path) == 0
+                && strcmp(node->types, types) == 0)
+                break;
+            prev = &node->next;
+            node = node->next;
+        }
+        if (node) {
+            /* Remove it from the list */
+            *prev = node->next;
+            free(node->path);
+            free(node->types);
+            free(node);
+        } else
+            return 0;
+    } else {
+        return 0;
+    }
+}
+
+int mapper_method_list_free(mapper_method *head)
+{
+    mapper_method node, tmp;
+    node = *head;
+    *head = 0;
+    while (node) {
+        tmp = node->next;
+        free(node->path);
+        free(node->types);
+        free(node);
+        node = tmp;
+    }
+}
+
+int mapper_method_list_count(mapper_method head)
+{
+    mapper_method node = head;
+    int count = 0;
+
+    while (node) {
+        count++;
+        node = node->next;
+    }
+
+    return count;
+}
diff --git a/src/monitor.c b/src/monitor.c
index fdff825..14b38b0 100644
--- a/src/monitor.c
+++ b/src/monitor.c
@@ -26,7 +26,8 @@ typedef enum _db_request_direction {
     DIRECTION_BOTH
 } db_request_direction;
 
-mapper_monitor mapper_monitor_new(mapper_admin admin, int enable_autorequest)
+mapper_monitor mapper_monitor_new(mapper_admin admin,
+                                  mapper_monitor_autoreq_mode_t flags)
 {
     mapper_monitor mon = (mapper_monitor)
         calloc(1, sizeof(struct _mapper_monitor));
@@ -46,8 +47,8 @@ mapper_monitor mapper_monitor_new(mapper_admin admin, int enable_autorequest)
     }
 
     mapper_admin_add_monitor(mon->admin, mon);
-    if (enable_autorequest)
-        mapper_monitor_autorequest(mon, 1);
+    if (flags)
+        mapper_monitor_autorequest(mon, flags);
     return mon;
 }
 
@@ -103,7 +104,7 @@ static int request_signals_by_device_name_internal(mapper_monitor mon,
         snprintf(cmd, 1024, "%s/signals/output/get", name);
     else
         snprintf(cmd, 1024, "%s/signals/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -138,7 +139,7 @@ static int request_signal_range_by_device_name_internal(mapper_monitor mon,
         snprintf(cmd, 1024, "%s/signals/output/get", name);
     else
         snprintf(cmd, 1024, "%s/signals/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "ii", start_index, stop_index);
+	mapper_admin_send(mon->admin, -1, cmd, "ii", start_index, stop_index);
     return 0;
 }
 
@@ -196,7 +197,7 @@ static void on_signal_continue_batch_request(mapper_db_signal sig,
         free(data);
         return;
     }
-    if (sig->id < 0 && (sig->id % data->batch_size != 0))
+    if (sig->id > 0 && (sig->id % data->batch_size == 0))
         request_signal_range_by_device_name_internal(data->monitor,
                                                      data->device->name,
                                                      sig->id + 1,
@@ -216,15 +217,21 @@ static int batch_request_signals_by_device_name_internal(mapper_monitor mon,
     }
 
     int signal_count = 0;
-    lo_type type;
-    const lo_arg *value;
-    if (!mapper_db_device_property_lookup(dev, "n_inputs", &type, &value)) {
-        if (type == LO_INT32)
-            signal_count = value->i32;
+    char type;
+    const void *value;
+    int length;
+
+    if (!mapper_db_device_property_lookup(dev, "n_inputs", &type, &value, &length)) {
+        if (length && type == LO_INT32) {
+            int *vals = (int*)value;
+            signal_count = vals[0];
+        }
     }
-    if (!mapper_db_device_property_lookup(dev, "n_outputs", &type, &value))
-        if (type == LO_INT32)
-            signal_count = signal_count > value->i32 ? signal_count : value->i32;
+    if (!mapper_db_device_property_lookup(dev, "n_outputs", &type, &value, &length))
+        if (length && type == LO_INT32) {
+            int *vals = (int*)value;
+            signal_count = signal_count > vals[0] ? signal_count : vals[0];
+        }
 
     if (!signal_count)
         return 1;
@@ -277,7 +284,7 @@ int mapper_monitor_batch_request_output_signals_by_device_name(mapper_monitor mo
 
 int mapper_monitor_request_devices(mapper_monitor mon)
 {
-    mapper_admin_send_osc(mon->admin, 0, "/who", "");
+    mapper_admin_send(mon->admin, ADM_WHO, 0, "");
     return 0;
 }
 
@@ -286,7 +293,7 @@ int mapper_monitor_request_device_info(mapper_monitor mon,
 {
     char cmd[1024];
 	snprintf(cmd, 1024, "%s/info/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -295,7 +302,7 @@ int mapper_monitor_request_links_by_device_name(mapper_monitor mon,
 {
 	char cmd[1024];
 	snprintf(cmd, 1024, "%s/links/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -304,7 +311,7 @@ int mapper_monitor_request_links_by_src_device_name(mapper_monitor mon,
 {
 	char cmd[1024];
 	snprintf(cmd, 1024, "%s/links/out/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -313,7 +320,7 @@ int mapper_monitor_request_links_by_dest_device_name(mapper_monitor mon,
 {
 	char cmd[1024];
 	snprintf(cmd, 1024, "%s/links/in/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -328,7 +335,7 @@ static int request_connections_by_device_name_internal(mapper_monitor mon,
         snprintf(cmd, 1024, "%s/connections/out/get", name);
     else
         snprintf(cmd, 1024, "%s/connections/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "");
+	mapper_admin_send(mon->admin, -1, cmd, "");
     return 0;
 }
 
@@ -366,7 +373,7 @@ static int request_connection_range_by_device_name_internal(mapper_monitor mon,
         snprintf(cmd, 1024, "%s/connections/out/get", name);
     else
         snprintf(cmd, 1024, "%s/connections/get", name);
-	mapper_admin_send_osc(mon->admin, 0, cmd, "ii", start_index, stop_index);
+	mapper_admin_send(mon->admin, -1, cmd, "ii", start_index, stop_index);
     return 0;
 }
 
@@ -445,18 +452,23 @@ static int batch_request_connections_by_device_name_internal(mapper_monitor mon,
     }
 
     int connection_count = 0;
-    lo_type type;
-    const lo_arg *value;
+    char type;
+    const void *value;
+    int length;
 
     if ((direction == DIRECTION_IN || direction == DIRECTION_BOTH) &&
-        !mapper_db_device_property_lookup(dev, "n_connections_in", &type, &value)) {
-        if (type == LO_INT32)
-            connection_count += value->i32;
+        !mapper_db_device_property_lookup(dev, "n_connections_in", &type, &value, &length)) {
+        if (length && type == LO_INT32) {
+            int *vals = (int*)value;
+            connection_count += vals[0];
+        }
     }
     if ((direction == DIRECTION_OUT || direction == DIRECTION_BOTH) &&
-        !mapper_db_device_property_lookup(dev, "n_connections_out", &type, &value)) {
-        if (type == LO_INT32)
-            connection_count += value->i32;
+        !mapper_db_device_property_lookup(dev, "n_connections_out", &type, &value, &length)) {
+        if (length && type == LO_INT32) {
+            int *vals = (int*)value;
+            connection_count += vals[0];
+        }
     }
 
     if (!connection_count)
@@ -538,37 +550,62 @@ void mapper_monitor_link(mapper_monitor mon,
         free(m);
     }
     else
-        mapper_admin_send_osc( mon->admin, 0, "/link", "ss",
-                               source_device, dest_device );
+        mapper_admin_send( mon->admin, ADM_LINK, 0, "ss",
+                           source_device, dest_device );
+    /* We cannot depend on string arguments sticking around for liblo to
+     * serialize later: trigger immediate dispatch. */
+    mapper_admin_send_bundle(mon->admin);
 }
 
 void mapper_monitor_unlink(mapper_monitor mon,
                            const char* source_device,
                            const char* dest_device)
 {
-    mapper_admin_send_osc( mon->admin, 0, "/unlink", "ss",
-                           source_device, dest_device );
+    mapper_admin_send( mon->admin, ADM_UNLINK, 0, "ss",
+                       source_device, dest_device );
 }
 
 void mapper_monitor_connection_modify(mapper_monitor mon,
+                                      const char *source_signal,
+                                      const char *dest_signal,
                                       mapper_db_connection_t *props,
                                       unsigned int props_flags)
 {
     if (props) {
-        mapper_admin_send_osc( mon->admin, 0, "/connection/modify", "ss",
-                               props->src_name, props->dest_name,
-                               (props_flags & CONNECTION_BOUND_MIN)
-                               ? AT_BOUND_MIN : -1, props->bound_min,
-                               (props_flags & CONNECTION_BOUND_MAX)
-                               ? AT_BOUND_MAX : -1, props->bound_max,
-                               (props_flags & CONNECTION_RANGE_KNOWN)
-                               ? AT_RANGE : -1, &props->range,
-                               (props_flags & CONNECTION_EXPRESSION)
-                               ? AT_EXPRESSION : -1, props->expression,
-                               (props_flags & CONNECTION_MODE)
-                               ? AT_MODE : -1, props->mode,
-                               (props_flags & CONNECTION_MUTED)
-                               ? AT_MUTE : -1, props->muted );
+        mapper_admin_send( mon->admin, ADM_CONNECTION_MODIFY, 0, "ss",
+                           source_signal, dest_signal,
+                           (props_flags & CONNECTION_BOUND_MIN)
+                           ? AT_BOUND_MIN : -1, props->bound_min,
+                           (props_flags & CONNECTION_BOUND_MAX)
+                           ? AT_BOUND_MAX : -1, props->bound_max,
+                           ((props_flags & CONNECTION_RANGE_SRC_MIN) &&
+                            (props_flags & CONNECTION_SRC_TYPE) &&
+                            (props_flags & CONNECTION_SRC_LENGTH))
+                           ? AT_SRC_MIN : -1, props,
+                           ((props_flags & CONNECTION_RANGE_SRC_MAX) &&
+                            (props_flags & CONNECTION_SRC_TYPE) &&
+                            (props_flags & CONNECTION_SRC_LENGTH))
+                           ? AT_SRC_MAX : -1, props,
+                           ((props_flags & CONNECTION_RANGE_DEST_MIN) &&
+                            (props_flags & CONNECTION_DEST_TYPE) &&
+                            (props_flags & CONNECTION_DEST_LENGTH))
+                           ? AT_DEST_MIN : -1, props,
+                           ((props_flags & CONNECTION_RANGE_DEST_MAX) &&
+                            (props_flags & CONNECTION_DEST_TYPE) &&
+                            (props_flags & CONNECTION_DEST_LENGTH))
+                           ? AT_DEST_MAX : -1, props,
+                           (props_flags & CONNECTION_EXPRESSION)
+                           ? AT_EXPRESSION : -1, props->expression,
+                           (props_flags & CONNECTION_MODE)
+                           ? AT_MODE : -1, props->mode,
+                           (props_flags & CONNECTION_MUTED)
+                           ? AT_MUTE : -1, props->muted,
+                           (props_flags & CONNECTION_SEND_AS_INSTANCE)
+                           ? AT_SEND_AS_INSTANCE : -1,
+                           props->send_as_instance);
+        /* We cannot depend on string arguments sticking around for liblo to
+         * serialize later: trigger immediate dispatch. */
+        mapper_admin_send_bundle(mon->admin);
     }
 }
 
@@ -579,32 +616,52 @@ void mapper_monitor_connect(mapper_monitor mon,
                             unsigned int props_flags)
 {
     if (props) {
-        mapper_admin_send_osc( mon->admin, 0, "/connect", "ss",
-                               source_signal, dest_signal,
-                               (props_flags & CONNECTION_BOUND_MIN)
-                               ? AT_BOUND_MIN : -1, props->bound_min,
-                               (props_flags & CONNECTION_BOUND_MAX)
-                               ? AT_BOUND_MAX : -1, props->bound_max,
-                               (props_flags & CONNECTION_RANGE_KNOWN)
-                               ? AT_RANGE : -1, &props->range,
-                               (props_flags & CONNECTION_EXPRESSION)
-                               ? AT_EXPRESSION : -1, props->expression,
-                               (props_flags & CONNECTION_MODE)
-                               ? AT_MODE : -1, props->mode,
-                               (props_flags & CONNECTION_MUTED)
-                               ? AT_MUTE : -1, props->muted );
+        mapper_admin_send( mon->admin, ADM_CONNECT, 0, "ss",
+                           source_signal, dest_signal,
+                           (props_flags & CONNECTION_BOUND_MIN)
+                           ? AT_BOUND_MIN : -1, props->bound_min,
+                           (props_flags & CONNECTION_BOUND_MAX)
+                           ? AT_BOUND_MAX : -1, props->bound_max,
+                           ((props_flags & CONNECTION_RANGE_SRC_MIN) &&
+                            (props_flags & CONNECTION_SRC_TYPE) &&
+                            (props_flags & CONNECTION_SRC_LENGTH))
+                           ? AT_SRC_MIN : -1, props,
+                           ((props_flags & CONNECTION_RANGE_SRC_MAX) &&
+                            (props_flags & CONNECTION_SRC_TYPE) &&
+                            (props_flags & CONNECTION_SRC_LENGTH))
+                           ? AT_SRC_MAX : -1, props,
+                           ((props_flags & CONNECTION_RANGE_DEST_MIN) &&
+                            (props_flags & CONNECTION_DEST_TYPE) &&
+                            (props_flags & CONNECTION_DEST_LENGTH))
+                           ? AT_DEST_MIN : -1, props,
+                           ((props_flags & CONNECTION_RANGE_DEST_MAX) &&
+                            (props_flags & CONNECTION_DEST_TYPE) &&
+                            (props_flags & CONNECTION_DEST_LENGTH))
+                           ? AT_DEST_MAX : -1, props,
+                           (props_flags & CONNECTION_EXPRESSION)
+                           ? AT_EXPRESSION : -1, props->expression,
+                           (props_flags & CONNECTION_MODE)
+                           ? AT_MODE : -1, props->mode,
+                           (props_flags & CONNECTION_MUTED)
+                           ? AT_MUTE : -1, props->muted,
+                           (props_flags & CONNECTION_SEND_AS_INSTANCE)
+                           ? AT_SEND_AS_INSTANCE : -1,
+                           props->send_as_instance );
     }
     else
-        mapper_admin_send_osc( mon->admin, 0, "/connect", "ss",
-                               source_signal, dest_signal );
+        mapper_admin_send( mon->admin, ADM_CONNECT, 0, "ss",
+                           source_signal, dest_signal );
+    /* We cannot depend on string arguments sticking around for liblo to
+     * serialize later: trigger immediate dispatch. */
+    mapper_admin_send_bundle(mon->admin);
 }
 
 void mapper_monitor_disconnect(mapper_monitor mon,
                                const char* source_signal,
                                const char* dest_signal)
 {
-    mapper_admin_send_osc( mon->admin, 0, "/disconnect", "ss",
-                           source_signal, dest_signal );
+    mapper_admin_send( mon->admin, ADM_DISCONNECT, 0, "ss",
+                       source_signal, dest_signal );
 }
 
 static void on_device_autorequest(mapper_db_device dev,
@@ -616,16 +673,28 @@ static void on_device_autorequest(mapper_db_device dev,
         mapper_monitor mon = (mapper_monitor)(user);
 
         // Request signals, links, connections for new devices.
-        mapper_monitor_batch_request_signals_by_device_name(mon, dev->name, 10);
-        mapper_monitor_request_links_by_src_device_name(mon, dev->name);
-        mapper_monitor_batch_request_connections_by_src_device_name(mon, dev->name, 10);
+        if ((mon->autorequest & AUTOREQ_SIGNALS))
+            mapper_monitor_batch_request_signals_by_device_name(mon, dev->name, 10);
+        if (mon->autorequest & AUTOREQ_LINKS)
+            mapper_monitor_request_links_by_src_device_name(mon, dev->name);
+        if (mon->autorequest & AUTOREQ_CONNECTIONS)
+            mapper_monitor_batch_request_connections_by_src_device_name(mon, dev->name, 10);
     }
 }
 
-void mapper_monitor_autorequest(mapper_monitor mon, int enable)
+void mapper_monitor_autorequest(mapper_monitor mon,
+                                mapper_monitor_autoreq_mode_t flags)
 {
-    if (enable)
+    if (flags) {
         mapper_db_add_device_callback(&mon->db, on_device_autorequest, mon);
+        mapper_admin_send(mon->admin, ADM_WHO, 0, "");
+    }
     else
         mapper_db_remove_device_callback(&mon->db, on_device_autorequest, mon);
+    mon->autorequest = flags;
+}
+
+void mapper_monitor_now(mapper_monitor mon, mapper_timetag_t *tt)
+{
+    mapper_clock_now(&mon->admin->clock, tt);
 }
diff --git a/src/params.c b/src/params.c
index bbb5ac4..689bfff 100644
--- a/src/params.c
+++ b/src/params.c
@@ -11,6 +11,8 @@ const char* mapper_msg_param_strings[] =
     "@boundMax",        /* AT_BOUND_MAX */
     "@boundMin",        /* AT_BOUND_MIN */
     "@destLength",      /* AT_DEST_LENGTH */
+    "@destMax",         /* AT_DEST_MAX */
+    "@destMin",         /* AT_DEST_MIN */
     "@destPort",        /* AT_DEST_PORT */
     "@destType",        /* AT_DEST_TYPE */
     "@direction",       /* AT_DIRECTION */
@@ -31,12 +33,13 @@ const char* mapper_msg_param_strings[] =
     "@numLinksOut",     /* AT_NUM_LINKS_OUT */
     "@numOutputs",      /* AT_NUM_OUTPUTS */
     "@port",            /* AT_PORT */
-    "@range",           /* AT_RANGE */
     "@rate",            /* AT_RATE */
     "@rev",             /* AT_REV */
     "@scope",           /* AT_SCOPE */
     "@sendAsInstance",  /* AT_SEND_AS_INSTANCE */
     "@srcLength",       /* AT_SRC_LENGTH */
+    "@srcMax",          /* AT_SRC_MAX */
+    "@srcMin",          /* AT_SRC_MIN */
     "@srcPort",         /* AT_SRC_PORT */
     "@srcType",         /* AT_SRC_TYPE */
     "@type",            /* AT_TYPE */
@@ -70,7 +73,7 @@ int mapper_msg_parse_params(mapper_message_t *msg,
             lo_arg_pp(types[i], argv[i]);
             trace("' not a string.\n");
 #endif
-            return 1;
+            continue;
         }
 
         for (j=0; j<N_AT_PARAMS; j++)
@@ -81,8 +84,29 @@ int mapper_msg_parse_params(mapper_message_t *msg,
             if (argv[i]->s == '@' && extra_count < N_EXTRA_PARAMS) {
                 /* Unknown "extra" parameter, record the key index. */
                 msg->extra_args[extra_count] = &argv[i];
-                i++; // To value
-                msg->extra_types[extra_count] = types[i];
+                msg->extra_types[extra_count] = types[i+1];
+                msg->extra_lengths[extra_count] = 0;
+                while (++i < argc) {
+                    if ((types[i] == 's' || types[i] == 'S')
+                        && (&argv[i]->s)[0] == '@') {
+                        /* arrived at next parameter index. */
+                        i--;
+                        break;
+                    }
+                    else if (types[i] != msg->extra_types[extra_count]) {
+                        trace("message %s, value vector for key %s has heterogeneous types.\n", path, &(*msg->extra_args[extra_count])->s);
+                        msg->extra_lengths[extra_count] = 0;
+                        break;
+                    }
+                    msg->extra_lengths[extra_count]++;
+                }
+                if (!msg->extra_lengths[extra_count]) {
+                    trace("message %s, key %s has no values.\n",
+                          path, &(*msg->extra_args[extra_count])->s);
+                    msg->extra_args[extra_count] = 0;
+                    msg->extra_types[extra_count] = 0;
+                    continue;
+                }
                 extra_count++;
                 continue;
             }
@@ -91,48 +115,30 @@ int mapper_msg_parse_params(mapper_message_t *msg,
                 continue;
         }
 
-        /* special case: range has 4 float or int parameters */
-        if (j==AT_RANGE) {
-            int k;
-            msg->types[j] = &types[i+1];
-            msg->values[j] = &argv[i+1];
-            for (k=0; k<4; k++) {
-                i++;
-                if (i >= argc) {
-                    trace("message %s, not enough parameters "
-                          "for @range.\n", path);
-                    return 1;
-                }
-                if (((types[i] == 's' || types[i] == 'S')
-                     && strcmp("-", &argv[i]->s)==0)
-                    || (types[i] == 'c' && argv[i]->c == '-'))
-                {
-                    /* The '-' character means "don't change this
-                     * value", and here we ignore it.  It will be
-                     * considered "unknown" during get_range(), and
-                     * therefore not modified if already known by some
-                     * other means. */
-                }
-                else if (types[i] != 'i' && types[i] != 'f') {
-                    /* range parameter bad type */
-#ifdef DEBUG
-                    trace("message %s, @range parameter ", path);
-                    lo_arg_pp(types[i], argv[i]);
-                    trace("not float or int\n");
-#endif
-                    return 1;
-                }
+        msg->types[j] = &types[i+1];
+        msg->values[j] = &argv[i+1];
+        msg->lengths[j] = 0;
+        while (++i < argc) {
+            if ((types[i] == 's' || types[i] == 'S')
+                && (&argv[i]->s)[0] == '@') {
+                /* Arrived at next param index. */
+                i--;
+                break;
             }
-        }
-        else {
-            i++;
-            msg->types[j] = &types[i];
-            msg->values[j] = &argv[i];
-            if (i >= argc) {
-                trace("message %s, not enough parameters for %s\n",
-                      path, &argv[i-1]->s);
-                return 1;
+            else if (types[i] != *msg->types[j]) {
+                trace("message %s, value vector for key %s has heterogeneous types.\n",
+                      path, mapper_msg_param_strings[j]);
+                msg->lengths[j] = 0;
+                break;
             }
+            msg->lengths[j]++;
+        }
+        if (!msg->lengths[j]) {
+            trace("message %s, key %s has no values.\n",
+                  path, mapper_msg_param_strings[j]);
+            msg->types[j] = 0;
+            msg->values[j] = 0;
+            continue;
         }
     }
     return 0;
@@ -141,7 +147,7 @@ int mapper_msg_parse_params(mapper_message_t *msg,
 lo_arg** mapper_msg_get_param(mapper_message_t *msg,
                               mapper_msg_param_t param)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
     return msg->values[param];
 }
@@ -149,15 +155,23 @@ lo_arg** mapper_msg_get_param(mapper_message_t *msg,
 const char* mapper_msg_get_type(mapper_message_t *msg,
                                 mapper_msg_param_t param)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
     return msg->types[param];
 }
 
+int mapper_msg_get_length(mapper_message_t *msg,
+                          mapper_msg_param_t param)
+{
+    die_unless(param < N_AT_PARAMS,
+               "error, unknown parameter\n");
+    return msg->lengths[param];
+}
+
 const char* mapper_msg_get_param_if_string(mapper_message_t *msg,
                                            mapper_msg_param_t param)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
 
     lo_arg **a = mapper_msg_get_param(msg, param);
@@ -175,7 +189,7 @@ const char* mapper_msg_get_param_if_string(mapper_message_t *msg,
 const char* mapper_msg_get_param_if_char(mapper_message_t *msg,
                                          mapper_msg_param_t param)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
 
     lo_arg **a = mapper_msg_get_param(msg, param);
@@ -198,7 +212,7 @@ int mapper_msg_get_param_if_int(mapper_message_t *msg,
                                 mapper_msg_param_t param,
                                 int *value)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
     die_unless(value!=0, "bad pointer");
 
@@ -219,7 +233,7 @@ int mapper_msg_get_param_if_float(mapper_message_t *msg,
                                   mapper_msg_param_t param,
                                   float *value)
 {
-    die_unless(param >= 0 && param < N_AT_PARAMS,
+    die_unless(param < N_AT_PARAMS,
                "error, unknown parameter\n");
     die_unless(value!=0, "bad pointer");
 
@@ -236,38 +250,106 @@ int mapper_msg_get_param_if_float(mapper_message_t *msg,
     return 0;
 }
 
-int mapper_msg_add_or_update_extra_params(table t,
-                                          mapper_message_t *params)
+int mapper_msg_get_param_if_double(mapper_message_t *msg,
+                                   mapper_msg_param_t param,
+                                   double *value)
+{
+    die_unless(param < N_AT_PARAMS,
+               "error, unknown parameter\n");
+    die_unless(value!=0, "bad pointer");
+
+    lo_arg **a = mapper_msg_get_param(msg, param);
+    if (!a || !(*a)) return 1;
+
+    const char *t = mapper_msg_get_type(msg, param);
+    if (!t) return 1;
+
+    if (t[0] != 'd')
+        return 1;
+
+    *value = (*a)->d;
+    return 0;
+}
+
+int mapper_msg_add_or_update_extra_params(table t, mapper_message_t *params)
 {
     int i=0, updated=0;
     while (params->extra_args[i])
     {
         const char *key = &params->extra_args[i][0]->s + 1; // skip '@'
-        lo_arg *arg = *(params->extra_args[i]+1);
         char type = params->extra_types[i];
-        updated += mapper_table_add_or_update_osc_value(t, key, type, arg);
+        int length = params->extra_lengths[i];
+        updated += mapper_table_add_or_update_msg_value(t, key, type,
+                                                        &params->extra_args[i][1],
+                                                        length);
         i++;
     }
     return updated;
 }
 
 /* helper for mapper_msg_prepare_varargs() */
-static void mval_add_to_message(lo_message m, char type,
-                                mapper_signal_value_t *value)
+void msg_add_typed_value(lo_message m, char type, int length, void *value)
 {
+    int i;
+    if (length < 1)
+        return;
+
     switch (type) {
+        case 's':
+        case 'S':
+        {
+            if (length == 1)
+                lo_message_add_string(m, (char*)value);
+            else {
+                char **vals = (char**)value;
+                for (i = 0; i < length; i++)
+                    lo_message_add_string(m, vals[i]);
+            }
+            break;
+        }
         case 'f':
-            lo_message_add_float(m, value->f);
+        {
+            float *vals = (float*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_float(m, vals[i]);
             break;
+        }
         case 'd':
-            lo_message_add_double(m, value->d);
+        {
+            double *vals = (double*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_double(m, vals[i]);
             break;
+        }
         case 'i':
-            lo_message_add_int32(m, value->i32);
+        {
+            int *vals = (int*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_int32(m, vals[i]);
+            break;
+        }
+        case 'h':
+        {
+            int64_t *vals = (int64_t*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_int64(m, vals[i]);
             break;
+        }
+        case 't':
+        {
+            mapper_timetag_t *vals = (mapper_timetag_t*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_timetag(m, vals[i]);
+            break;
+        }
+        case 'c':
+        {
+            char *vals = (char*)value;
+            for (i = 0; i < length; i++)
+                lo_message_add_char(m, vals[i]);
+            break;
+        }
         default:
-            // Unknown signal type
-            assert(0);
             break;
     }
 }
@@ -280,12 +362,12 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
     table tab;
     mapper_signal sig;
     mapper_msg_param_t pa = (mapper_msg_param_t) va_arg(aq, int);
-    mapper_connection_range_t *range = 0;
+    mapper_db_connection_t *con;
 
     while (pa != N_AT_PARAMS)
     {
         /* if parameter is -1, it means to skip this entry */
-        if (pa == -1) {
+        if ((int)pa == -1) {
             pa = (mapper_msg_param_t) va_arg(aq, int);
             pa = (mapper_msg_param_t) va_arg(aq, int);
             continue;
@@ -293,7 +375,7 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
 
         /* Only "extra" is not a real property name */
 #ifdef DEBUG
-        if (pa >= 0 && pa < N_AT_PARAMS)
+        if ((int)pa >= 0 && pa < N_AT_PARAMS)
 #endif
             if (pa != AT_EXTRA)
                 lo_message_add_string(m, mapper_msg_param_strings[pa]);
@@ -315,6 +397,7 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
         case AT_NUM_OUTPUTS:
         case AT_PORT:
         case AT_REV:
+        case AT_SEND_AS_INSTANCE:
         case AT_SRC_LENGTH:
         case AT_SRC_PORT:
             i = va_arg(aq, int);
@@ -333,11 +416,13 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
             break;
         case AT_MIN:
             sig = va_arg(aq, mapper_signal);
-            mval_add_to_message(m, sig->props.type, sig->props.minimum);
+            msg_add_typed_value(m, sig->props.type, sig->props.length,
+                                sig->props.minimum);
             break;
         case AT_MAX:
             sig = va_arg(aq, mapper_signal);
-            mval_add_to_message(m, sig->props.type, sig->props.maximum);
+            msg_add_typed_value(m, sig->props.type, sig->props.length,
+                                sig->props.maximum);
             break;
         case AT_RATE:
             sig = va_arg(aq, mapper_signal);
@@ -362,24 +447,25 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
             else
                 lo_message_add_string(m, "unknown");
             break;
-        case AT_RANGE:
-            range = va_arg(aq, mapper_connection_range_t*);
-            if (range->known & CONNECTION_RANGE_SRC_MIN)
-                lo_message_add_float(m, range->src_min);
-            else
-                lo_message_add_string(m, "-");
-            if (range->known & CONNECTION_RANGE_SRC_MAX)
-                lo_message_add_float(m, range->src_max);
-            else
-                lo_message_add_string(m, "-");
-            if (range->known & CONNECTION_RANGE_DEST_MIN)
-                lo_message_add_float(m, range->dest_min);
-            else
-                lo_message_add_string(m, "-");
-            if (range->known & CONNECTION_RANGE_DEST_MAX)
-                lo_message_add_float(m, range->dest_max);
-            else
-                lo_message_add_string(m, "-");
+        case AT_SRC_MIN:
+            con = va_arg(aq, mapper_db_connection_t*);
+            msg_add_typed_value(m, con->src_type, con->src_length,
+                                con->src_min);
+            break;
+        case AT_SRC_MAX:
+            con = va_arg(aq, mapper_db_connection_t*);
+            msg_add_typed_value(m, con->src_type, con->src_length,
+                                con->src_max);
+            break;
+        case AT_DEST_MIN:
+            con = va_arg(aq, mapper_db_connection_t*);
+            msg_add_typed_value(m, con->dest_type, con->dest_length,
+                                con->dest_min);
+            break;
+        case AT_DEST_MAX:
+            con = va_arg(aq, mapper_db_connection_t*);
+            msg_add_typed_value(m, con->dest_type, con->dest_length,
+                                con->dest_max);
             break;
         case AT_MUTE:
             i = va_arg(aq, int);
@@ -401,38 +487,16 @@ void mapper_msg_prepare_varargs(lo_message m, va_list aq)
             tab = va_arg(aq, table);
             i = 0;
             {
-                mapper_osc_value_t *val;
-                val = table_value_at_index_p(tab, i++);
-                while(val)
+                mapper_prop_value_t *prop;
+                prop = table_value_at_index_p(tab, i++);
+                while(prop)
                 {
                     const char *k = table_key_at_index(tab, i-1);
                     char key[256] = "@";
-                    char type[] = "s ";
                     strncpy(&key[1], k, 254);
-                    type[1] = val->type;
-
-                    /* Apparently calling lo_message_add simply with
-                     * val->value causes errors, so... */
-                    switch (val->type) {
-                    case 's':
-                    case 'S':
-                        lo_message_add(m, type, key, &val->value.s); break;
-                    case 'f':
-                        lo_message_add(m, type, key, val->value.f); break;
-                    case 'd':
-                        lo_message_add(m, type, key, val->value.d); break;
-                    case 'i':
-                        lo_message_add(m, type, key, val->value.i); break;
-                    case 'h':
-                        lo_message_add(m, type, key, val->value.h); break;
-                    case 't':
-                        lo_message_add(m, type, key, val->value.t); break;
-                    case 'c':
-                        lo_message_add(m, type, key, val->value.c); break;
-                    default:
-                        lo_message_add(m, type, key, 0); break;
-                    }
-                    val = table_value_at_index_p(tab, i++);
+                    lo_message_add_string(m, key);
+                    msg_add_typed_value(m, prop->type, prop->length, prop->value);
+                    prop = table_value_at_index_p(tab, i++);
                 }
             }
             break;
@@ -453,6 +517,9 @@ static void msg_add_lo_arg(lo_message m, char type, lo_arg *a)
     case 'f':
         lo_message_add_float(m, a->f);
         break;
+    case 'd':
+        lo_message_add_double(m, a->d);
+        break;
     case 's':
         lo_message_add_string(m, &a->s);
         break;
@@ -465,7 +532,7 @@ static void msg_add_lo_arg(lo_message m, char type, lo_arg *a)
     }
 }
 
-void mapper_msg_add_osc_value_table(lo_message m, table t)
+void mapper_msg_add_value_table(lo_message m, table t)
 {
     string_table_node_t *n = t->store;
     int i;
@@ -473,8 +540,8 @@ void mapper_msg_add_osc_value_table(lo_message m, table t)
         char keyname[256];
         snprintf(keyname, 256, "@%s", n->key);
         lo_message_add_string(m, keyname);
-        mapper_osc_value_t *v = n->value;
-        msg_add_lo_arg(m, v->type, &v->value);
+        mapper_prop_value_t *v = n->value;
+        msg_add_typed_value(m, v->type, v->length, v->value);
         n++;
     }
 }
@@ -482,6 +549,7 @@ void mapper_msg_add_osc_value_table(lo_message m, table t)
 void mapper_msg_prepare_params(lo_message m,
                                mapper_message_t *msg)
 {
+    int i;
     mapper_msg_param_t pa = (mapper_msg_param_t) 0;
 
     for (pa = (mapper_msg_param_t) 0; pa < N_AT_PARAMS; pa = (mapper_msg_param_t) (pa + 1))
@@ -489,26 +557,23 @@ void mapper_msg_prepare_params(lo_message m,
         if (!msg->values[pa])
             continue;
 
-        lo_arg *a = *msg->values[pa];
+        lo_arg **a = msg->values[pa];
         if (!a)
             continue;
 
         lo_message_add_string(m, mapper_msg_param_strings[pa]);
-        if (pa == AT_RANGE) {
-            msg_add_lo_arg(m, msg->types[pa][0], msg->values[pa][0]);
-            msg_add_lo_arg(m, msg->types[pa][1], msg->values[pa][1]);
-            msg_add_lo_arg(m, msg->types[pa][2], msg->values[pa][2]);
-            msg_add_lo_arg(m, msg->types[pa][3], msg->values[pa][3]);
-        }
-        else {
-            msg_add_lo_arg(m, *msg->types[pa], a);
+
+        for (i = 0; i < msg->lengths[pa]; i++) {
+            msg_add_lo_arg(m, *msg->types[pa], a[i]);
         }
     }
     pa = 0;
     while (msg->extra_args[pa])
     {
         msg_add_lo_arg(m, 's', (lo_arg*) (&msg->extra_args[pa][0]->s));
-        msg_add_lo_arg(m, msg->extra_types[pa], *(msg->extra_args[pa]+1));
+        for (i = 0; i < msg->extra_lengths[pa]; i++) {
+            msg_add_lo_arg(m, msg->extra_types[pa], *(msg->extra_args[pa]+i+1));
+        }
         pa++;
     }
 }
@@ -516,7 +581,17 @@ void mapper_msg_prepare_params(lo_message m,
 void mapper_link_prepare_osc_message(lo_message m,
                                      mapper_link link)
 {
-    mapper_msg_add_osc_value_table(m, link->props.extra);
+    int i;
+
+    // Add link scopes
+    lo_message_add_string(m, mapper_msg_param_strings[AT_SCOPE]);
+    if (link->props.num_scopes) {
+        for (i=0; i<link->props.num_scopes; i++)
+            lo_message_add_string(m, link->props.scope_names[i]);
+    }
+    else
+        lo_message_add_string(m, "none");
+    mapper_msg_add_value_table(m, link->props.extra);
 }
 
 void mapper_connection_prepare_osc_message(lo_message m,
@@ -530,28 +605,31 @@ void mapper_connection_prepare_osc_message(lo_message m,
         lo_message_add_string(m, mapper_msg_param_strings[AT_EXPRESSION]);
         lo_message_add_string(m, con->props.expression);
     }
-    if (con->props.range.known & CONNECTION_RANGE_KNOWN) {
-        lo_message_add_string(m, mapper_msg_param_strings[AT_RANGE]);
-        if (con->props.range.known & CONNECTION_RANGE_SRC_MIN)
-            lo_message_add_float(m, con->props.range.src_min);
-        else
-            lo_message_add_char(m, '-');
 
-        if (con->props.range.known & CONNECTION_RANGE_SRC_MAX)
-            lo_message_add_float(m, con->props.range.src_max);
-        else
-            lo_message_add_char(m, '-');
+    if (con->props.range_known & CONNECTION_RANGE_SRC_MIN) {
+        lo_message_add_string(m, mapper_msg_param_strings[AT_SRC_MIN]);
+        msg_add_typed_value(m, con->props.src_type, con->props.src_length,
+                            con->props.src_min);
+    }
 
-        if (con->props.range.known & CONNECTION_RANGE_DEST_MIN)
-            lo_message_add_float(m, con->props.range.dest_min);
-        else
-            lo_message_add_char(m, '-');
+    if (con->props.range_known & CONNECTION_RANGE_SRC_MAX) {
+        lo_message_add_string(m, mapper_msg_param_strings[AT_SRC_MAX]);
+        msg_add_typed_value(m, con->props.src_type, con->props.src_length,
+                            con->props.src_max);
+    }
+    
+    if (con->props.range_known & CONNECTION_RANGE_DEST_MIN) {
+        lo_message_add_string(m, mapper_msg_param_strings[AT_DEST_MIN]);
+        msg_add_typed_value(m, con->props.dest_type, con->props.dest_length,
+                            con->props.dest_min);
+    }
 
-        if (con->props.range.known & CONNECTION_RANGE_DEST_MAX)
-            lo_message_add_float(m, con->props.range.dest_max);
-        else
-            lo_message_add_char(m, '-');
+    if (con->props.range_known & CONNECTION_RANGE_DEST_MAX) {
+        lo_message_add_string(m, mapper_msg_param_strings[AT_DEST_MAX]);
+        msg_add_typed_value(m, con->props.dest_type, con->props.dest_length,
+                            con->props.dest_max);
     }
+
     lo_message_add_string(m, mapper_msg_param_strings[AT_BOUND_MIN]);
     lo_message_add_string(m, mapper_boundary_action_strings[con->props.bound_min]);
     lo_message_add_string(m, mapper_msg_param_strings[AT_BOUND_MAX]);
@@ -569,7 +647,7 @@ void mapper_connection_prepare_osc_message(lo_message m,
     lo_message_add_string(m, mapper_msg_param_strings[AT_SEND_AS_INSTANCE]);
     lo_message_add_int32(m, con->props.send_as_instance);
 
-    mapper_msg_add_osc_value_table(m, con->props.extra);
+    mapper_msg_add_value_table(m, con->props.extra);
 }
 
 mapper_mode_type mapper_msg_get_direction(mapper_message_t *msg)
@@ -649,3 +727,155 @@ int mapper_msg_get_mute(mapper_message_t *msg)
     else
         return -1;
 }
+
+// Helper for setting property value from different lo_arg types
+int propval_set_from_lo_arg(void *dest, const char dest_type,
+                            lo_arg *src, const char src_type, int index)
+{
+    if (dest_type == 'f') {
+        float *temp = (float*)dest;
+        if (src_type == 'f') {
+            if (temp[index] != src->f) {
+                temp[index] = src->f;
+                return 1;
+            }
+        }
+        else if (src_type == 'i') {
+            if (temp[index] != (float)src->i) {
+                temp[index] = (float)src->i;
+                return 1;
+            }
+        }
+        else if (src_type == 'd') {
+            if (temp[index] != (float)src->d) {
+                temp[index] = (float)src->d;
+                return 1;
+            }
+        }
+        else
+            return -1;
+    }
+    else if (dest_type == 'i') {
+        int *temp = (int*)dest;
+        if (src_type == 'f') {
+            if (temp[index] != (int)src->f) {
+                temp[index] = (int)src->f;
+                return 1;
+            }
+        }
+        else if (src_type == 'i') {
+            if (temp[index] != src->i) {
+                temp[index] = src->i;
+                return 1;
+            }
+        }
+        else if (src_type == 'd') {
+            if (temp[index] != (int)src->d) {
+                temp[index] = (int)src->d;
+                return 1;
+            }
+        }
+        else
+            return -1;
+    }
+    else if (dest_type == 'd') {
+        double *temp = (double*)dest;
+        if (src_type == 'f') {
+            if (temp[index] != (double)src->f) {
+                temp[index] = (double)src->f;
+                return 1;
+            }
+        }
+        else if (src_type == 'i') {
+            if (temp[index] != (double)src->i) {
+                temp[index] = (double)src->i;
+                return 1;
+            }
+        }
+        else if (src_type == 'd') {
+            if (temp[index] != src->d) {
+                temp[index] = src->d;
+                return 1;
+            }
+        }
+        else
+            return -1;
+    }
+    else
+        return -1;
+    return 0;
+}
+
+void mapper_prop_pp(char type, int length, const void *value)
+{
+    int i;
+    if (!value || length < 1)
+        return;
+
+    if (length > 1)
+        printf("[");
+
+    switch (type) {
+        case 's':
+        case 'S':
+        {
+            if (length == 1)
+                printf("'%s', ", (char*)value);
+            else {
+                char **ps = (char**)value;
+                for (i = 0; i < length; i++)
+                    printf("'%s', ", ps[i]);
+            }
+            break;
+        }
+        case 'f':
+        {
+            float *pf = (float*)value;
+            for (i = 0; i < length; i++)
+                printf("%f, ", pf[i]);
+            break;
+        }
+        case 'i':
+        {
+            int *pi = (int*)value;
+            for (i = 0; i < length; i++)
+                printf("%d, ", pi[i]);
+            break;
+        }
+        case 'd':
+        {
+            double *pd = (double*)value;
+            for (i = 0; i < length; i++)
+                printf("%f, ", pd[i]);
+            break;
+        }
+        case 'h':
+        {
+            int64_t *pi = (int64_t*)value;
+            for (i = 0; i < length; i++)
+                printf("%lli, ", pi[i]);
+            break;
+        }
+        case 't':
+        {
+            mapper_timetag_t *pt = (mapper_timetag_t*)value;
+            for (i = 0; i < length; i++)
+                printf("%f, ", mapper_timetag_get_double(pt[i]));
+            break;
+        }
+        case 'c':
+        {
+            char *pi = (char*)value;
+            for (i = 0; i < length; i++)
+                printf("%c, ", pi[i]);
+            break;
+        }
+        default:
+            break;
+    }
+
+    if (length > 1)
+        printf("\b\b]");
+    else
+        printf("\b\b");
+}
diff --git a/src/receiver.c b/src/receiver.c
index 2f119cd..b93ffe7 100644
--- a/src/receiver.c
+++ b/src/receiver.c
@@ -11,31 +11,30 @@
 #include <mapper/mapper.h>
 
 mapper_receiver mapper_receiver_new(mapper_device device, const char *host,
-                                    int port, const char *name, int default_scope)
+                                    int port, const char *name)
 {
     char str[16];
     mapper_receiver r = (mapper_receiver) calloc(1, sizeof(struct _mapper_link));
+    r->props.src_host = strdup(host);
+    r->props.src_port = port;
     sprintf(str, "%d", port);
-    r->props.src_addr = lo_address_new(host, str);
+    r->remote_addr = lo_address_new(host, str);
     r->props.src_name = strdup(name);
     r->props.src_name_hash = crc32(0L, (const Bytef *)name, strlen(name));
     r->props.dest_name = strdup(mdev_name(device));
-    if (default_scope) {
-        r->props.num_scopes = 1;
-        r->props.scope_names = (char **) malloc(sizeof(char *));
-        r->props.scope_names[0] = strdup(name);
-        r->props.scope_hashes = (uint32_t *) malloc(sizeof(uint32_t));
-        r->props.scope_hashes[0] = crc32(0L, (const Bytef *)name, strlen(name));;
-    }
-    else {
-        r->props.num_scopes = 0;
-    }
+
+    r->props.num_scopes = 1;
+    r->props.scope_names = (char **) malloc(sizeof(char *));
+    r->props.scope_names[0] = strdup(name);
+    r->props.scope_hashes = (uint32_t *) malloc(sizeof(uint32_t));
+    r->props.scope_hashes[0] = crc32(0L, (const Bytef *)name, strlen(name));
+
     r->props.extra = table_new();
     r->device = device;
     r->signals = 0;
     r->n_connections = 0;
 
-    if (!r->props.src_addr) {
+    if (!r->remote_addr) {
         mapper_receiver_free(r);
         return 0;
     }
@@ -49,8 +48,10 @@ void mapper_receiver_free(mapper_receiver r)
     if (r) {
         if (r->props.src_name)
             free(r->props.src_name);
-        if (r->props.src_addr)
-            lo_address_free(r->props.src_addr);
+        if (r->props.src_host)
+            free(r->props.src_host);
+        if (r->remote_addr)
+            lo_address_free(r->remote_addr);
         if (r->props.dest_name)
             free(r->props.dest_name);
         while (r->signals && r->signals->connections) {
@@ -69,11 +70,38 @@ void mapper_receiver_free(mapper_receiver r)
 }
 
 /*! Set a router's properties based on message parameters. */
-void mapper_receiver_set_from_message(mapper_receiver rc,
-                                      mapper_message_t *msg)
+int mapper_receiver_set_from_message(mapper_receiver r, mapper_message_t *msg)
 {
-    /* Extra properties. */
-    mapper_msg_add_or_update_extra_params(rc->props.extra, msg);
+    int i, j, num_scopes, updated = 0;
+    lo_arg **a_scopes = mapper_msg_get_param(msg, AT_SCOPE);
+    num_scopes = mapper_msg_get_length(msg, AT_SCOPE);
+
+    if (num_scopes) {
+        // First remove old scopes that are missing
+        for (i=0; i<r->props.num_scopes; i++) {
+            int found = 0;
+            for (j=0; j<num_scopes; j++) {
+                if (strcmp(r->props.scope_names[i], &a_scopes[j]->s) == 0) {
+                    found = 1;
+                    break;
+                }
+            }
+            if (!found) {
+                mapper_db_link_remove_scope(&r->props, r->props.scope_names[i]);
+                updated++;
+            }
+        }
+        // ...then add any new scopes
+        for (i=0; i<num_scopes; i++)
+            updated += (1 - mapper_db_link_add_scope(&r->props, &a_scopes[i]->s));
+
+        if (num_scopes != r->props.num_scopes) {
+            r->props.num_scopes = num_scopes;
+        }
+    }
+
+    updated += mapper_msg_add_or_update_extra_params(r->props.extra, msg);
+    return updated;
 }
 
 static void message_add_coerced_signal_value(lo_message m,
@@ -178,8 +206,8 @@ void mapper_receiver_send_update(mapper_receiver r,
             lo_message m = lo_message_new();
             if (!m)
                 return;
-            lo_message_add_int32(m, map->group);
-            lo_message_add_int32(m, map->remote);
+            lo_message_add_int32(m, map->origin);
+            lo_message_add_int32(m, map->public);
             if (si->has_value)
                 message_add_coerced_signal_value(m, sig, si, c->props.src_type);
             else
@@ -187,7 +215,6 @@ void mapper_receiver_send_update(mapper_receiver r,
             lo_bundle_add_message(b, c->props.query_name, m);
         }
         else {
-            // TODO: need to make one->many instance mapping a connection property
             int sent = 0;
             for (i = 0; i < sig->id_map_length; i++) {
                 mapper_signal_instance si = sig->id_maps[i].instance;
@@ -196,8 +223,8 @@ void mapper_receiver_send_update(mapper_receiver r,
                 lo_message m = lo_message_new();
                 if (!m)
                     return;
-                lo_message_add_int32(m, map->group);
-                lo_message_add_int32(m, map->remote);
+                lo_message_add_int32(m, map->origin);
+                lo_message_add_int32(m, map->public);
                 if (si->has_value)
                     message_add_coerced_signal_value(m, sig, si,
                                                      c->props.src_type);
@@ -217,7 +244,7 @@ void mapper_receiver_send_update(mapper_receiver r,
         }
         c = c->next;
     }
-    lo_send_bundle(r->props.src_addr, b);
+    lo_send_bundle(r->remote_addr, b);
     lo_bundle_free_messages(b);
 }
 
@@ -229,7 +256,7 @@ void mapper_receiver_send_released(mapper_receiver r, mapper_signal sig,
 
     mapper_id_map map = sig->id_maps[instance_index].map;
 
-    if (!mapper_receiver_in_scope(r, map->group))
+    if (!mapper_receiver_in_scope(r, map->origin))
         return;
 
     while (rs) {
@@ -247,15 +274,15 @@ void mapper_receiver_send_released(mapper_receiver r, mapper_signal sig,
         lo_message m = lo_message_new();
         if (!m)
             return;
-        lo_message_add_int32(m, map->group);
-        lo_message_add_int32(m, map->remote);
+        lo_message_add_int32(m, map->origin);
+        lo_message_add_int32(m, map->public);
         lo_message_add_false(m);
         lo_bundle_add_message(b, c->props.src_name, m);
         c = c->next;
     }
 
     if (lo_bundle_count(b))
-        lo_send_bundle_from(r->props.src_addr, r->device->server, b);
+        lo_send_bundle_from(r->remote_addr, r->device->server, b);
 
     lo_bundle_free_messages(b);
 }
@@ -266,18 +293,6 @@ mapper_connection mapper_receiver_add_connection(mapper_receiver r,
                                                  char src_type,
                                                  int src_length)
 {
-    /* Currently, fail if lengths don't match.  TODO: In the future,
-     * we'll have to examine the expression to see if its input and
-     * output lengths are compatible. */
-    if (sig->props.length != src_length) {
-        char n[1024];
-        msig_full_name(sig, n, 1024);
-        trace("rejecting connection %s -> %s%s because lengths "
-              "don't match (not yet supported)\n",
-              n, r->props.src_name, src_name);
-        return 0;
-    }
-
     // find signal in signal connection list
     mapper_receiver_signal rs = r->signals;
     while (rs && rs->signal != sig)
@@ -302,10 +317,17 @@ mapper_connection mapper_receiver_add_connection(mapper_receiver r,
     c->props.dest_type = sig->props.type;
     c->props.dest_length = sig->props.length;
     c->props.mode = MO_UNDEFINED;
-    c->props.expression = strdup("y=x");
+    c->props.expression = 0;
     c->props.bound_min = BA_NONE;
     c->props.bound_max = BA_NONE;
     c->props.muted = 0;
+
+    c->props.src_min = 0;
+    c->props.src_max = 0;
+    c->props.dest_min = 0;
+    c->props.dest_max = 0;
+    c->props.range_known = 0;
+
     c->props.extra = table_new();
 
     int len = strlen(src_name) + 5;
@@ -335,6 +357,14 @@ static void mapper_receiver_free_connection(mapper_receiver r, mapper_connection
             free(c->props.expression);
         if (c->props.query_name)
             free(c->props.query_name);
+        if (c->props.src_min)
+            free(c->props.src_min);
+        if (c->props.src_max)
+            free(c->props.src_max);
+        if (c->props.dest_min)
+            free(c->props.dest_min);
+        if (c->props.dest_max)
+            free(c->props.dest_max);
         table_free(c->props.extra, 1);
         for (i=0; i<c->parent->num_instances; i++) {
             free(c->history[i].value);
@@ -405,6 +435,8 @@ int mapper_receiver_remove_connection(mapper_receiver r,
             rtemp = rtemp->next;
         }
 
+        mapper_timetag_t *tt = &r->device->admin->clock.now;
+        mdev_now(r->device, tt);
         if (count < r->props.num_scopes) {
             // can release instances with untouched scopes
             for (i = 0; i < rs->signal->id_map_length; i++) {
@@ -416,11 +448,16 @@ int mapper_receiver_remove_connection(mapper_receiver r,
                         // scope is used by another link
                         continue;
                     }
-                    if (id_map->map->group == r->props.scope_hashes[j]) {
-                        if (rs->signal->handler)
+                    if (id_map->map->origin == r->props.scope_hashes[j]) {
+                        if (rs->signal->instance_event_handler &&
+                            (rs->signal->instance_event_flags & IN_UPSTREAM_RELEASE)) {
+                            rs->signal->instance_event_handler(rs->signal, &rs->signal->props,
+                                                               id_map->map->local, IN_UPSTREAM_RELEASE,
+                                                               tt);
+                        }
+                        else if (rs->signal->handler)
                             rs->signal->handler(rs->signal, &rs->signal->props,
-                                                id_map->map->local, 0, 0, 0);
-                        // TODO: call instance event handler with IN_DISCONNECTED
+                                                id_map->map->local, 0, 0, tt);
                         continue;
                     }
                 }
@@ -491,76 +528,46 @@ mapper_connection mapper_receiver_find_connection_by_names(mapper_receiver rc,
 
 int mapper_receiver_add_scope(mapper_receiver r, const char *scope)
 {
-    if (!scope)
-        return 1;
-    // Check if scope is already stored for this receiver
-    int i;
-    uint32_t hash = crc32(0L, (const Bytef *)scope, strlen(scope));
-    mapper_db_link props = &r->props;
-    for (i=0; i<props->num_scopes; i++)
-        if (props->scope_hashes[i] == hash)
-            return 1;
-    // not found - add a new scope
-    i = ++props->num_scopes;
-    props->scope_names = realloc(props->scope_names, i * sizeof(char *));
-    props->scope_names[i-1] = strdup(scope);
-    props->scope_hashes = realloc(props->scope_hashes, i * sizeof(uint32_t));
-    props->scope_hashes[i-1] = hash;
-    return 0;
+    return mapper_db_link_add_scope(&r->props, scope);
 }
 
-void mapper_receiver_remove_scope(mapper_receiver receiver, const char *scope)
+int mapper_receiver_remove_scope(mapper_receiver receiver, const char *scope)
 {
-    int i, j;
-    uint32_t hash;
     mapper_device md = receiver->device;
-
-    if (!scope)
-        return;
-
-    hash = crc32(0L, (const Bytef *)scope, strlen(scope));
-
-    mapper_db_link props = &receiver->props;
-    for (i=0; i<props->num_scopes; i++) {
-        if (props->scope_hashes[i] == hash) {
-            free(props->scope_names[i]);
-            for (j=i+1; j<props->num_scopes; j++) {
-                props->scope_names[j-1] = props->scope_names[j];
-                props->scope_hashes[j-1] = props->scope_hashes[j];
-            }
-            props->num_scopes--;
-            props->scope_names = realloc(props->scope_names,
-                                         props->num_scopes * sizeof(char *));
-            props->scope_hashes = realloc(props->scope_hashes,
-                                          props->num_scopes * sizeof(uint32_t));
-            return;
-        }
-    }
+    if (mapper_db_link_remove_scope(&receiver->props, scope))
+        return 1;
 
     /* If there are other incoming links with this scope, do not continue. */
     /* TODO: really we should proceed but with caution: we can release input
      * instances as long as the signals are not mapped from another link with
      * this scope. */
     mapper_receiver rc = md->receivers;
+    uint32_t hash = crc32(0L, (const Bytef *)scope, strlen(scope));
     while (rc) {
         if (rc != receiver && mapper_receiver_in_scope(rc, hash))
-            return;
+            return 0;
         rc = rc->next;
     }
 
     /* Release input instances owned by remote device. */
+    mapper_timetag_t *tt = &md->admin->clock.now;
+    mdev_now(md, tt);
     mapper_receiver_signal rs = receiver->signals;
     while (rs) {
         int i;
         for (i = 0; i < rs->signal->id_map_length; i++) {
             mapper_id_map map = rs->signal->id_maps[i].map;
-            if (map->group == hash) {
-                if (rs->signal->handler) {
+            if (map->origin == hash) {
+                if (rs->signal->instance_event_handler &&
+                    (rs->signal->instance_event_flags & IN_UPSTREAM_RELEASE)) {
+                    rs->signal->instance_event_handler(rs->signal, &rs->signal->props,
+                                                       map->local, IN_UPSTREAM_RELEASE,
+                                                       tt);
+                }
+                else if (rs->signal->handler) {
                     rs->signal->handler(rs->signal, &rs->signal->props,
-                                        map->local, 0, 0, 0);
+                                        map->local, 0, 0, tt);
                 }
-                // TODO: call instance event handler if defined
-                //msig_release_instance_internal(rs->signal, i, 0, MAPPER_NOW);
                 continue;
             }
         }
@@ -573,6 +580,8 @@ void mapper_receiver_remove_scope(mapper_receiver receiver, const char *scope)
      * Likewise, we will not remove instance maps referring to the remote device
      * since local instances may be using them. The maps will be removed
      * automatically once all referring instances have been released. */
+
+    return 0;
 }
 
 int mapper_receiver_in_scope(mapper_receiver r, uint32_t name_hash)
@@ -585,15 +594,11 @@ int mapper_receiver_in_scope(mapper_receiver r, uint32_t name_hash)
 }
 
 mapper_receiver mapper_receiver_find_by_src_address(mapper_receiver r,
-                                                    lo_address src_addr)
+                                                    const char *host,
+                                                    int port)
 {
-    const char *host_to_match = lo_address_get_hostname(src_addr);
-    const char *port_to_match = lo_address_get_port(src_addr);
-
     while (r) {
-        const char *host = lo_address_get_hostname(r->props.src_addr);
-        const char *port = lo_address_get_port(r->props.src_addr);
-        if ((strcmp(host, host_to_match)==0) && (strcmp(port, port_to_match)==0))
+        if (r->props.src_port == port && (strcmp(r->props.src_host, host)==0))
             return r;
         r = r->next;
     }
diff --git a/src/router.c b/src/router.c
index 6fcc690..05cd27a 100644
--- a/src/router.c
+++ b/src/router.c
@@ -16,31 +16,30 @@ static void mapper_router_send_or_bundle_message(mapper_router router,
                                                  mapper_timetag_t tt);
 
 mapper_router mapper_router_new(mapper_device device, const char *host,
-                                int port, const char *name, int default_scope)
+                                int port, const char *name)
 {
     char str[16];
     mapper_router r = (mapper_router) calloc(1, sizeof(struct _mapper_link));
-    sprintf(str, "%d", port);
     r->props.src_name = strdup(mdev_name(device));
-    r->props.dest_addr = lo_address_new(host, str);
+    r->props.dest_host = strdup(host);
+    r->props.dest_port = port;
+    sprintf(str, "%d", port);
+    r->remote_addr = lo_address_new(host, str);
     r->props.dest_name = strdup(name);
     r->props.dest_name_hash = crc32(0L, (const Bytef *)name, strlen(name));
-    if (default_scope) {
-        r->props.num_scopes = 1;
-        r->props.scope_names = (char **) malloc(sizeof(char *));
-        r->props.scope_names[0] = strdup(mdev_name(device));
-        r->props.scope_hashes = (uint32_t *) malloc(sizeof(uint32_t));
-        r->props.scope_hashes[0] = mdev_id(device);
-    }
-    else {
-        r->props.num_scopes = 0;
-    }
+
+    r->props.num_scopes = 1;
+    r->props.scope_names = (char **) malloc(sizeof(char *));
+    r->props.scope_names[0] = strdup(mdev_name(device));
+    r->props.scope_hashes = (uint32_t *) malloc(sizeof(uint32_t));
+    r->props.scope_hashes[0] = mdev_id(device);
+
     r->props.extra = table_new();
     r->device = device;
     r->signals = 0;
     r->n_connections = 0;
 
-    if (!r->props.dest_addr) {
+    if (!r->remote_addr) {
         mapper_router_free(r);
         return 0;
     }
@@ -54,10 +53,12 @@ void mapper_router_free(mapper_router r)
     if (r) {
         if (r->props.src_name)
             free(r->props.src_name);
+        if (r->props.dest_host)
+            free(r->props.dest_host);
         if (r->props.dest_name)
             free(r->props.dest_name);
-        if (r->props.dest_addr)
-            lo_address_free(r->props.dest_addr);
+        if (r->remote_addr)
+            lo_address_free(r->remote_addr);
         while (r->signals && r->signals->connections) {
             // router_signal is freed with last child connection
             mapper_router_remove_connection(r, r->signals->connections);
@@ -79,15 +80,50 @@ void mapper_router_free(mapper_router r)
     }
 }
 
-void mapper_router_set_from_message(mapper_router router,
-                                    mapper_message_t *msg)
+int mapper_router_set_from_message(mapper_router r, mapper_message_t *msg)
 {
-    /* Extra properties. */
-    mapper_msg_add_or_update_extra_params(router->props.extra, msg);
+    int i, j, num_scopes, updated = 0;
+    lo_arg **a_scopes = mapper_msg_get_param(msg, AT_SCOPE);
+    num_scopes = mapper_msg_get_length(msg, AT_SCOPE);
+
+    if (a_scopes && *a_scopes) {
+        if (num_scopes == 1 && strcmp(&a_scopes[0]->s, "none")==0)
+            num_scopes = 0;
+
+        // First remove old scopes that are missing
+        for (i=0; i<r->props.num_scopes; i++) {
+            int found = 0;
+            for (j=0; j<num_scopes; j++) {
+                if (strcmp(r->props.scope_names[i], &a_scopes[j]->s) == 0) {
+                    found = 1;
+                    break;
+                }
+            }
+            if (!found) {
+                mapper_db_link_remove_scope(&r->props,
+                                            r->props.scope_names[i]);
+                updated++;
+            }
+        }
+        // ...then add any new scopes
+        for (i=0; i<num_scopes; i++)
+            updated += (1 - mapper_db_link_add_scope(&r->props,
+                                                     &a_scopes[i]->s));
+
+        if (num_scopes != r->props.num_scopes) {
+            r->props.num_scopes = num_scopes;
+        }
+    }
+    if (updated)
+        updated = 1;
+
+    updated += mapper_msg_add_or_update_extra_params(r->props.extra, msg);
+    return updated;
 }
 
 void mapper_router_num_instances_changed(mapper_router r,
-                                         mapper_signal sig)
+                                         mapper_signal sig,
+                                         int size)
 {
     // check if we have a reference to this signal
     mapper_router_signal rs = r->signals;
@@ -102,21 +138,21 @@ void mapper_router_num_instances_changed(mapper_router r,
         return;
     }
 
-    if (sig->props.num_instances <= rs->num_instances)
+    if (size <= rs->num_instances)
         return;
 
     // Need to allocate more instances
     rs->history = realloc(rs->history, sizeof(struct _mapper_signal_history)
-                          * sig->props.num_instances);
+                          * size);
     int i;
-    for (i=rs->num_instances; i<sig->props.num_instances; i++) {
+    for (i=rs->num_instances; i<size; i++) {
         rs->history[i].type = sig->props.type;
         rs->history[i].length = sig->props.length;
-        rs->history[i].size = sig->props.history_size;
+        rs->history[i].size = rs->history_size;
         rs->history[i].value = calloc(1, msig_vector_bytes(sig)
-                                      * sig->props.history_size);
+                                      * rs->history_size);
         rs->history[i].timetag = calloc(1, sizeof(mapper_timetag_t)
-                                        * sig->props.history_size);
+                                        * rs->history_size);
         rs->history[i].position = -1;
     }
 
@@ -124,8 +160,8 @@ void mapper_router_num_instances_changed(mapper_router r,
     mapper_connection c = rs->connections;
     while (c) {
         c->history = realloc(c->history, sizeof(struct _mapper_signal_history)
-                             * sig->props.num_instances);
-        for (i=rs->num_instances; i<sig->props.num_instances; i++) {
+                             * size);
+        for (i=rs->num_instances; i<size; i++) {
             c->history[i].type = c->props.dest_type;
             c->history[i].length = c->props.dest_length;
             c->history[i].size = c->props.dest_history_size;
@@ -138,7 +174,7 @@ void mapper_router_num_instances_changed(mapper_router r,
         c = c->next;
     }
 
-    rs->num_instances = sig->props.num_instances;
+    rs->num_instances = size;
 }
 
 void mapper_router_process_signal(mapper_router r,
@@ -146,11 +182,10 @@ void mapper_router_process_signal(mapper_router r,
                                   int instance_index,
                                   void *value,
                                   int count,
-                                  mapper_timetag_t tt,
-                                  int flags)
+                                  mapper_timetag_t tt)
 {
     mapper_id_map map = sig->id_maps[instance_index].map;
-    int in_scope = mapper_router_in_scope(r, map->group);
+    int in_scope = mapper_router_in_scope(r, map->origin);
 
     // find the signal connection
     mapper_router_signal rs = r->signals;
@@ -162,12 +197,16 @@ void mapper_router_process_signal(mapper_router r,
     if (!rs)
         return;
 
-    // TODO: need to store histories using a different index?
     int id = sig->id_maps[instance_index].instance->index;
     mapper_connection c;
 
     if (!value) {
         rs->history[id].position = -1;
+        // reset associated input memory for this instance
+        memset(rs->history[id].value, 0, rs->history_size *
+               msig_vector_bytes(rs->signal));
+        memset(rs->history[id].timetag, 0, rs->history_size *
+               sizeof(mapper_timetag_t));
         c = rs->connections;
         while (c) {
             c->history[id].position = -1;
@@ -175,6 +214,11 @@ void mapper_router_process_signal(mapper_router r,
                 (!c->props.send_as_instance || in_scope))
                 mapper_router_send_update(r, c, id, c->props.send_as_instance ?
                                           map : 0, tt, 0);
+            // also need to reset associated output memory
+            memset(c->history[id].value, 0, c->props.dest_history_size *
+                   c->props.dest_length * mapper_type_size(c->props.dest_type));
+            memset(c->history[id].timetag, 0, c->props.dest_history_size *
+                   sizeof(mapper_timetag_t));
 
             c = c->next;
         }
@@ -253,7 +297,7 @@ void mapper_router_send_update(mapper_router r,
                                lo_blob blob)
 {
     int i;
-    if (!r->props.dest_addr)
+    if (!r->remote_addr)
         return;
 
     lo_message m = lo_message_new();
@@ -261,13 +305,14 @@ void mapper_router_send_update(mapper_router r,
         return;
 
     if (id_map) {
-        lo_message_add_int32(m, id_map->group);
-        lo_message_add_int32(m, id_map->remote);
+        lo_message_add_int32(m, id_map->origin);
+        lo_message_add_int32(m, id_map->public);
     }
 
     if (c->history[history_index].position != -1) {
         if (blob) {
             lo_message_add_blob(m, blob);
+            lo_blob_free(blob);
         }
         else if (c->history[history_index].type == 'f') {
             float *v = msig_history_value_pointer(c->history[history_index]);
@@ -320,6 +365,7 @@ int mapper_router_send_query(mapper_router r,
         count++;
         c = c->next;
     }
+    free(response_string);
     return count;
 }
 
@@ -348,7 +394,7 @@ void mapper_router_send_or_bundle_message(mapper_router r,
         // Send message immediately
         lo_bundle b = lo_bundle_new(tt);
         lo_bundle_add_message(b, path, m);
-        lo_send_bundle_from(r->props.dest_addr, r->device->server, b);
+        lo_send_bundle_from(r->remote_addr, r->device->server, b);
         lo_bundle_free_messages(b);
     }
 }
@@ -400,7 +446,7 @@ void mapper_router_send_queue(mapper_router r,
 #ifdef HAVE_LIBLO_BUNDLE_COUNT
         if (lo_bundle_count(q->bundle))
 #endif
-            lo_send_bundle_from(r->props.dest_addr,
+            lo_send_bundle_from(r->remote_addr,
                                 r->device->server, q->bundle);
         lo_bundle_free_messages(q->bundle);
         mapper_router_release_queue(r, q);
@@ -413,18 +459,6 @@ mapper_connection mapper_router_add_connection(mapper_router r,
                                                char dest_type,
                                                int dest_length)
 {
-    /* Currently, fail if lengths don't match.  TODO: In the future,
-     * we'll have to examine the expression to see if its input and
-     * output lengths are compatible. */
-    if (sig->props.length != dest_length) {
-        char n[1024];
-        msig_full_name(sig, n, 1024);
-        trace("rejecting connection %s -> %s%s because lengths "
-              "don't match (not yet supported)\n",
-              n, r->props.dest_name, dest_name);
-        return 0;
-    }
-
     // find signal in router_signal list
     mapper_router_signal rs = r->signals;
     while (rs && rs->signal != sig)
@@ -461,11 +495,18 @@ mapper_connection mapper_router_add_connection(mapper_router r,
     c->props.dest_type = dest_type;
     c->props.dest_length = dest_length;
     c->props.mode = MO_UNDEFINED;
-    c->props.expression = strdup("y=x");
+    c->props.expression = 0;
     c->props.bound_min = BA_NONE;
     c->props.bound_max = BA_NONE;
     c->props.muted = 0;
     c->props.send_as_instance = (rs->num_instances > 1);
+
+    c->props.src_min = 0;
+    c->props.src_max = 0;
+    c->props.dest_min = 0;
+    c->props.dest_max = 0;
+    c->props.range_known = 0;
+
     c->props.extra = table_new();
 
     int len = strlen(dest_name) + 5;
@@ -510,6 +551,14 @@ static void mapper_router_free_connection(mapper_router r,
             free(c->props.expression);
         if (c->props.query_name)
             free(c->props.query_name);
+        if (c->props.src_min)
+            free(c->props.src_min);
+        if (c->props.src_max)
+            free(c->props.src_max);
+        if (c->props.dest_min)
+            free(c->props.dest_min);
+        if (c->props.dest_max)
+            free(c->props.dest_max);
         table_free(c->props.extra, 1);
         for (i=0; i<c->parent->num_instances; i++) {
             free(c->history[i].value);
@@ -587,78 +636,24 @@ mapper_connection mapper_router_find_connection_by_names(mapper_router rt,
         return c;
 }
 
-int mapper_router_add_scope(mapper_router router, const char *scope)
-{
-    if (!scope)
-        return 1;
-    // Check if scope is already stored for this router
-    int i;
-    uint32_t hash = crc32(0L, (const Bytef *)scope, strlen(scope));
-    mapper_db_link props = &router->props;
-    for (i=0; i<props->num_scopes; i++)
-        if (props->scope_hashes[i] == hash)
-            return 1;
-    // not found - add a new scope
-    i = ++props->num_scopes;
-    props->scope_names = realloc(props->scope_names, i * sizeof(char *));
-    props->scope_names[i-1] = strdup(scope);
-    props->scope_hashes = realloc(props->scope_hashes, i * sizeof(uint32_t));
-    props->scope_hashes[i-1] = hash;
-    return 0;
-}
-
-void mapper_router_remove_scope(mapper_router router, const char *scope)
-{
-    int i, j;
-    uint32_t hash;
-
-    if (!scope)
-        return;
-
-    hash = crc32(0L, (const Bytef *)scope, strlen(scope));
-
-    mapper_db_link props = &router->props;
-    for (i=0; i<props->num_scopes; i++) {
-        if (props->scope_hashes[i] == hash) {
-            free(props->scope_names[i]);
-            for (j=i+1; j<props->num_scopes; j++) {
-                props->scope_names[j-1] = props->scope_names[j];
-                props->scope_hashes[j-1] = props->scope_hashes[j];
-            }
-            props->num_scopes--;
-            props->scope_names = realloc(props->scope_names,
-                                         props->num_scopes * sizeof(char *));
-            props->scope_hashes = realloc(props->scope_hashes,
-                                          props->num_scopes * sizeof(uint32_t));
-            return;
-        }
-    }
-
-    /* Here we could release mapped signal instances with this scope,
-     * but we will let the receiver-side handle it instead. */
-}
-
 int mapper_router_in_scope(mapper_router router, uint32_t name_hash)
 {
     int i;
     for (i=0; i<router->props.num_scopes; i++)
-        if (router->props.scope_hashes[i] == name_hash)
+        if (router->props.scope_hashes[i] == name_hash ||
+            router->props.scope_hashes[i] == 0)
             return 1;
     return 0;
 }
 
-mapper_router mapper_router_find_by_dest_address(mapper_router router,
-                                                 lo_address dest_addr)
+mapper_router mapper_router_find_by_dest_address(mapper_router r,
+                                                 const char *host,
+                                                 int port)
 {
-    const char *host_to_match = lo_address_get_hostname(dest_addr);
-    const char *port_to_match = lo_address_get_port(dest_addr);
-
-    while (router) {
-        const char *host = lo_address_get_hostname(router->props.dest_addr);
-        const char *port = lo_address_get_port(router->props.dest_addr);
-        if ((strcmp(host, host_to_match)==0) && (strcmp(port, port_to_match)==0))
-            return router;
-        router = router->next;
+    while (r) {
+        if (r->props.dest_port == port && (strcmp(r->props.dest_host, host)==0))
+            return r;
+        r = r->next;
     }
     return 0;
 }
diff --git a/src/signal.c b/src/signal.c
index 4f504ad..0c33c6a 100644
--- a/src/signal.c
+++ b/src/signal.c
@@ -23,8 +23,28 @@ static int msig_get_oldest_active_instance_internal(mapper_signal sig);
 
 static int msig_get_newest_active_instance_internal(mapper_signal sig);
 
-static void msig_free_instance(mapper_signal sig,
-                               mapper_signal_instance si);
+static int compare_ids(const void *l, const void *r)
+{
+    if ((*(mapper_signal_instance *)l)->id <  (*(mapper_signal_instance *)r)->id) return -1;
+    if ((*(mapper_signal_instance *)l)->id == (*(mapper_signal_instance *)r)->id) return 0;
+    else return 1;
+}
+
+static mapper_signal_instance find_instance_by_id(mapper_signal sig, int instance_id)
+{
+    if (!sig->props.num_instances)
+        return 0;
+
+    mapper_signal_instance_t si;
+    mapper_signal_instance sip = &si;
+    si.id = instance_id;
+
+    mapper_signal_instance *sipp = bsearch(&sip, sig->instances, sig->props.num_instances,
+                                           sizeof(mapper_signal_instance), compare_ids);
+    if (sipp && *sipp)
+        return *sipp;
+    return 0;
+}
 
 mapper_signal msig_new(const char *name, int length, char type,
                        int is_output, const char *unit,
@@ -34,7 +54,7 @@ mapper_signal msig_new(const char *name, int length, char type,
 {
     if (length < 1) return 0;
     if (!name) return 0;
-    if (type != 'f' && type != 'i')
+    if (type != 'f' && type != 'i' && type != 'd')
         return 0;
 
     mapper_signal sig =
@@ -48,7 +68,7 @@ mapper_signal msig_new(const char *name, int length, char type,
     msig_set_maximum(sig, maximum);
 
     // Reserve one instance to start
-    msig_reserve_instances(sig, 1);
+    msig_reserve_instances(sig, 1, 0, 0);
 
     // Reserve one instance id map
     sig->id_map_length = 1;
@@ -69,12 +89,12 @@ void msig_free(mapper_signal sig)
         }
     }
     free(sig->id_maps);
-    mapper_signal_instance si;
-    while (sig->reserve_instances) {
-        si = sig->reserve_instances;
-        sig->reserve_instances = si->next;
-        msig_free_instance(sig, si);
+    for (i = 0; i < sig->props.num_instances; i++) {
+        if(sig->instances[i]->value)
+            free(sig->instances[i]->value);
+        free(sig->instances[i]);
     }
+    free(sig->instances);
     if (sig->props.minimum)
         free(sig->props.minimum);
     if (sig->props.maximum)
@@ -97,7 +117,7 @@ void msig_update(mapper_signal sig, void *value,
     mapper_timetag_t *ttp;
     if (memcmp(&tt, &MAPPER_NOW, sizeof(mapper_timetag_t))==0) {
         ttp = &sig->device->admin->clock.now;
-        mdev_timetag_now(sig->device, ttp);
+        mdev_now(sig->device, ttp);
     }
     else
         ttp = &tt;
@@ -131,7 +151,7 @@ void msig_update_int(mapper_signal sig, int value)
 #endif
 
     mapper_timetag_t *tt = &sig->device->admin->clock.now;
-    mdev_timetag_now(sig->device, tt);
+    mdev_now(sig->device, tt);
 
     int index = 0;
     if (!sig->id_maps[0].instance)
@@ -162,7 +182,38 @@ void msig_update_float(mapper_signal sig, float value)
 #endif
 
     mapper_timetag_t *tt = &sig->device->admin->clock.now;
-    mdev_timetag_now(sig->device, tt);
+    mdev_now(sig->device, tt);
+
+    int index = 0;
+    if (!sig->id_maps[0].instance)
+        index = msig_get_instance_with_local_id(sig, 0, 0, tt);
+    msig_update_internal(sig, index, &value, 1, *tt);
+}
+
+void msig_update_double(mapper_signal sig, double value)
+{
+    if (!sig)
+        return;
+
+#ifdef DEBUG
+    if (sig->props.type != 'd') {
+        trace("called msig_update_double() on non-double signal!\n");
+        return;
+    }
+
+    if (sig->props.length != 1) {
+        trace("called msig_update_double() on non-scalar signal!\n");
+        return;
+    }
+
+    if (!sig->device) {
+        trace("signal does not have a device in msig_update_double().\n");
+        return;
+    }
+#endif
+
+    mapper_timetag_t *tt = &sig->device->admin->clock.now;
+    mdev_now(sig->device, tt);
 
     int index = 0;
     if (!sig->id_maps[0].instance)
@@ -205,14 +256,14 @@ int msig_find_instance_with_local_id(mapper_signal sig,
     return -1;
 }
 
-int msig_find_instance_with_remote_ids(mapper_signal sig, int group,
-                                       int id, int flags)
+int msig_find_instance_with_remote_ids(mapper_signal sig, int origin,
+                                       int public_id, int flags)
 {
     int i;
     for (i = 0; i < sig->id_map_length; i++) {
         if (!sig->id_maps[i].map)
             continue;
-        if (sig->id_maps[i].map->group == group && sig->id_maps[i].map->remote == id) {
+        if (sig->id_maps[i].map->origin == origin && sig->id_maps[i].map->public == public_id) {
             if (sig->id_maps[i].status & ~flags)
                 return -1;
             else
@@ -222,7 +273,18 @@ int msig_find_instance_with_remote_ids(mapper_signal sig, int group,
     return -1;
 }
 
-int msig_get_instance_with_local_id(mapper_signal sig, int id,
+static mapper_signal_instance get_reserved_instance(mapper_signal sig)
+{
+    int i;
+    for (i = 0; i < sig->props.num_instances; i++) {
+        if (!sig->instances[i]->is_active) {
+            return sig->instances[i];
+        }
+    }
+    return 0;
+}
+
+int msig_get_instance_with_local_id(mapper_signal sig, int instance_id,
                                     int flags, mapper_timetag_t *tt)
 {
     if (!sig)
@@ -233,7 +295,7 @@ int msig_get_instance_with_local_id(mapper_signal sig, int id,
     mapper_signal_instance si;
     int i;
     for (i = 0; i < sig->id_map_length; i++) {
-        if (maps[i].instance && maps[i].map->local == id) {
+        if (maps[i].instance && maps[i].map->local == instance_id) {
             if (maps[i].status & ~flags)
                 return -1;
             else {
@@ -243,13 +305,13 @@ int msig_get_instance_with_local_id(mapper_signal sig, int id,
     }
 
     // check if device has record of id map
-    mapper_id_map map = mdev_find_instance_id_map_by_local(sig->device, id);
+    mapper_id_map map = mdev_find_instance_id_map_by_local(sig->device, instance_id);
 
     // no instance with that id exists - need to try to activate instance and create new id map
-    if ((si = sig->reserve_instances)) {
+    if ((si = find_instance_by_id(sig, instance_id))) {
         if (!map) {
             // Claim id map locally, add id map to device and link from signal
-            map = mdev_add_instance_id_map(sig->device, id, mdev_id(sig->device),
+            map = mdev_add_instance_id_map(sig->device, instance_id, mdev_id(sig->device),
                                            sig->device->id_counter++);
             map->refcount_local = 1;
         }
@@ -258,12 +320,11 @@ int msig_get_instance_with_local_id(mapper_signal sig, int id,
         }
 
         // store pointer to device map in a new signal map
-        sig->reserve_instances = si->next;
         msig_init_instance(si);
         i = msig_add_id_map(sig, si, map);
         if (sig->instance_event_handler &&
             (sig->instance_event_flags & IN_NEW)) {
-            sig->instance_event_handler(sig, &sig->props, id, IN_NEW, tt);
+            sig->instance_event_handler(sig, &sig->props, instance_id, IN_NEW, tt);
         }
         return i;
     }
@@ -295,42 +356,40 @@ int msig_get_instance_with_local_id(mapper_signal sig, int id,
         return -1;
 
     // try again
-    if ((si = sig->reserve_instances)) {
+    if ((si = find_instance_by_id(sig, instance_id))) {
         if (!map) {
             // Claim id map locally add id map to device and link from signal
-            map = mdev_add_instance_id_map(sig->device, id, mdev_id(sig->device),
+            map = mdev_add_instance_id_map(sig->device, instance_id, mdev_id(sig->device),
                                            sig->device->id_counter++);
             map->refcount_local = 1;
         }
         else {
             map->refcount_local++;
         }
-        sig->reserve_instances = si->next;
         msig_init_instance(si);
         i = msig_add_id_map(sig, si, map);
         if (sig->instance_event_handler &&
             (sig->instance_event_flags & IN_NEW)) {
-            sig->instance_event_handler(sig, &sig->props, id, IN_NEW, tt);
+            sig->instance_event_handler(sig, &sig->props, instance_id, IN_NEW, tt);
         }
         return i;
     }
     return -1;
 }
 
-int msig_get_instance_with_remote_ids(mapper_signal sig, int group, int id,
+int msig_get_instance_with_remote_ids(mapper_signal sig, int origin, int public_id,
                                       int flags, mapper_timetag_t *tt)
 {
-    // If the map pointer is null, we need to create a new map if necessary
     if (!sig)
         return 0;
-    
+
     mapper_signal_id_map_t *maps = sig->id_maps;
-    
+
     mapper_signal_instance si;
     int i;
     for (i = 0; i < sig->id_map_length; i++) {
-        if (maps[i].instance && maps[i].map->group == group
-            && maps[i].map->remote == id) {
+        if (maps[i].instance && maps[i].map->origin == origin
+            && maps[i].map->public == public_id) {
             if (maps[i].status & ~flags)
                 return -1;
             else {
@@ -339,28 +398,52 @@ int msig_get_instance_with_remote_ids(mapper_signal sig, int group, int id,
         }
     }
 
-    mapper_id_map map = mdev_find_instance_id_map_by_remote(sig->device, group, id);
-
-    // no ID-mapped instance exists - need to try to activate instance and create new ID map
-    if ((si = sig->reserve_instances)) {
-        if (!map) {
-            // add id map to device
-            map = mdev_add_instance_id_map(sig->device, si->index, group, id);
+    // check if the device already has a map for this remote
+    mapper_id_map map = mdev_find_instance_id_map_by_remote(sig->device, origin, public_id);
+    if (!map) {
+        /* Here we still risk creating conflicting maps if two signals are updated asynchronously.
+         * This is easy to avoid by not allowing a local id to be used with multiple active remote
+         * maps, however users may wish to create devices with multiple object classes which do not
+         * require mutual instance id synchronization - e.g. instance 1 of object class A is not
+         * related to instance 1 of object B. */
+        // TODO: add object groups for explictly sharing id maps
+
+        if ((si = get_reserved_instance(sig))) {
+            map = mdev_add_instance_id_map(sig->device, si->id, origin, public_id);
             map->refcount_remote = 1;
+
+            si->is_active = 1;
+            msig_init_instance(si);
+            i = msig_add_id_map(sig, si, map);
+            if (sig->instance_event_handler &&
+                (sig->instance_event_flags & IN_NEW)) {
+                sig->instance_event_handler(sig, &sig->props, si->id, IN_NEW, tt);
+            }
+            return i;
         }
-        else {
-            map->refcount_remote++;
+    }
+    else {
+        si = find_instance_by_id(sig, map->local);
+        if (!si) {
+            // TODO: Once signal groups are explicit, allow re-mapping to another instance if possible.
+            trace("Signal %s has no instance %i available.\n", sig->props.name, map->local);
+            return -1;
         }
-        sig->reserve_instances = si->next;
-        msig_init_instance(si);
-        i = msig_add_id_map(sig, si, map);
-        if (sig->instance_event_handler &&
-            (sig->instance_event_flags & IN_NEW)) {
-            sig->instance_event_handler(sig, &sig->props, si->index, IN_NEW, tt);
+        else if (!si->is_active) {
+            si->is_active = 1;
+            msig_init_instance(si);
+            i = msig_add_id_map(sig, si, map);
+            map->refcount_remote++;
+
+            if (sig->instance_event_handler &&
+                (sig->instance_event_flags & IN_NEW)) {
+                sig->instance_event_handler(sig, &sig->props, si->id, IN_NEW, tt);
+            }
+            return i;
         }
-        return i;
     }
 
+    // try releasing instance in use
     if (sig->instance_event_handler &&
         (sig->instance_event_flags & IN_OVERFLOW)) {
         // call instance event handler
@@ -388,79 +471,131 @@ int msig_get_instance_with_remote_ids(mapper_signal sig, int group, int id,
         return -1;
 
     // try again
-    if ((si = sig->reserve_instances)) {
-        if (!map) {
-            // add id map to device
-            map = mdev_add_instance_id_map(sig->device, si->index, group, id);
+    if (!map) {
+        if ((si = get_reserved_instance(sig))) {
+            map = mdev_add_instance_id_map(sig->device, si->id, origin, public_id);
             map->refcount_remote = 1;
+
+            si->is_active = 1;
+            msig_init_instance(si);
+            i = msig_add_id_map(sig, si, map);
+            if (sig->instance_event_handler &&
+                (sig->instance_event_flags & IN_NEW)) {
+                sig->instance_event_handler(sig, &sig->props, si->id, IN_NEW, tt);
+            }
+            return i;
         }
-        else {
-            map->refcount_remote++;
+    }
+    else {
+        si = find_instance_by_id(sig, map->local);
+        if (!si) {
+            trace("Signal %s has no instance %i available.", sig->props.name, map->local);
+            return -1;
         }
-        sig->reserve_instances = si->next;
-        msig_init_instance(si);
-        i = msig_add_id_map(sig, si, map);
-        if (sig->instance_event_handler &&
-            (sig->instance_event_flags & IN_NEW)) {
-            sig->instance_event_handler(sig, &sig->props, si->index, IN_NEW, tt);
+        if (si) {
+            if (si->is_active) {
+                return -1;
+            }
+            si->is_active = 1;
+            msig_init_instance(si);
+            i = msig_add_id_map(sig, si, map);
+            map->refcount_remote++;
+
+            if (sig->instance_event_handler &&
+                (sig->instance_event_flags & IN_NEW)) {
+                sig->instance_event_handler(sig, &sig->props, si->id, IN_NEW, tt);
+            }
+            return i;
         }
-        return i;
     }
     return -1;
 }
 
-void msig_reserve_instances(mapper_signal sig, int num)
+static int msig_reserve_instance_internal(mapper_signal sig, int *id,
+                                          void *user_data)
 {
-    if (!sig || num <= 0)
-        return;
-    int available = MAX_INSTANCES - sig->props.num_instances;
-    if (num > available)
-        num = available;
-    int i, j, index = -1;
-    for (i = 0; i < num; i++) {
-        mapper_signal_instance si = (mapper_signal_instance) calloc(1,
-                                    sizeof(struct _mapper_signal_instance));
-        si->value = calloc(1, msig_vector_bytes(sig));
-        si->has_value = 0;
-        if (index >= sig->props.num_instances) {
-            si->index = index++;
-        }
-        else {
-            // find lowest unused index in active and reserve lists
-            mapper_signal_instance temp;
-            int index_found = 0;
-            while (!index_found) {
-                index++;
-                index_found = 1;
-                for (j = 0; j < sig->id_map_length; j++) {
-                    if (!sig->id_maps[j].instance)
-                        continue;
-                    if (sig->id_maps[j].instance->index == index) {
-                        index_found = 0;
-                        break;
-                    }
-                }
-                if (index_found) {
-                    temp = sig->reserve_instances;
-                    while (temp) {
-                        if (temp->index == index) {
-                            index_found = 0;
-                            break;
-                        }
-                        temp = temp->next;
-                    }
+    if (!sig || sig->props.num_instances >= MAX_INSTANCES)
+        return -1;
+
+    int i, lowest, found;
+    mapper_signal_instance si;
+
+    // check if instance with this id already exists! If so, stop here.
+    if (id && find_instance_by_id(sig, *id))
+        return -1;
+
+    // reallocate array of instances
+    sig->instances = realloc(sig->instances,
+                             sizeof(mapper_signal_instance)
+                             * (sig->props.num_instances+1));
+    sig->instances[sig->props.num_instances] =
+        (mapper_signal_instance) calloc(1, sizeof(struct _mapper_signal_instance));
+    si = sig->instances[sig->props.num_instances];
+    si->value = calloc(1, msig_vector_bytes(sig));
+    si->has_value = 0;
+
+    if (id)
+        si->id = *id;
+    else {
+        // find lowest unused positive id
+        lowest = -1, found = 0;
+        while (!found) {
+            lowest++;
+            found = 1;
+            for (i = 0; i < sig->props.num_instances; i++) {
+                if (sig->instances[i]->id == lowest) {
+                    found = 0;
+                    break;
                 }
             }
-            si->index = index++;
         }
-        msig_init_instance(si);
-        si->user_data = 0;
+        si->id = lowest;
+    }
+    // find lowest unused positive index
+    lowest = -1, found = 0;
+    while (!found) {
+        lowest++;
+        found = 1;
+        for (i = 0; i < sig->props.num_instances; i++) {
+            if (sig->instances[i]->index == lowest) {
+                found = 0;
+                break;
+            }
+        }
+    }
+    si->index = lowest;
+
+    msig_init_instance(si);
+    si->user_data = user_data;
 
-        si->next = sig->reserve_instances;
-        sig->reserve_instances = si;
+    sig->props.num_instances ++;
+    qsort(sig->instances, sig->props.num_instances,
+          sizeof(mapper_signal_instance), compare_ids);
+
+    // return largest index
+    int highest = -1;
+    for (i = 0; i < sig->props.num_instances; i++) {
+        if (sig->instances[i]->index > highest)
+            highest = sig->instances[i]->index;
     }
-    sig->props.num_instances += num;
-    mdev_num_instances_changed(sig->device, sig);
+
+    return highest;
+}
+
+int msig_reserve_instances(mapper_signal sig, int num, int *ids, void **user_data)
+{
+    int i, count = 0, highest = -1;
+    for (i = 0; i < num; i++) {
+        int result = msig_reserve_instance_internal(sig, ids ? &ids[i] : 0,
+                                                    user_data ? user_data[i] : 0);
+        if (result == -1)
+            continue;
+        highest = result;
+        count++;
+    }
+    if (highest != -1)
+        mdev_num_instances_changed(sig->device, sig, highest);
+    return count;
 }
 
 void msig_update_instance(mapper_signal sig, int instance_id,
@@ -560,7 +695,7 @@ static void msig_update_internal(mapper_signal sig,
      * and size. */
 
     if (value) {
-        if (count==0) count=1;
+        if (count<=0) count=1;
         size_t n = msig_vector_bytes(sig);
         memcpy(si->value, value + n*(count-1), n);
         si->has_value = 1;
@@ -570,7 +705,7 @@ static void msig_update_internal(mapper_signal sig,
     }
 
     if (memcmp(&tt, &MAPPER_NOW, sizeof(mapper_timetag_t))==0)
-        mdev_timetag_now(sig->device, &si->timetag);
+        mdev_now(sig->device, &si->timetag);
     else
         memcpy(&si->timetag, &tt, sizeof(mapper_timetag_t));
 
@@ -604,7 +739,7 @@ void msig_release_instance_internal(mapper_signal sig,
     mapper_timetag_t *ttp;
     if (memcmp(&tt, &MAPPER_NOW, sizeof(mapper_timetag_t))==0) {
         ttp = &sig->device->admin->clock.now;
-        mdev_timetag_now(sig->device, ttp);
+        mdev_now(sig->device, ttp);
     }
     else
         ttp = &tt;
@@ -628,50 +763,42 @@ void msig_release_instance_internal(mapper_signal sig,
     }
 
     // Put instance back in reserve list
-    smap->instance->next = sig->reserve_instances;
-    sig->reserve_instances = smap->instance;
+    smap->instance->is_active = 0;
     smap->instance = 0;
 }
 
-void msig_remove_instance(mapper_signal sig,
-                          mapper_signal_instance si)
+void msig_remove_instance(mapper_signal sig, int instance_id)
 {
-    if (!si) return;
+    if (!sig) return;
 
-    // Remove signal instance
     int i;
-    for (i = 0; i < sig->id_map_length; i++) {
-        if (sig->id_maps[i].instance == si) {
-            // First release instance
-            mapper_timetag_t tt = sig->device->admin->clock.now;
-            mdev_timetag_now(sig->device, &tt);
-            msig_release_instance_internal(sig, i, tt);
-            msig_free_instance(sig, si);
-            sig->id_maps[i].instance = 0;
-            --sig->props.num_instances;
-            return;
-        }
-    }
-    mapper_signal_instance *msi = &sig->reserve_instances;
-    while (*msi) {
-        if (*msi == si) {
-            *msi = si->next;
-            --sig->props.num_instances;
-            msig_free_instance(sig, si);
-            return;
+    for (i = 0; i < sig->props.num_instances; i++) {
+        if (sig->instances[i]->id == instance_id) {
+            if (sig->instances[i]->is_active) {
+                // First release instance
+                mapper_timetag_t tt = sig->device->admin->clock.now;
+                mdev_now(sig->device, &tt);
+                msig_release_instance_internal(sig, i, tt);
+            }
+            break;
         }
-        msi = &(*msi)->next;
     }
-}
 
-static void msig_free_instance(mapper_signal sig,
-                               mapper_signal_instance si)
-{
-    if (!si)
+    if (i == sig->props.num_instances)
         return;
-    if (si->value)
-        free(si->value);
-    free(si);
+
+    if (sig->instances[i]->value)
+        free(sig->instances[i]->value);
+    free(sig->instances[i]);
+    i++;
+    for (; i < sig->props.num_instances; i++) {
+        sig->instances[i-1] = sig->instances[i];
+    }
+    --sig->props.num_instances;
+    sig->instances = realloc(sig->instances,
+                             sizeof(mapper_signal_instance) * sig->props.num_instances);
+
+    // TODO: could also realloc signal value histories
 }
 
 static void *msig_instance_value_internal(mapper_signal sig,
@@ -691,7 +818,8 @@ void *msig_instance_value(mapper_signal sig,
                           int instance_id,
                           mapper_timetag_t *timetag)
 {
-    int index = msig_find_instance_with_local_id(sig, instance_id, 0);
+    int index = msig_find_instance_with_local_id(sig, instance_id,
+                                                 IN_RELEASED_REMOTELY);
     if (index < 0)
         return 0;
     return msig_instance_value_internal(sig, index, timetag);
@@ -699,20 +827,22 @@ void *msig_instance_value(mapper_signal sig,
 
 void msig_match_instances(mapper_signal from, mapper_signal to, int instance_id)
 {
+    // TODO: remove this function
     if (from == to)
         return;
 
     // Find "from" instance
-    int index = msig_find_instance_with_local_id(from, instance_id, 0);
+    int index = msig_find_instance_with_local_id(from, instance_id,
+                                                 IN_RELEASED_REMOTELY);
     if (index < 0)
         return;
 
     mapper_timetag_t tt = from->device->admin->clock.now;
-    mdev_timetag_now(from->device, &tt);
+    mdev_now(from->device, &tt);
 
     // Get "to" instance with same map
-    msig_get_instance_with_remote_ids(to, from->id_maps[index].map->group,
-                                      from->id_maps[index].map->remote, 0,
+    msig_get_instance_with_remote_ids(to, from->id_maps[index].map->origin,
+                                      from->id_maps[index].map->public, 0,
                                       &tt);
 }
 
@@ -732,13 +862,12 @@ int msig_num_reserved_instances(mapper_signal sig)
 {
     if (!sig)
         return -1;
-    mapper_signal_instance si = sig->reserve_instances;
-    int i = 0;
-    while (si) {
-        i++;
-        si = si->next;
+    int i, j = 0;
+    for (i = 0; i < sig->props.num_instances; i++) {
+        if (!sig->instances[i]->is_active)
+            j++;
     }
-    return i;
+    return j;
 }
 
 int msig_active_instance_id(mapper_signal sig, int index)
@@ -782,6 +911,7 @@ void msig_set_instance_event_callback(mapper_signal sig,
     }
 
     sig->instance_event_handler = h;
+    // TODO: use separate user_data for instance event callback?
     sig->props.user_data = user_data;
 
     if (flags & IN_DOWNSTREAM_RELEASE) {
@@ -805,20 +935,18 @@ void msig_set_instance_data(mapper_signal sig,
                             int instance_id,
                             void *user_data)
 {
-    mapper_timetag_t tt = sig->device->admin->clock.now;
-    mdev_timetag_now(sig->device, &tt);
-
-    int index = msig_get_instance_with_local_id(sig, instance_id, 0, &tt);
-    if (index >= 0)
-        sig->id_maps[index].instance->user_data = user_data;
+    mapper_signal_instance si = find_instance_by_id(sig, instance_id);
+    if (si)
+        si->user_data = user_data;
 }
 
 void *msig_get_instance_data(mapper_signal sig,
                              int instance_id)
 {
-    int index = msig_find_instance_with_local_id(sig, instance_id, 0);
-    if (index >= 0)
-        return sig->id_maps[index].instance->user_data;
+    mapper_signal_instance si = find_instance_by_id(sig, instance_id);
+    if (si)
+        return si->user_data;
+
     return 0;
 }
 
@@ -880,12 +1008,8 @@ void msig_set_minimum(mapper_signal sig, void *minimum)
 {
     if (minimum) {
         if (!sig->props.minimum)
-            sig->props.minimum = (mapper_signal_value_t *)
-            malloc(sizeof(mapper_signal_value_t));
-        if (sig->props.type == 'f')
-            sig->props.minimum->f = *(float*)minimum;
-        else if (sig->props.type == 'i')
-            sig->props.minimum->i32 = *(int*)minimum;
+            sig->props.minimum = malloc(msig_vector_bytes(sig));
+        memcpy(sig->props.minimum, minimum, msig_vector_bytes(sig));
     }
     else {
         if (sig->props.minimum)
@@ -898,12 +1022,8 @@ void msig_set_maximum(mapper_signal sig, void *maximum)
 {
     if (maximum) {
         if (!sig->props.maximum)
-            sig->props.maximum = (mapper_signal_value_t *)
-            malloc(sizeof(mapper_signal_value_t));
-        if (sig->props.type == 'f')
-            sig->props.maximum->f = *(float*)maximum;
-        else if (sig->props.type == 'i')
-            sig->props.maximum->i32 = *(int*)maximum;
+            sig->props.maximum = malloc(msig_vector_bytes(sig));
+        memcpy(sig->props.maximum, maximum, msig_vector_bytes(sig));
     }
     else {
         if (sig->props.maximum)
@@ -923,10 +1043,57 @@ mapper_db_signal msig_properties(mapper_signal sig)
 }
 
 void msig_set_property(mapper_signal sig, const char *property,
-                       lo_type type, lo_arg *value)
+                       char type, void *value, int length)
 {
-    mapper_table_add_or_update_osc_value(sig->props.extra,
-                                         property, type, value);
+    if (strcmp(property, "name") == 0 ||
+        strcmp(property, "type") == 0 ||
+        strcmp(property, "length") == 0)
+        return;
+
+    if (strcmp(property, "min") == 0 ||
+        strcmp(property, "minimum") == 0) {
+        if (!length || !value)
+            msig_set_minimum(sig, 0);
+        else if (length == sig->props.length && type == sig->props.type)
+            msig_set_minimum(sig, value);
+        // TODO: if types differ need to cast entire vector
+        return;
+    }
+    else if (strcmp(property, "max") == 0 ||
+             strcmp(property, "maximum") == 0) {
+        if (!length || !value)
+            msig_set_maximum(sig, 0);
+        else if (length == sig->props.length && type == sig->props.type)
+            msig_set_maximum(sig, value);
+        // TODO: if types differ need to cast entire vector
+        return;
+    }
+    else if ((strcmp(property, "unit") == 0 ||
+             strcmp(property, "units") == 0) &&
+             (type == 's' || type == 'S')) {
+        if (!length || !value) {
+            if (sig->props.unit) {
+                free(sig->props.unit);
+                sig->props.unit = 0;
+            }
+            return;
+        }
+        if (!sig->props.unit || strcmp(sig->props.unit, (char*)value)) {
+            sig->props.unit = realloc(sig->props.unit, strlen((char*)value)+1);
+            strcpy(sig->props.unit, (char*)value);
+        }
+        return;
+    }
+    else if (strcmp(property, "value") == 0) {
+        if (!length || !value)
+            msig_update(sig, 0, 0, MAPPER_NOW);
+        else if (length == sig->props.length || type == sig->props.type)
+            msig_update(sig, value, 1, MAPPER_NOW);
+        return;
+    }
+
+    mapper_table_add_or_update_typed_value(sig->props.extra, property,
+                                           type, value, length);
 }
 
 void msig_remove_property(mapper_signal sig, const char *property)
diff --git a/src/table.c b/src/table.c
index bab6776..10a320f 100644
--- a/src/table.c
+++ b/src/table.c
@@ -23,27 +23,41 @@ table table_new()
 
 void table_free(table t, int free_values)
 {
-    int i;
+    int i, j;
     for (i=0; i<t->len; i++) {
         if (t->store[i].key)
             free((char*)t->store[i].key);
-        if (free_values && t->store[i].value)
+        if (free_values && t->store[i].value) {
+            if (t->store[i].is_prop) {
+                mapper_prop_value_t *prop = t->store[i].value;
+                if ((prop->type == 's' || prop->type == 'S')
+                    && prop->length > 1) {
+                    char **vals = (char**)prop->value;
+                    for (j = 0; j < prop->length; j++) {
+                        if (vals[j])
+                            free(vals[j]);
+                    }
+                }
+                free(prop->value);
+            }
             free(t->store[i].value);
+        }
     }
     free(t->store);
     free(t);
 }
 
-void table_add(table t, const char *key, void *value)
+void table_add(table t, const char *key, void *value, int is_prop)
 {
     t->len += 1;
     if (t->len > t->alloced) {
         while (t->len > t->alloced)
             t->alloced *= 2;
-        t->store = realloc(t->store, t->alloced*sizeof(string_table_node_t));
+        t->store = realloc(t->store, t->alloced * sizeof(string_table_node_t));
     }
     t->store[t->len-1].key = strdup(key);
     t->store[t->len-1].value = value;
+    t->store[t->len-1].is_prop = is_prop;
 }
 
 void table_sort(table t)
@@ -51,18 +65,14 @@ void table_sort(table t)
     qsort(t->store, t->len, sizeof(string_table_node_t), compare_node_keys);
 }
 
-int table_find(table t, const char *key, void **value)
+string_table_node_t *table_find_node(table t, const char *key)
 {
     string_table_node_t tmp;
     tmp.key = key;
-    string_table_node_t *n = bsearch(&tmp, t->store, t->len,
-                        sizeof(string_table_node_t), compare_node_keys);
-    if (n) {
-        *value = n->value;
-        return 0;
-    }
-    else
-        return 1;
+    string_table_node_t *n = 0;
+    n = bsearch(&tmp, t->store, t->len,
+                sizeof(string_table_node_t), compare_node_keys);
+    return n;
 }
 
 void *table_find_p(table t, const char *key)
@@ -95,8 +105,23 @@ void table_remove_key(table t, const char *key, int free_value)
         int i, index = n - t->store;
 
         free((char*)n->key);
-        if (free_value)
+        if (free_value) {
+            if (n->is_prop) {
+                mapper_prop_value_t *prop = n->value;
+                if (prop->value) {
+                    if ((prop->type == 's' || prop->type == 'S')
+                        && prop->length > 1) {
+                        char **vals = (char**)prop->value;
+                        for (i = 0; i < prop->length; i++) {
+                            if (vals[i])
+                                free(vals[i]);
+                        }
+                    }
+                    free(prop->value);
+                }
+            }
             free(n->value);
+        }
 
         for (i=index+1; i < t->len; i++)
             t->store[i-1] = t->store[i];
@@ -111,7 +136,7 @@ int table_add_or_update(table t, const char *key, void *value)
         *val = value;
         return 0;
     } else {
-        table_add(t, key, value);
+        table_add(t, key, value, 0);
         table_sort(t);
         return 1;
     }
@@ -136,68 +161,241 @@ int table_size(table t)
     return t->len;
 }
 
-/* Higher-level interface, where table stores arbitrary OSC arguments
- * along with their type. */
-
-int mapper_table_add_or_update_osc_value(table t, const char *key,
-                                         lo_type type, lo_arg *arg)
+static void mapper_table_update_value_elements(mapper_prop_value_t *prop,
+                                              int length, char type,
+                                              void *args)
 {
-    mapper_osc_value_t **pval =
-        (mapper_osc_value_t**)table_find_pp(t, key);
+    /* For unknown reasons, strcpy crashes here with -O2, so
+     * we'll use memcpy instead, which does not crash. */
 
-    if (pval) {
-        die_unless((*pval)!=0, "parameter value already in "
-                   "table cannot be null.\n");
+    int i;
+    if (length < 1)
+        return;
+
+    /* If destination is a string, reallocate and copy the new
+     * string, otherwise just copy over the old value. */
+    if (type == 's' || type == 'S')
+    {
+        char **from = (char**)args;
+        if (length == 1) {
+            free(prop->value);
+            prop->value = strdup(*from);
+        }
+        else {
+            char **to = (char**)prop->value;
+            for (i = 0; i < length; i++) {
+                int n = strlen(from[i]);
+                to[i] = malloc(n+1);
+                memcpy(to[i], from[i], n+1);
+            }
+        }
+    } else {
+        switch (type) {
+            case 'f':
+            {
+                float *from = (float*)args;
+                float *to = (float*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            case 'i': {
+                int32_t *from = (int32_t*)args;
+                int32_t *to = (int32_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            case 'd':
+            {
+                double *from = (double*)args;
+                double *to = (double*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            case 'h':
+            {
+                int64_t *from = (int64_t*)args;
+                int64_t *to = (int64_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            case 't':
+            {
+                mapper_timetag_t *from = (mapper_timetag_t*)args;
+                mapper_timetag_t *to = (mapper_timetag_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            case 'c':
+            {
+                char *from = (char*)args;
+                char *to = (char*)prop->value;
+                for (i = 0; i < length; i++)
+                    to[i] = from[i];
+                break;
+            }
+            default:
+                break;
+        }
+    }
+}
 
-        /* If destination is a string, reallocate and copy the new
-         * string, otherwise just copy over the old value. */
-        if (type == 's' || type == 'S')
-        {
-            if (((*pval)->type == 's' || (*pval)->type == 'S')
-                && strcmp(&arg->s, &(*pval)->value.s)==0)
-                return 0;
-
-            int n = strlen(&arg->s);
-            *pval = realloc(*pval, sizeof(mapper_osc_value_t) + n + 1);
-            (*pval)->type = type;
-
-            // For unknown reasons, strcpy crashes here with -O2, so
-            // we'll use memcpy instead, which does not crash.
-            memcpy(&(*pval)->value.s, &arg->s, n+1);
-            return 1;
-        } else {
-            if ((*pval)->type == type
-                && memcmp(&(*pval)->value, arg, sizeof(lo_arg))==0)
-                return 0;
-
-            (*pval)->type = type;
-            if (arg)
-                (*pval)->value = *arg;
-            else
-                (*pval)->value.h = 0;
-            return 1;
+/* Higher-level interface, where table stores arbitrary arguments along
+ * with their type. */
+int mapper_table_add_or_update_typed_value(table t, const char *key, char type,
+                                           void *args, int length)
+{
+    int i;
+    string_table_node_t *node = table_find_node(t, key);
+    
+    if (node) {
+        die_unless(node->value!=0, "parameter value already in "
+                   "table cannot be null.\n");
+        
+        mapper_prop_value_t *prop = node->value;
+        if ((prop->type == 's' || prop->type == 'S') && prop->length > 1) {
+            char **vals = prop->value;
+            for (i = 0; i < prop->length; i++) {
+                free(vals[i]);
+            }
         }
+        prop->value = realloc(prop->value, mapper_type_size(type) * length);
+
+        mapper_table_update_value_elements(prop, length, type, args);
+        prop->length = length;
+        prop->type = type;
     }
     else {
         /* Need to add a new entry. */
-        mapper_osc_value_t *val = 0;
-        if (type == 's' || type == 'S') {
-            int n = strlen(&arg->s);
-            val = malloc(sizeof(mapper_osc_value_t) + n + 1);
-
-            // For unknown reasons, strcpy crashes here with -O2, so
-            // we'll use memcpy instead, which does not crash.
-            memcpy(&val->value.s, &arg->s, n+1);
+        mapper_prop_value_t *prop = malloc(sizeof(mapper_prop_value_t));
+        prop->value = malloc(mapper_type_size(type) * length);
+        prop->length = 0;
+        mapper_table_update_value_elements(prop, length, type, args);
+        prop->length = length;
+        prop->type = type;
+        
+        table_add(t, key, prop, 1);
+        table_sort(t);
+        return 1;
+    }
+    return 0;
+}
+
+static void mapper_table_update_value_elements_osc(mapper_prop_value_t *prop,
+                                                   int length, char type,
+                                                   lo_arg **args)
+{
+    /* For unknown reasons, strcpy crashes here with -O2, so
+     * we'll use memcpy instead, which does not crash. */
+
+    int i;
+    /* If destination is a string, reallocate and copy the new
+     * string, otherwise just copy over the old value. */
+    if (type == 's' || type == 'S')
+    {
+        if (length == 1) {
+            free(prop->value);
+            prop->value = strdup((char*)&args[0]->s);
+
         }
-        else {
-            val = malloc(sizeof(mapper_osc_value_t));
-            if (arg)
-                val->value = *arg;
-            else
-                val->value.h = 0;
+        else if (length > 1) {
+            char **to = (char**)prop->value;
+            char **from = (char**)args;
+            for (i = 0; i < length; i++) {
+                int n = strlen(from[i]);
+                to[i] = malloc(n+1);
+                memcpy(to[i], from[i], n+1);
+            }
+        }
+    } else {
+        switch (type) {
+            case 'f':
+            {
+                float *vals = (float*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->f;
+                break;
+            }
+            case 'i':
+            {
+                int32_t *vals = (int32_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->i32;
+                break;
+            }
+            case 'd':
+            {
+                double *vals = (double*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->d;
+                break;
+            }
+            case 'h':
+            {
+                int64_t *vals = (int64_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->h;
+                break;
+            }
+            case 't':
+            {
+                mapper_timetag_t *vals = (mapper_timetag_t*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->t;
+                break;
+            }
+            case 'c':
+            {
+                char *vals = (char*)prop->value;
+                for (i = 0; i < length; i++)
+                    vals[i] = args[i]->c;
+                break;
+            }
+            default:
+                break;
+        }
+    }
+}
+
+/* Higher-level interface, where table stores arbitrary OSC arguments
+ * parsed from a mapper_msg along with their type. */
+int mapper_table_add_or_update_msg_value(table t, const char *key, lo_type type,
+                                         lo_arg **args, int length)
+{
+    int i;
+    string_table_node_t *node = table_find_node(t, key);
+
+    if (node) {
+        die_unless(node->value!=0, "parameter value already in "
+                   "table cannot be null.\n");
+
+        mapper_prop_value_t *prop = node->value;
+        if ((prop->type == 's' || prop->type == 'S') && prop->length > 1) {
+            char **vals = prop->value;
+            for (i = 0; i < prop->length; i++) {
+                free(vals[i]);
+            }
         }
-        val->type = type;
-        table_add(t, key, val);
+        prop->value = realloc(prop->value, mapper_type_size(type) * length);
+
+        mapper_table_update_value_elements_osc(prop, length, type, args);
+        prop->length = length;
+        prop->type = type;
+    }
+    else {
+        /* Need to add a new entry. */
+        mapper_prop_value_t *prop = malloc(sizeof(mapper_prop_value_t));
+        prop->value = malloc(mapper_type_size(type) * length);
+        prop->length = 0;
+        mapper_table_update_value_elements_osc(prop, length, type, args);
+        prop->length = length;
+        prop->type = type;
+
+        table_add(t, key, prop, 1);
         table_sort(t);
         return 1;
     }
@@ -205,14 +403,14 @@ int mapper_table_add_or_update_osc_value(table t, const char *key,
 }
 
 #ifdef DEBUG
-void table_dump_osc_values(table t)
+void table_dump_prop_values(table t)
 {
     string_table_node_t *n = t->store;
     int i;
     for (i=0; i<t->len; i++) {
         printf("%s: ", n->key);
-        mapper_osc_value_t *v = n->value;
-        lo_arg_pp(v->type, &v->value);
+        mapper_prop_value_t *prop = n->value;
+        mapper_prop_pp(prop->type, prop->length, prop->value);
         printf("\n");
         n++;
     }
diff --git a/src/time.c b/src/time.c
index 921cf79..2192497 100644
--- a/src/time.c
+++ b/src/time.c
@@ -55,13 +55,14 @@ void mapper_clock_now(mapper_clock clock,
 double mapper_timetag_difference(mapper_timetag_t a, mapper_timetag_t b)
 {
     return (double)a.sec - (double)b.sec +
-    ((double)a.frac - (double)b.frac) * multiplier;
+        ((double)a.frac - (double)b.frac) * multiplier;
 }
 
 void mapper_timetag_add_seconds(mapper_timetag_t *a, double b)
 {
     if (!b)
         return;
+
     b += (double)a->frac * multiplier;
     a->sec += floor(b);
     b -= floor(b);
diff --git a/src/types_internal.h b/src/types_internal.h
index 0481d77..acf176a 100644
--- a/src/types_internal.h
+++ b/src/types_internal.h
@@ -39,15 +39,17 @@ struct _mapper_id_map;
  *  type. (Re-using liblo's OSC-oriented lo_arg data structure.) If
  *  type is a string, the allocated size may be longer than
  *  sizeof(mapper_osc_arg_t). */
-typedef struct _mapper_osc_value {
-    lo_type type;
-    lo_arg value;
-} mapper_osc_value_t;
+typedef struct _mapper_prop_value {
+    char type;
+    int length;
+    void *value;
+} mapper_prop_value_t;
 
 /*! Used to hold string look-up table nodes. */
 typedef struct {
     const char *key;
     void *value;
+    int is_prop;
 } string_table_node_t;
 
 /*! Used to hold string look-up tables. */
@@ -59,6 +61,38 @@ typedef struct _mapper_string_table {
 
 /**** Admin bus ****/
 
+/*! Some useful strings for sending admin messages. */
+/*! Symbolic representation of recognized @-parameters. */
+typedef enum {
+    ADM_CONNECT,
+    ADM_CONNECT_TO,
+    ADM_CONNECTED,
+    ADM_CONNECTION_MODIFY,
+    ADM_DEVICE,
+    ADM_DISCONNECT,
+    ADM_DISCONNECTED,
+    ADM_GET_MY_CONNECTIONS,
+    ADM_GET_MY_CONNECTIONS_IN,
+    ADM_GET_MY_CONNECTIONS_OUT,
+    ADM_GET_MY_DEVICE,
+    ADM_GET_MY_LINKS,
+    ADM_GET_MY_LINKS_IN,
+    ADM_GET_MY_LINKS_OUT,
+    ADM_GET_MY_SIGNALS,
+    ADM_GET_MY_SIGNALS_IN,
+    ADM_GET_MY_SIGNALS_OUT,
+    ADM_LINK,
+    ADM_LINK_MODIFY,
+    ADM_LINK_TO,
+    ADM_LINKED,
+    ADM_LOGOUT,
+    ADM_SIGNAL,
+    ADM_SYNC,
+    ADM_UNLINK,
+    ADM_UNLINKED,
+    ADM_WHO
+} admin_msg_t;
+
 /*! Function to call when an allocated resource is locked. */
 typedef void mapper_admin_resource_on_lock(struct _mapper_device *md,
                                            struct _mapper_admin_allocated_t
@@ -109,17 +143,10 @@ typedef struct _mapper_clock_t {
 
 /*! A structure that keeps information about a device. */
 typedef struct _mapper_admin {
-    char *identifier;                 /*!< The identifier (prefix) for
-                                       *   this device. */
-    char *name;                       /*!< The full name for this
-                                       *   device, or zero. */
-    mapper_admin_allocated_t ordinal; /*!< A unique ordinal for this
-                                       *   device instance. */
-    uint32_t name_hash;               /*!< CRC-32 hash of full device name
-                                       *   in the form <name>.<ordinal> */
     int random_id;                    /*!< Random ID for allocation
                                            speedup. */
-    int port;                         /*!< This device's UDP port number. */
+    int msgs_recvd;                   /*!< Number of messages received on the
+                                           admin bus. */
     lo_server_thread admin_server;    /*!< LibLo server thread for the
                                        *   admin bus. */
     lo_address admin_addr;            /*!< LibLo address for the admin
@@ -128,14 +155,14 @@ typedef struct _mapper_admin {
                                        *   interface for receiving
                                        *   messages. */
     struct in_addr interface_ip;      /*!< The IP address of interface. */
-    int registered;                   /*!< Non-zero if this device has
-                                       *   been registered. */
     struct _mapper_device *device;    /*!< Device that this admin is
                                        *   in charge of. */
     struct _mapper_monitor *monitor;  /*!< Monitor that this admin is
                                        *   in charge of. */
     mapper_clock_t clock;             /*!< Clock for providing global
                                        *   time syncronization. */
+    lo_bundle bundle;                 /*!< Bundle pointer for sending
+                                       *   messages on the admin bus. */
 } mapper_admin_t;
 
 /*! The handle to this device is a pointer. */
@@ -173,6 +200,7 @@ typedef struct _mapper_link_signal {
     int num_instances;                      //!< Number of instances allocated.
     mapper_signal_history_t *history;       /*!< Array of value histories
                                              *   for each signal instance. */
+    int history_size;                       /*! Size of the history vector. */
     mapper_connection connections;          /*!< The first connection for
                                              *   this signal. */
     struct _mapper_link_signal *next;     /*!< The next signal connection
@@ -188,6 +216,7 @@ typedef struct _mapper_queue {
 /*! The link structure is a linked list of links each associated
  *  with a destination address that belong to a controller device. */
 typedef struct _mapper_link {
+    lo_address remote_addr;         //!< Network address of remote endpoint
     mapper_db_link_t props;         //!< Properties.
     struct _mapper_device *device;  /*!< The device associated with
                                      *   this link */
@@ -199,19 +228,18 @@ typedef struct _mapper_link {
     struct _mapper_link *next;      //!< Next link in the list.
 } *mapper_link, *mapper_router, *mapper_receiver;
 
-/**** Device ****/
-
 /*! The instance ID map is a linked list of int32 instance ids for coordinating
  *  remote and local instances. */
 typedef struct _mapper_id_map {
     int local;                              //!< Local instance id to map.
-    uint32_t group;                         //!< Link group id.
-    uint32_t remote;                        //!< Remote instance id to map.
+    uint32_t origin;                        //!< Hash for originating device.
+    uint32_t public;                        //!< Public instance id to map.
     int refcount_local;
     int refcount_remote;
     struct _mapper_id_map *next;   //!< The next id map in the list.
 } *mapper_id_map;
 
+/**** Device ****/
 struct _mapper_device;
 typedef struct _mapper_device *mapper_device;
 
@@ -256,6 +284,11 @@ typedef struct _mapper_monitor {
      *  mapper_monitor_free(). */
     int own_admin;
 
+    /*! Flags indicating whether information on signals, links,
+     *  and connections should be automatically requested when a
+     *  new device is seen.*/
+    int autorequest;
+
     mapper_db_t       db;       //<! Database for this monitor.
 }  *mapper_monitor;
 
@@ -266,6 +299,8 @@ typedef enum {
     AT_BOUND_MAX,
     AT_BOUND_MIN,
     AT_DEST_LENGTH,
+    AT_DEST_MAX,
+    AT_DEST_MIN,
     AT_DEST_PORT,
     AT_DEST_TYPE,
     AT_DIRECTION,
@@ -286,12 +321,13 @@ typedef enum {
     AT_NUM_LINKS_OUT,
     AT_NUM_OUTPUTS,
     AT_PORT,
-    AT_RANGE,
     AT_RATE,
     AT_REV,
     AT_SCOPE,
     AT_SEND_AS_INSTANCE,
     AT_SRC_LENGTH,
+    AT_SRC_MAX,
+    AT_SRC_MIN,
     AT_SRC_PORT,
     AT_SRC_TYPE,
     AT_TYPE,
@@ -326,8 +362,10 @@ typedef struct _mapper_message
     const char *path;               //!< OSC address.
     lo_arg **values[N_AT_PARAMS];   //!< Array of parameter values.
     const char *types[N_AT_PARAMS]; //!< Array of types for each value.
+    int lengths[N_AT_PARAMS];       //!< Array of lengths for each value.
     lo_arg **extra_args[N_EXTRA_PARAMS]; //!< Pointers to extra parameters.
     char extra_types[N_EXTRA_PARAMS];    //!< Types of extra parameters.
+    char extra_lengths[N_EXTRA_PARAMS];  //!< Lengths of extra parameters.
 } mapper_message_t;
 
 #endif // __MAPPER_TYPES_H__
diff --git a/swig/Makefile.am b/swig/Makefile.am
index 751fce9..2700006 100644
--- a/swig/Makefile.am
+++ b/swig/Makefile.am
@@ -8,7 +8,7 @@ $(builddir)/%_wrap.c %.py: %.i
 # Don't interfere with distutils CFLAGS
 _%.$(PYEXT): $(builddir)/%_wrap.c
 	env CFLAGS="" python setup.py build_ext
-	- at cp -v build/lib.*/$@ .
+	cp -v `./copywhich.sh $@` .
 
 clean-local:
 	- at rm -vf mapper.py mapper_wrap.c
@@ -27,4 +27,4 @@ uninstall-hook:
 	cat @top_builddir@/swig/installed_files.log \
 	  | awk '{print "$(DESTDIR)"$$1}' | xargs rm -vf
 
-EXTRA_DIST = mapper.i tkgui.py
+EXTRA_DIST = mapper.i tkgui.py copywhich.sh
diff --git a/swig/Makefile.in b/swig/Makefile.in
deleted file mode 100644
index c597df5..0000000
--- a/swig/Makefile.in
+++ /dev/null
@@ -1,460 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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 = swig
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/setup.py.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = setup.py
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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@
-MOSTLYCLEANFILES = _mapper.$(PYEXT) mapper.py mapper_wrap.c installed_files.log
-EXTRA_DIST = mapper.i tkgui.py
-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) --foreign swig/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign swig/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):
-setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.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
-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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-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-local 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:
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-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:
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: install-am install-exec-am install-strip uninstall-am
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
-	clean-libtool clean-local 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-exec-hook \
-	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-hook
-
-
-all-local: _mapper.$(PYEXT)
-
-$(builddir)/%_wrap.c %.py: %.i
-	$(SWIG) -I$(top_srcdir)/include -python -o $(builddir)/mapper_wrap.c \
-		$(srcdir)/mapper.i
-
-# Don't interfere with distutils CFLAGS
-_%.$(PYEXT): $(builddir)/%_wrap.c
-	env CFLAGS="" python setup.py build_ext
-	- at cp -v build/lib.*/$@ .
-
-clean-local:
-	- at rm -vf mapper.py mapper_wrap.c
-	python setup.py clean --all
-
-install-exec-hook: $(builddir)/mapper_wrap.c
-	if test -n "$(DESTDIR)"; then\
-		python setup.py install --root=$(DESTDIR) --prefix=$(prefix) --record=@top_builddir@/swig/installed_files.log; \
-	else \
-		python setup.py install --prefix=$(prefix) --record=@top_builddir@/swig/installed_files.log; \
-	fi
-
-uninstall-hook:
-	cat @top_builddir@/swig/installed_files.log \
-	  | awk '{print "$(DESTDIR)"$$1}' | xargs rm -vf
-
-# 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/swig/copywhich.sh b/swig/copywhich.sh
new file mode 100755
index 0000000..c4a9d12
--- /dev/null
+++ b/swig/copywhich.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+PYMACHINE="$(python -c 'import platform; print platform.machine()')"
+ARCHES="$(ls -d build/lib.*/$1)"
+
+# If the Python platform architecture is found, copy that one
+for A in $ARCHES
+do
+    if file $A | grep -q $PYMACHINE; then
+	echo $A
+	exit 0
+    fi
+done
+
+# Otherwise, copy the first one listed.
+echo $ARCHES | head -n1
diff --git a/swig/mapper.i b/swig/mapper.i
index ed51c3a..c46909b 100644
--- a/swig/mapper.i
+++ b/swig/mapper.i
@@ -7,40 +7,80 @@
     }
     $1 = $input;
  }
-%typemap(in) maybeSigVal %{
-    sigval val;
+%typemap(in) (int num_int, int *argv) {
+    int i;
+    if (!PyList_Check($input)) {
+        PyErr_SetString(PyExc_ValueError, "Expecting a list");
+        return NULL;
+    }
+    $1 = PyList_Size($input);
+    $2 = (int *) malloc($1*sizeof(int));
+    for (i = 0; i < $1; i++) {
+        PyObject *s = PyList_GetItem($input,i);
+        if (PyInt_Check(s))
+            $2[i] = (int)PyInt_AsLong(s);
+        else if (PyFloat_Check(s))
+            $2[i] = (int)PyFloat_AsDouble(s);
+        else {
+            free($2);
+            PyErr_SetString(PyExc_ValueError,
+                            "List items must be int or float.");
+            return NULL;
+        }
+    }
+}
+%typemap(typecheck) (int num_int, int *argv) {
+    $1 = PyList_Check($input) ? 1 : 0;
+}
+%typemap(freearg) (int num_int, int *argv) {
+    if ($2) free($2);
+}
+%typemap(in) maybePropVal %{
+    propval *val = alloca(sizeof(*val));
     if ($input == Py_None)
         $1 = 0;
     else {
-        int ecode = SWIG_AsVal_int($input, &val.v.i32);
-        if (SWIG_IsOK(ecode))
-            val.t = 'i';
-        else {
-            ecode = SWIG_AsVal_float($input, &val.v.f);
-            if (SWIG_IsOK(ecode))
-                val.t = 'f';
-            else {
-                SWIG_exception_fail(SWIG_ArgError(ecode),
-                             "argument $argnum of type 'float' or 'int'");
-            }
+        val->type = 0;
+        check_type($input, &val->type, 1, 1);
+        if (!val->type) {
+            PyErr_SetString(PyExc_ValueError,
+                            "Problem determining value type.");
+            return NULL;
+        }
+        if (PyList_Check($input))
+            val->length = PyList_Size($input);
+        else
+            val->length = 1;
+        val->value = malloc(val->length * mapper_type_size(val->type));
+        val->free_value = 1;
+        if (py_to_prop($input, val->value, val->type, val->length)) {
+            free(val->value);
+            PyErr_SetString(PyExc_ValueError,
+                            "Problem parsing property value.");
+            return NULL;
         }
-        $1 = &val;
+        $1 = val;
     }
 %}
-%typemap(out) maybeSigVal {
-    if ($1 && $1->t == 'f') {
-        $result = Py_BuildValue("f", $1->v.f);
-        free($1);
-    }
-    else if ($1 && $1->t == 'i') {
-        $result = Py_BuildValue("i", $1->v.i32);
-        free($1);
+%typemap(out) maybePropVal {
+    if ($1) {
+        $result = prop_to_py($1->type, $1->length, $1->value);
+        if ($result)
+            free($1);
     }
     else {
         $result = Py_None;
         Py_INCREF($result);
     }
  }
+%typemap(freearg) maybePropVal {
+    if ($1) {
+        maybePropVal prop = (maybePropVal)$1;
+        if (prop->value && prop->free_value) {
+            free(prop->value);
+        }
+    }
+}
 %typemap(out) maybeInt {
     if ($1) {
         $result = Py_BuildValue("i", *$1);
@@ -58,39 +98,62 @@
  }
 
 %typemap(in) mapper_db_link_with_flags_t* %{
-    mapper_db_link_with_flags_t p;
+    mapper_db_link_with_flags_t *p = alloca(sizeof(*p));
     $1 = 0;
     if (PyDict_Check($input)) {
-        memset(&p, 0, sizeof(mapper_db_link_with_flags_t));
+        memset(p, 0, sizeof(mapper_db_link_with_flags_t));
         PyObject *keys = PyDict_Keys($input);
         if (keys) {
-            int i = PyList_GET_SIZE(keys);
+            int i = PyList_GET_SIZE(keys), k;
             for (i=i-1; i>=0; --i) {
                 PyObject *o = PyList_GetItem(keys, i);
                 if (PyString_Check(o)) {
                     PyObject *v = PyDict_GetItem($input, o);
                     char *s = PyString_AsString(o);
-                    if (strcmp(s, "scope")==0) {
+                    if (strcmp(s, "scope_names")==0) {
                         if (PyString_Check(v)) {
-                            p.props.num_scopes = 1;
-                            p.flags |= LINK_NUM_SCOPES;
+                            p->props.num_scopes = 1;
+                            p->flags |= LINK_NUM_SCOPES;
                             char *scope = PyString_AsString(v);
-                            p.props.scope_names  = &scope;
-                            p.flags |= LINK_SCOPE_NAMES;
+                            p->props.scope_names = &scope;
+                            p->flags |= LINK_SCOPE_NAMES;
                         }
                     }
                     else if (strcmp(s, "src_name")==0) {
                         if (PyString_Check(v))
-                            p.props.src_name = PyString_AsString(v);
+                            p->props.src_name = PyString_AsString(v);
                     }
                     else if (strcmp(s, "dest_name")==0) {
                         if (PyString_Check(v))
-                            p.props.dest_name = PyString_AsString(v);
+                            p->props.dest_name = PyString_AsString(v);
+                    }
+                    else if (strcmp(s, "num_scopes")==0) {
+                        int ecode = SWIG_AsVal_int(v, &k);
+                        if (SWIG_IsOK(ecode))
+                            p->props.num_scopes = k;
+                    }
+                    else if (strcmp(s, "src_host")==0) {
+                        if (PyString_Check(v))
+                            p->props.src_host = PyString_AsString(v);
+                    }
+                    else if (strcmp(s, "src_port")==0) {
+                        int ecode = SWIG_AsVal_int(v, &k);
+                        if (SWIG_IsOK(ecode))
+                            p->props.src_port = k;
+                    }
+                    else if (strcmp(s, "dest_host")==0) {
+                        if (PyString_Check(v))
+                            p->props.dest_host = PyString_AsString(v);
+                    }
+                    else if (strcmp(s, "dest_port")==0) {
+                        int ecode = SWIG_AsVal_int(v, &k);
+                        if (SWIG_IsOK(ecode))
+                            p->props.dest_port = k;
                     }
                 }
             }
             Py_DECREF(keys);
-            $1 = &p;
+            $1 = p;
         }
     }
     else {
@@ -100,73 +163,68 @@
  %}
 
 %typemap(in) mapper_db_connection_with_flags_t* %{
-    mapper_db_connection_with_flags_t p;
+    mapper_db_connection_with_flags_t *p = alloca(sizeof(*p));
+    p->props.src_length = 0;
+    p->props.dest_length = 0;
+    p->props.src_type = 0;
+    p->props.dest_type = 0;
     $1 = 0;
     if (PyDict_Check($input)) {
-        memset(&p, 0, sizeof(mapper_db_connection_with_flags_t));
+        memset(p, 0, sizeof(mapper_db_connection_with_flags_t));
         PyObject *keys = PyDict_Keys($input);
         if (keys) {
+            // first try to retrieve src_type, dest_type if provided
             int i = PyList_GET_SIZE(keys), k;
             for (i=i-1; i>=0; --i) {
                 PyObject *o = PyList_GetItem(keys, i);
                 if (PyString_Check(o)) {
                     PyObject *v = PyDict_GetItem($input, o);
                     char *s = PyString_AsString(o);
+                    if (strcmp(s, "src_type")==0) {
+                        if (PyString_Check(v))
+                            p->props.src_type = PyString_AsString(v)[0];
+                        if (p->props.dest_type)
+                            continue;
+                    }
+                    else if (strcmp(s, "dest_type")==0) {
+                        if (PyString_Check(v))
+                            p->props.dest_type = PyString_AsString(v)[0];
+                        if (p->props.src_type)
+                            continue;
+                    }
+                }
+            }
+            i = PyList_GET_SIZE(keys);
+            for (i=i-1; i>=0; --i) {
+                PyObject *o = PyList_GetItem(keys, i);
+                if (PyString_Check(o)) {
+                    PyObject *v = PyDict_GetItem($input, o);
+                    char *s = PyString_AsString(o);
                     if (strcmp(s, "bound_max")==0) {
                         int ecode = SWIG_AsVal_int(v, &k);
                         if (SWIG_IsOK(ecode)) {
-                            p.props.bound_max = k;
-                            p.flags |= CONNECTION_BOUND_MAX;
+                            p->props.bound_max = k;
+                            p->flags |= CONNECTION_BOUND_MAX;
                         }
                     }
                     else if (strcmp(s, "bound_min")==0) {
                         int ecode = SWIG_AsVal_int(v, &k);
                         if (SWIG_IsOK(ecode)) {
-                            p.props.bound_min = k;
-                            p.flags |= CONNECTION_BOUND_MIN;
-                        }
-                    }
-                    else if (strcmp(s, "range")==0) {
-                        if (PySequence_Check(v)) {
-                            int len = PySequence_Size(v), j, n;
-                            float *f;
-                            for (j=0; j<len && j<4; j++) {
-                                PyObject *r = PySequence_GetItem(v, j);
-                                switch (j) {
-                                case 0: f = &p.props.range.src_min;
-                                    k = CONNECTION_RANGE_SRC_MIN; break;
-                                case 1: f = &p.props.range.src_max;
-                                    k = CONNECTION_RANGE_SRC_MAX; break;
-                                case 2: f = &p.props.range.dest_min;
-                                    k = CONNECTION_RANGE_DEST_MIN; break;
-                                case 3: f = &p.props.range.dest_max;
-                                    k = CONNECTION_RANGE_DEST_MAX; break;
-                                }
-                                int ecode = SWIG_AsVal_float(r, f);
-                                if (SWIG_IsOK(ecode))
-                                    p.props.range.known |= k;
-                                else {
-                                    ecode = SWIG_AsVal_int(r, &n);
-                                    if (SWIG_IsOK(ecode)) {
-                                        *f = (float)n;
-                                        p.props.range.known |= k;
-                                    }
-                                }
-                            }
-                            p.flags |= p.props.range.known;
+                            p->props.bound_min = k;
+                            p->flags |= CONNECTION_BOUND_MIN;
                         }
                     }
                     else if (strcmp(s, "expression")==0) {
                         if (PyString_Check(v)) {
-                            p.props.expression = PyString_AsString(v);
-                            p.flags |= CONNECTION_EXPRESSION;
+                            p->props.expression = PyString_AsString(v);
+                            p->flags |= CONNECTION_EXPRESSION;
                         }
                     }
                     else if (strcmp(s, "mode")==0) {
                         int ecode = SWIG_AsVal_int(v, &k);
                         if (SWIG_IsOK(ecode)) {
-                            p.props.mode = k;
-                            p.flags |= CONNECTION_MODE;
+                            p->props.mode = k;
+                            p->flags |= CONNECTION_MODE;
                         }
                     }
                     else if (strcmp(s, "muted")==0) {
@@ -184,40 +242,63 @@
                                 k = -1;
                         }
                         if (k>-1) {
-                            p.props.muted = k;
-                            p.flags |= CONNECTION_MUTED;
+                            p->props.muted = k;
+                            p->flags |= CONNECTION_MUTED;
                         }
                     }
                     else if (strcmp(s, "src_name")==0) {
                         if (PyString_Check(v))
-                            p.props.src_name = PyString_AsString(v);
+                            p->props.src_name = PyString_AsString(v);
                     }
                     else if (strcmp(s, "dest_name")==0) {
                         if (PyString_Check(v))
-                            p.props.dest_name = PyString_AsString(v);
+                            p->props.dest_name = PyString_AsString(v);
                     }
-                    else if (strcmp(s, "src_type")==0) {
-                        if (PyString_Check(v))
-                            p.props.src_type = PyString_AsString(v)[0];
+                    else if (strcmp(s, "src_min")==0) {
+                        alloc_and_copy_maybe_vector(v, &p->props.src_type,
+                                                    &p->props.src_min,
+                                                    &p->props.src_length);
+                        if (p->props.src_min) {
+                            p->props.range_known |= CONNECTION_RANGE_SRC_MIN;
+                            p->flags |= CONNECTION_SRC_LENGTH;
+                            p->flags |= CONNECTION_SRC_TYPE;
+                        }
                     }
-                    else if (strcmp(s, "dest_type")==0) {
-                        if (PyString_Check(v))
-                            p.props.dest_type = PyString_AsString(v)[0];
+                    else if (strcmp(s, "src_max")==0) {
+                        alloc_and_copy_maybe_vector(v, &p->props.src_type,
+                                                    &p->props.src_max,
+                                                    &p->props.src_length);
+                        if (p->props.src_max) {
+                            p->props.range_known |= CONNECTION_RANGE_SRC_MAX;
+                            p->flags |= CONNECTION_SRC_LENGTH;
+                            p->flags |= CONNECTION_SRC_TYPE;
+                        }
                     }
-                    else if (strcmp(s, "src_length")==0) {
-                        int ecode = SWIG_AsVal_int(v, &k);
-                        if (SWIG_IsOK(ecode))
-                            p.props.src_length = k;
+                    else if (strcmp(s, "dest_min")==0) {
+                        alloc_and_copy_maybe_vector(v, &p->props.dest_type,
+                                                    &p->props.dest_min,
+                                                    &p->props.dest_length);
+                        if (p->props.dest_min) {
+                            p->props.range_known |= CONNECTION_RANGE_DEST_MIN;
+                            p->flags |= CONNECTION_DEST_LENGTH;
+                            p->flags |= CONNECTION_DEST_TYPE;
+                        }
                     }
-                    else if (strcmp(s, "dest_length")==0) {
-                        int ecode = SWIG_AsVal_int(v, &k);
-                        if (SWIG_IsOK(ecode))
-                            p.props.dest_length = k;
+                    else if (strcmp(s, "dest_max")==0) {
+                        alloc_and_copy_maybe_vector(v, &p->props.dest_type,
+                                                    &p->props.dest_max,
+                                                    &p->props.dest_length);
+                        if (p->props.dest_max) {
+                            p->props.range_known |= CONNECTION_RANGE_DEST_MAX;
+                            p->flags |= CONNECTION_DEST_LENGTH;
+                            p->flags |= CONNECTION_DEST_TYPE;
+                        }
                     }
+                    p->flags |= p->props.range_known;
                 }
             }
             Py_DECREF(keys);
-            $1 = &p;
+            $1 = p;
         }
     }
     else {
@@ -226,6 +307,19 @@
     }
  %}
 
+%typemap(freearg) mapper_db_connection_with_flags_t* {
+    if ($1) {
+        if ($1->props.range_known & CONNECTION_RANGE_SRC_MIN)
+            free($1->props.src_min);
+        if ($1->props.range_known & CONNECTION_RANGE_SRC_MAX)
+            free($1->props.src_max);
+        if ($1->props.range_known | CONNECTION_RANGE_DEST_MIN)
+            free($1->props.dest_min);
+        if ($1->props.range_known | CONNECTION_RANGE_DEST_MAX)
+            free($1->props.dest_max);
+    }
+}
+
 %typemap(out) mapper_db_device_t ** {
     if ($1) {
         // Return the dict and an opaque pointer.
@@ -319,6 +413,306 @@ typedef struct _admin {} admin;
 
 PyThreadState *_save;
 
+static int py_to_prop(PyObject *from, void *to, char type, int length)
+{
+    // here we are assuming sufficient memory has already been allocated
+    if (!from || !length)
+        return 1;
+
+    int i;
+    PyObject *v = 0;
+    if (length > 1)
+        v = PyList_New(length);
+    
+    switch (type) {
+        case 's':
+        {
+            // only strings are valid
+            if (length > 1) {
+                char **str_to = (char**)to;
+                for (i=0; i<length; i++) {
+                    PyObject *element = PySequence_GetItem(from, i);
+                    if (!PyString_Check(element))
+                        return 1;
+                    str_to[i] = strdup(PyString_AsString(element));
+                }
+            }
+            else {
+                if (!PyString_Check(from))
+                    return 1;
+                char **str_to = (char**)to;
+                *str_to = strdup(PyString_AsString(from));
+            }
+            break;
+        }
+        case 'c':
+        {
+            // only strings are valid
+            char *char_to = (char*)to;
+            if (length > 1) {
+                for (i=0; i<length; i++) {
+                    PyObject *element = PySequence_GetItem(from, i);
+                    if (!PyString_Check(element))
+                        return 1;
+                    char *temp = PyString_AsString(element);
+                    char_to[i] = temp[0];
+                }
+            }
+            else {
+                if (!PyString_Check(from))
+                    return 1;
+                char *temp = PyString_AsString(from);
+                *char_to = temp[0];
+            }
+            break;
+        }
+        case 'i':
+        {
+            int *int_to = (int*)to;
+            if (length > 1) {
+                for (i=0; i<length; i++) {
+                    PyObject *element = PySequence_GetItem(from, i);
+                    if (PyInt_Check(element))
+                        int_to[i] = PyInt_AsLong(element);
+                    else if (PyFloat_Check(element))
+                        int_to[i] = (int)PyFloat_AsDouble(element);
+                    else if (PyBool_Check(element)) {
+                        if (PyObject_IsTrue(element))
+                            int_to[i] = 1;
+                        else
+                            int_to[i] = 0;
+                    }
+                    else
+                        return 1;
+                }
+            }
+            else {
+                if (PyInt_Check(from))
+                    *int_to = PyInt_AsLong(from);
+                else if (PyFloat_Check(from))
+                    *int_to = (int)PyFloat_AsDouble(from);
+                else if (PyBool_Check(from)) {
+                    if (PyObject_IsTrue(from))
+                        *int_to = 1;
+                    else
+                        *int_to = 0;
+                }
+                else
+                    return 1;
+            }
+            break;
+        }
+        case 'f':
+        {
+            float *float_to = (float*)to;
+            if (length > 1) {
+                for (i=0; i<length; i++) {
+                    PyObject *element = PySequence_GetItem(from, i);
+                    if (PyFloat_Check(element))
+                        float_to[i] = PyFloat_AsDouble(element);
+                    else if (PyInt_Check(element))
+                        float_to[i] = (float)PyInt_AsLong(element);
+                    else if (PyBool_Check(element)) {
+                        if (PyObject_IsTrue(element))
+                            float_to[i] = 1.;
+                        else
+                            float_to[i] = 0.;
+                    }
+                    else
+                        return 1;
+                }
+            }
+            else {
+                if (PyFloat_Check(from))
+                    *float_to = PyFloat_AsDouble(from);
+                else if (PyInt_Check(from))
+                    *float_to = (float)PyInt_AsLong(from);
+                else if (PyBool_Check(from)) {
+                    if (PyObject_IsTrue(from))
+                        *float_to = 1.;
+                    else
+                        *float_to = 0.;
+                }
+                else
+                    return 1;
+            }
+            break;
+        }
+        default:
+            return 1;
+            break;
+    }
+    return 0;
+}
+
+static int check_type(PyObject *v, char *c, int can_promote, int allow_sequence)
+{
+    if (PySequence_Check(v) && !PyString_Check(v)) {
+        if (allow_sequence) {
+            int i;
+            for (i=0; i<PySequence_Size(v); i++) {
+                if (check_type(PySequence_GetItem(v, i), c, can_promote, 0))
+                    return 1;
+            }
+        }
+        else
+            return 1;
+    }
+    else if (PyInt_Check(v) || PyBool_Check(v)) {
+        if (*c == 0)
+            *c = 'i';
+        else if (*c == 's')
+            return 1;
+    }
+    else if (PyFloat_Check(v)) {
+        if (*c == 0)
+            *c = 'f';
+        else if (*c == 's')
+            return 1;
+        else if (*c == 'i' && can_promote)
+            *c = 'f';
+    }
+    else if (PyString_Check(v)) {
+        if (*c == 0)
+            *c = 's';
+        else if (*c != 's' && *c != 'c')
+            return 1;
+    }
+    return 0;
+}
+
+static void alloc_and_copy_maybe_vector(PyObject *v, char *type,
+                                        void **value, int *length)
+{
+    // need to check type of arguments!
+    int type_set = *type;
+    if (check_type(v, type, type_set, 1)) {
+        PyErr_SetString(PyExc_ValueError, "Type mismatch.");
+        return;
+    }
+    if (*type == 0) {
+        PyErr_SetString(PyExc_ValueError, "Error finding type.");
+        return;
+    }
+    if (*value)
+        free(*value);
+
+    int obj_len = 1;
+    if (PySequence_Check(v))
+        obj_len = PySequence_Size(v);
+
+    if (!*length)
+        *length = obj_len;
+    else if (obj_len != *length) {
+        *value = 0;
+        PyErr_SetString(PyExc_ValueError,
+                        "Vector lengths don't match.");
+        return;
+    }
+
+    *value = malloc(*length * mapper_type_size(*type));
+    if (py_to_prop(v, *value, *type, *length)) {
+        free(*value);
+        *value = 0;
+    }
+}
+
+static PyObject *prop_to_py(char type, int length, const void *value)
+{
+    if (!length)
+        return 0;
+    int i;
+    PyObject *v = 0;
+    if (length > 1)
+        v = PyList_New(length);
+
+    switch (type) {
+        case 's':
+        case 'S':
+        {
+            if (length > 1) {
+                char **vect = (char**)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, PyString_FromString(vect[i]));
+            }
+            else
+                v = PyString_FromString((char*)value);
+            break;
+        }
+        case 'c':
+        {
+            if (length > 1) {
+                char *vect = (char*)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("c", vect[i]));
+            }
+            else
+                v = Py_BuildValue("c", *(char*)value);
+            break;
+        }
+        case 'i':
+        {
+            if (length > 1) {
+                int *vect = (int*)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("i", vect[i]));
+            }
+            else
+                v = Py_BuildValue("i", *(int*)value);
+            break;
+        }
+        case 'h':
+        {
+            if (length > 1) {
+                int64_t *vect = (int64_t*)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("l", vect[i]));
+            }
+            else
+                v = Py_BuildValue("l", *(int64_t*)value);
+            break;
+        }
+        case 'f':
+        {
+            if (length > 1) {
+                float *vect = (float*)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("f", vect[i]));
+            }
+            else
+                v = Py_BuildValue("f", *(float*)value);
+            break;
+        }
+        case 'd':
+        {
+            if (length > 1) {
+                double *vect = (double*)value;
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("d", vect[i]));
+            }
+            else
+                v = Py_BuildValue("d", *(double*)value);
+            break;
+        }
+        case 't':
+        {
+            mapper_timetag_t *vect = (mapper_timetag_t*)value;
+            if (length > 1) {
+                for (i=0; i<length; i++)
+                    PyList_SetItem(v, i, Py_BuildValue("d",
+                        mapper_timetag_get_double(vect[i])));
+            }
+            else
+                v = Py_BuildValue("d", mapper_timetag_get_double(*vect));
+            break;
+        }
+        default:
+            return 0;
+            break;
+    }
+    return v;
+}
+
 static PyObject *device_to_py(mapper_db_device_t *dev)
 {
     if (!dev) return Py_None;
@@ -328,31 +722,18 @@ static PyObject *device_to_py(mapper_db_device_t *dev)
     else {
         int i=0;
         const char *property;
-        lo_type type;
-        const lo_arg *value;
+        char type;
+        const void *value;
+        int length;
         while (!mapper_db_device_property_index(dev, i, &property,
-                                                &type, &value))
+                                                &type, &value, &length))
         {
             if (strcmp(property, "user_data")==0) {
                 i++;
                 continue;
             }
             PyObject *v = 0;
-            if (type=='s' || type=='S')
-                v = PyString_FromString(&value->s);
-            else if (type=='c')
-                v = Py_BuildValue("c", value->c);
-            else if (type=='i')
-                v = Py_BuildValue("i", value->i32);
-            else if (type=='h')
-                v = Py_BuildValue("l", value->i64);
-            else if (type=='f')
-                v = Py_BuildValue("f", value->f);
-            else if (type=='d')
-                v = Py_BuildValue("d", value->d);
-            else if (type=='t')
-                v = Py_BuildValue("d", mapper_timetag_get_double(value->t));
-            if (v) {
+            if ((v = prop_to_py(type, length, value))) {
                 PyDict_SetItemString(o, property, v);
                 Py_DECREF(v);
             }
@@ -371,29 +752,18 @@ static PyObject *signal_to_py(mapper_db_signal_t *sig)
     else {
         int i=0;
         const char *property;
-        lo_type type;
-        const lo_arg *value;
+        char type;
+        const void *value;
+        int length;
         while (!mapper_db_signal_property_index(sig, i, &property,
-                                                &type, &value))
+                                                &type, &value, &length))
         {
             if (strcmp(property, "user_data")==0) {
                 i++;
                 continue;
             }
             PyObject *v = 0;
-            if (type=='s' || type=='S')
-                v = PyString_FromString(&value->s);
-            else if (type=='c')
-                v = Py_BuildValue("c", value->c);
-            else if (type=='i')
-                v = Py_BuildValue("i", value->i32);
-            else if (type=='h')
-                v = Py_BuildValue("l", value->i64);
-            else if (type=='f')
-                v = Py_BuildValue("f", value->f);
-            else if (type=='d')
-                v = Py_BuildValue("d", value->d);
-            if (v) {
+            if ((v = prop_to_py(type, length, value))) {
                 PyDict_SetItemString(o, property, v);
                 Py_DECREF(v);
             }
@@ -406,38 +776,52 @@ static PyObject *signal_to_py(mapper_db_signal_t *sig)
 static PyObject *connection_to_py(mapper_db_connection_t *con)
 {
     if (!con) return Py_None;
-    PyObject *o;
-    o = Py_BuildValue("{s:s,s:s,s:c,s:c,s:i,s:i,s:i,s:i,s:(OOOO),s:s,s:i,s:i}",
-                      "src_name", con->src_name,
-                      "dest_name", con->dest_name,
-                      "src_type", con->src_type,
-                      "dest_type", con->dest_type,
-                      "src_length", con->src_length,
-                      "dest_length", con->dest_length,
-                      "bound_max", con->bound_max,
-                      "bound_min", con->bound_min,
-                      "range",
-                      (con->range.known & CONNECTION_RANGE_SRC_MIN
-                       ? Py_BuildValue("f", con->range.src_min) : Py_None),
-                      (con->range.known & CONNECTION_RANGE_SRC_MAX
-                       ? Py_BuildValue("f", con->range.src_max) : Py_None),
-                      (con->range.known & CONNECTION_RANGE_DEST_MIN
-                       ? Py_BuildValue("f", con->range.dest_min) : Py_None),
-                      (con->range.known & CONNECTION_RANGE_DEST_MAX
-                       ? Py_BuildValue("f", con->range.dest_max) : Py_None),
-                      "expression", con->expression,
-                      "mode", con->mode,
-                      "muted", con->muted);
+    PyObject *o = PyDict_New();
+    if (!o)
+        return Py_None;
+    else {
+        int i=0;
+        const char *property;
+        char type;
+        const void *value;
+        int length;
+        while (!mapper_db_connection_property_index(con, i, &property,
+                                                    &type, &value, &length))
+        {
+            PyObject *v = 0;
+            if ((v = prop_to_py(type, length, value))) {
+                PyDict_SetItemString(o, property, v);
+                Py_DECREF(v);
+            }
+            i++;
+        }
+    }
     return o;
 }
 
 static PyObject *link_to_py(mapper_db_link_t *link)
 {
     if (!link) return Py_None;
-    PyObject *o =
-        Py_BuildValue("{s:s,s:s}",
-                      "src_name", link->src_name, 
-                      "dest_name", link->dest_name);
+    PyObject *o = PyDict_New();
+    if (!o)
+        return Py_None;
+    else {
+        int i=0;
+        const char *property;
+        char type;
+        const void *value;
+        int length;
+        while (!mapper_db_link_property_index(link, i, &property,
+                                              &type, &value, &length))
+        {
+            PyObject *v = 0;
+            if ((v = prop_to_py(type, length, value))) {
+                PyDict_SetItemString(o, property, v);
+                Py_DECREF(v);
+            }
+            i++;
+        }
+    }
     return o;
 }
 
@@ -460,7 +844,9 @@ static void msig_handler_py(struct _mapper_signal *msig,
 {
     PyEval_RestoreThread(_save);
     PyObject *arglist=0;
+    PyObject *valuelist=0;
     PyObject *result=0;
+    int i;
 
     PyObject *py_msig = SWIG_NewPointerObj(SWIG_as_voidptr(msig),
                                           SWIGTYPE_p__signal, 0);
@@ -468,13 +854,35 @@ static void msig_handler_py(struct _mapper_signal *msig,
     double timetag = mapper_timetag_get_double(*tt);
 
     if (v) {
-        if (props->type == 'i')
-            arglist = Py_BuildValue("(Oiid)", py_msig, instance_id, *(int*)v, timetag);
-        else if (props->type == 'f')
-            arglist = Py_BuildValue("(Oifd)", py_msig, instance_id, *(float*)v, timetag);
+        if (props->type == 'i') {
+            int *vint = (int *)v;
+            if (props->length > 1 || count > 1) {
+                valuelist = PyList_New(props->length * count);
+                for (i=0; i<props->length * count; i++) {
+                    PyObject *o = Py_BuildValue("i", vint[i]);
+                    PyList_SET_ITEM(valuelist, i, o);
+                }
+                arglist = Py_BuildValue("(OiOd)", py_msig, instance_id, valuelist, timetag);
+            }
+            else
+                arglist = Py_BuildValue("(Oiid)", py_msig, instance_id, *(int*)v, timetag);
+        }
+        else if (props->type == 'f') {
+            if (props->length > 1 || count > 1) {
+                float *vfloat = (float *)v;
+                valuelist = PyList_New(props->length * count);
+                for (i=0; i<props->length * count; i++) {
+                    PyObject *o = Py_BuildValue("f", vfloat[i]);
+                    PyList_SET_ITEM(valuelist, i, o);
+                }
+                arglist = Py_BuildValue("(OiOd)", py_msig, instance_id, valuelist, timetag);
+            }
+            else
+                arglist = Py_BuildValue("(Oifd)", py_msig, instance_id, *(float*)v, timetag);
+        }
     }
     else {
-        arglist = Py_BuildValue("(Oisd)", py_msig, instance_id, 0, timetag);
+        arglist = Py_BuildValue("(OiOd)", py_msig, instance_id, Py_None, timetag);
     }
     if (!arglist) {
         printf("[mapper] Could not build arglist (msig_handler_py).\n");
@@ -483,6 +891,7 @@ static void msig_handler_py(struct _mapper_signal *msig,
     PyObject **callbacks = (PyObject**)props->user_data;
     result = PyEval_CallObject(callbacks[0], arglist);
     Py_DECREF(arglist);
+    Py_XDECREF(valuelist);
     Py_XDECREF(result);
     _save = PyEval_SaveThread();
 }
@@ -520,10 +929,137 @@ static void msig_instance_event_handler_py(struct _mapper_signal *msig,
     _save = PyEval_SaveThread();
 }
 
+/* Wrapper for callback back to python when a device link handler is called. */
+static void device_link_handler_py(mapper_device dev,
+                                   mapper_db_link link,
+                                   mapper_device_local_action_t action,
+                                   void *user)
+{
+    PyEval_RestoreThread(_save);
+    PyObject *arglist = Py_BuildValue("OOi", device_to_py(&dev->props), link_to_py(link), action);
+    if (!arglist) {
+        printf("[mapper] Could not build arglist (device_link_handler_py).\n");
+        return;
+    }
+    PyObject *result = PyEval_CallObject((PyObject*)user, arglist);
+    Py_DECREF(arglist);
+    Py_XDECREF(result);
+    _save = PyEval_SaveThread();
+}
+
+/* Wrapper for callback back to python when a device connection handler is called. */
+static void device_connection_handler_py(mapper_device dev,
+                                         mapper_db_link link,
+                                         mapper_signal signal,
+                                         mapper_db_connection connection,
+                                         mapper_device_local_action_t action,
+                                         void *user)
+{
+    PyEval_RestoreThread(_save);
+    PyObject *arglist = Py_BuildValue("OOOOi", device_to_py(&dev->props), link_to_py(link),
+                                      signal_to_py(&signal->props), connection_to_py(connection),
+                                      action);
+    if (!arglist) {
+        printf("[mapper] Could not build arglist (device_connection_handler_py).\n");
+        return;
+    }
+    PyObject *result = PyEval_CallObject((PyObject*)user, arglist);
+    Py_DECREF(arglist);
+    Py_XDECREF(result);
+    _save = PyEval_SaveThread();
+}
+
 typedef struct {
-    mapper_signal_value_t v;
-    char t;
-} sigval, *maybeSigVal;
+    char type;
+    int length;
+    void *value;
+    int free_value;
+} propval, *maybePropVal;
+
+static int coerce_prop(maybePropVal val, char type)
+{
+    int i;
+    if (!val)
+        return 1;
+    if (val->type == type)
+        return 0;
+
+    switch (type) {
+        case 'i':
+        {
+            int *to = malloc(val->length * sizeof(int));
+            if (val->type == 'f') {
+                float *from = (float*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (int)from[i];
+            }
+            else if (val->type == 'd') {
+                double *from = (double*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (int)from[i];
+            }
+            else {
+                free(to);
+                return 1;
+            }
+            if (val->free_value)
+                free(val->value);
+            val->value = to;
+            val->free_value = 1;
+            break;
+        }
+        case 'f':
+        {
+            float *to = malloc(val->length * sizeof(float));
+            if (val->type == 'i') {
+                int *from = (int*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (float)from[i];
+            }
+            else if (val->type == 'd') {
+                double *from = (double*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (float)from[i];
+            }
+            else {
+                free(to);
+                return 1;
+            }
+            if (val->free_value)
+                free(val->value);
+            val->value = to;
+            val->free_value = 1;
+            break;
+        }
+        case 'd':
+        {
+            double *to = malloc(val->length * sizeof(double));
+            if (val->type == 'i') {
+                int *from = (int*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (double)from[i];
+            }
+            else if (val->type == 'f') {
+                float *from = (float*)val->value;
+                for (i=0; i<val->length; i++)
+                    to[i] = (double)from[i];
+            }
+            else {
+                free(to);
+                return 1;
+            }
+            if (val->free_value)
+                free(val->value);
+            val->value = to;
+            val->free_value = 1;
+            break;
+        }
+        default:
+            return 1;
+            break;
+    }
+    return 0;
+}
 
 typedef int* maybeInt;
 typedef int booltype;
@@ -538,14 +1074,6 @@ typedef struct {
     int flags;
 } mapper_db_connection_with_flags_t;
 
-static void sigval_coerce(mapper_signal_value_t *out, sigval *v, char type)
-{
-    if (v->t == 'i' && type == 'f')
-        out->f = (float)v->v.i32;
-    else if (v->t == 'f' && type == 'i')
-        out->i32 = (int)v->v.f;
-}
-
 
 /* Wrapper for callback back to python when a mapper_db_device handler
  * is called. */
@@ -663,6 +1191,14 @@ typedef enum {
     IN_OVERFLOW             = 0x08  //!< No local instances left for incoming remote instance.
 } msig_instance_event_t;
 
+/*! Possible monitor auto-request settings. */
+typedef enum {
+    AUTOREQ_SIGNALS     = 0x01,
+    AUTOREQ_LINKS       = 0x02,
+    AUTOREQ_CONNECTIONS = 0x04,
+    AUTOREQ_ALL         = 0xFF
+} mapper_monitor_autoreq_mode_t;
+
 /*! The set of possible actions on a database record, used
  *  to inform callbacks of what is happening to a record. */
 typedef enum {
@@ -671,6 +1207,12 @@ typedef enum {
     MDB_REMOVE,
 } mapper_db_action_t;
 
+typedef enum {
+    MDEV_LOCAL_ESTABLISHED,
+    MDEV_LOCAL_DESTROYED,
+    MDEV_LOCAL_MODIFIED,
+} mapper_device_local_action_t;
+
 typedef struct _device {} device;
 typedef struct _signal {} signal;
 typedef struct _monitor {} monitor;
@@ -678,7 +1220,7 @@ typedef struct _db {} db;
 typedef struct _admin {} admin;
 
 %extend _device {
-    _device(const char *name, int port=9000, admin *DISOWN=0) {
+    _device(const char *name, int port=0, admin *DISOWN=0) {
         device *d = (device *)mdev_new(name, port, (mapper_admin) DISOWN);
         return d;
     }
@@ -699,9 +1241,10 @@ typedef struct _admin {} admin;
     // Python.  Correspondingly, the SWIG default is to set thisown to
     // False, which is correct for this case.
     signal* add_input(const char *name, int length=1, const char type='f',
-                      const char *unit=0, maybeSigVal minimum=0,
-                      maybeSigVal maximum=0, PyObject *PyFunc=0)
+                      const char *unit=0, maybePropVal minimum=0,
+                      maybePropVal maximum=0, PyObject *PyFunc=0)
     {
+        int i;
         void *h = 0;
         PyObject **callbacks = 0;
         if (PyFunc) {
@@ -711,95 +1254,146 @@ typedef struct _admin {} admin;
             callbacks[1] = 0;
             Py_INCREF(PyFunc);
         }
-        mapper_signal_value_t mn, mx, *pmn=0, *pmx=0;
+        void *pmn=0, *pmx=0;
+        int pmn_coerced=0, pmx_coerced=0;
         if (type == 'f')
         {
-            if (minimum) {
-                if (minimum->t == 'f')
-                    pmn = &minimum->v;
-                else {
-                    mn.f = (float)minimum->v.i32;
-                    pmn = &mn;
+            if (minimum && minimum->length == length) {
+                if (minimum->type == 'f')
+                    pmn = minimum->value;
+                else if (minimum->type == 'i') {
+                    float *to = (float*)malloc(length * sizeof(float));
+                    int *from = (int*)minimum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (float)from[i];
+                    }
+                    pmn = to;
+                    pmn_coerced = 1;
                 }
             }
-            if (maximum) {
-                if (maximum->t == 'f')
-                    pmx = &maximum->v;
-                else {
-                    mx.f = (float)maximum->v.i32;
-                    pmx = &mx;
+            if (maximum && maximum->length == length) {
+                if (maximum->type == 'f')
+                    pmx = maximum->value;
+                else if (maximum->type == 'i') {
+                    float *to = (float*)malloc(length * sizeof(float));
+                    int *from = (int*)maximum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (float)from[i];
+                    }
+                    pmx = to;
+                    pmx_coerced = 1;
                 }
             }
         }
         else if (type == 'i')
         {
-            if (minimum) {
-                if (minimum->t == 'i')
-                    pmn = &minimum->v;
-                else {
-                    mn.i32 = (int)minimum->v.f;
-                    pmn = &mn;
+            if (minimum && minimum->length == length) {
+                if (minimum->type == 'i')
+                    pmn = minimum->value;
+                else if (minimum->type == 'f') {
+                    int *to = (int*)malloc(length * sizeof(int));
+                    float *from = (float*)minimum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (int)from[i];
+                    }
+                    pmn = to;
+                    pmn_coerced = 1;
                 }
             }
-            if (maximum) {
-                if (maximum->t == 'i')
-                    pmx = &maximum->v;
-                else {
-                    mx.i32 = (int)maximum->v.f;
-                    pmx = &mx;
+            if (maximum && maximum->length == length) {
+                if (maximum->type == 'i')
+                    pmx = maximum->value;
+                else if (maximum->type == 'f') {
+                    int *to = (int*)malloc(length * sizeof(int));
+                    float *from = (float*)maximum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (int)from[i];
+                    }
+                    pmx = to;
+                    pmx_coerced = 1;
                 }
             }
         }
         mapper_signal msig = mdev_add_input((mapper_device)$self, name,
                                             length, type, unit, pmn, pmx,
                                             h, callbacks);
+        if (pmn_coerced)
+            free(pmn);
+        if (pmx_coerced)
+            free(pmx);
         return (signal *)msig;
     }
     signal* add_output(const char *name, int length=1, const char type='f',
-                       const char *unit=0, maybeSigVal minimum=0,
-                       maybeSigVal maximum=0)
+                       const char *unit=0, maybePropVal minimum=0,
+                       maybePropVal maximum=0)
     {
-        mapper_signal_value_t mn, mx, *pmn=0, *pmx=0;
+        int i;
+        void *pmn=0, *pmx=0;
+        int pmn_coerced=0, pmx_coerced=0;
         if (type == 'f')
         {
-            if (minimum) {
-                if (minimum->t == 'f')
-                    pmn = &minimum->v;
-                else {
-                    mn.f = (float)minimum->v.i32;
-                    pmn = &mn;
+            if (minimum && minimum->length == length) {
+                if (minimum->type == 'f')
+                    pmn = minimum->value;
+                else if (minimum->type == 'i') {
+                    float *to = (float*)malloc(length * sizeof(float));
+                    int *from = (int*)minimum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (float)from[i];
+                    }
+                    pmn = to;
+                    pmn_coerced = 1;
                 }
             }
-            if (maximum) {
-                if (maximum->t == 'f')
-                    pmx = &maximum->v;
-                else {
-                    mx.f = (float)maximum->v.i32;
-                    pmx = &mx;
+            if (maximum && maximum->length == length) {
+                if (maximum->type == 'f')
+                    pmx = maximum->value;
+                else if (maximum->type == 'i') {
+                    float *to = (float*)malloc(length * sizeof(float));
+                    int *from = (int*)maximum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (float)from[i];
+                    }
+                    pmx = to;
+                    pmx_coerced = 1;
                 }
             }
         }
         else if (type == 'i')
         {
-            if (minimum) {
-                if (minimum->t == 'i')
-                    pmn = &minimum->v;
-                else {
-                    mn.i32 = (int)minimum->v.f;
-                    pmn = &mn;
+            if (minimum && minimum->length == length) {
+                if (minimum->type == 'i')
+                    pmn = minimum->value;
+                else if (minimum->type == 'f') {
+                    int *to = (int*)malloc(length * sizeof(int));
+                    float *from = (float*)minimum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (int)from[i];
+                    }
+                    pmn = to;
+                    pmn_coerced = 1;
                 }
             }
-            if (maximum) {
-                if (maximum->t == 'i')
-                    pmx = &maximum->v;
-                else {
-                    mx.i32 = (int)maximum->v.f;
-                    pmx = &mx;
+            if (maximum && maximum->length == length) {
+                if (maximum->type == 'i')
+                    pmx = maximum->value;
+                else if (maximum->type == 'f') {
+                    int *to = (int*)malloc(length * sizeof(int));
+                    float *from = (float*)maximum->value;
+                    for (i=0; i<length; i++) {
+                        to[i] = (int)from[i];
+                    }
+                    pmx = to;
+                    pmx_coerced = 1;
                 }
             }
         }
         mapper_signal msig = mdev_add_output((mapper_device)$self, name, length,
                                              type, unit, pmn, pmx);
+        if (pmn_coerced)
+            free(pmn);
+        if (pmx_coerced)
+            free(pmx);
         return (signal *)msig;
     }
     void remove_input(signal *sig) {
@@ -850,27 +1444,53 @@ typedef struct _admin {} admin;
     signal *get_output_by_index(int index) {
         return (signal *)mdev_get_output_by_index((mapper_device)$self, index);
     }
-    void set_property(const char *key, void* val=0) {
-        if (!val)
+    mapper_db_device get_properties() {
+        return mdev_properties((mapper_device)$self);
+    }
+    void set_property(const char *key, maybePropVal val=0) {
+        if (val)
+            mdev_set_property((mapper_device)$self, key, val->type,
+                              val->value, val->length);
+        else
             mdev_remove_property((mapper_device)$self, key);
     }
-    void set_property(const char *key, int val) {
-        mdev_set_property((mapper_device)$self, key, 'i', (lo_arg*)&val);
+    void remove_property(const char *key) {
+        mdev_remove_property((mapper_device)$self, key);
     }
-    void set_property(const char *key, int64_t val) {
-        mdev_set_property((mapper_device)$self, key, 'h', (lo_arg*)&val);
+    double now() {
+        mapper_timetag_t tt;
+        mdev_now((mapper_device)$self, &tt);
+        return mapper_timetag_get_double(tt);
     }
-    void set_property(const char *key, double val) {
-        mdev_set_property((mapper_device)$self, key, 'd', (lo_arg*)&val);
+    void start_queue(double timetag) {
+        mapper_timetag_t tt;
+        mapper_timetag_set_double(&tt, timetag);
+        mdev_start_queue((mapper_device)$self, tt);
     }
-    void set_property(const char *key, float val) {
-        mdev_set_property((mapper_device)$self, key, 'f', (lo_arg*)&val);
+    void send_queue(double timetag) {
+        mapper_timetag_t tt;
+        mapper_timetag_set_double(&tt, timetag);
+        mdev_send_queue((mapper_device)$self, tt);
     }
-    void set_property(const char *key, const char *val) {
-        mdev_set_property((mapper_device)$self, key, 's', (lo_arg*)val);
+    void set_link_callback(PyObject *PyFunc=0) {
+        void *h = 0;
+        if (PyFunc) {
+            h = device_link_handler_py;
+            Py_XINCREF(PyFunc);
+        }
+        else
+            Py_XDECREF(((mapper_device)$self)->link_cb_userdata);
+        mdev_set_link_callback((mapper_device)$self, h, PyFunc);
     }
-    void remove_property(const char *key) {
-        mdev_remove_property((mapper_device)$self, key);
+    void set_connection_callback(PyObject *PyFunc=0) {
+        void *h = 0;
+        if (PyFunc) {
+            Py_XINCREF(PyFunc);
+            h = device_connection_handler_py;
+        }
+        else
+            Py_XDECREF(((mapper_device)$self)->connection_cb_userdata);
+        mdev_set_connection_callback((mapper_device)$self, h, PyFunc);
     }
     %pythoncode {
         port = property(get_port)
@@ -881,21 +1501,21 @@ typedef struct _admin {} admin;
         num_inputs = property(get_num_inputs)
         num_outputs = property(get_num_outputs)
         def __propgetter(self):
-            signal = self
-            props = {}
+            device = self
+            props = self.get_properties()
             class propsetter(dict):
                 __getitem__ = props.__getitem__
                 def __setitem__(self, key, value):
                     props[key] = value
-                    signal.set_property(key, value)
-            return propsetter({})
+                    device.set_property(key, value)
+            return propsetter(self.get_properties())
         properties = property(__propgetter)
         def set_properties(self, props):
             [self.set_property(k, props[k]) for k in props]
     }
 }
 
-%extend signal {
+%extend _signal {
     const char *get_name() {
         return ((mapper_signal)$self)->props.name;
     }
@@ -911,56 +1531,55 @@ typedef struct _admin {} admin;
         }
         return 0;
     }
-    void update(float f, double timetag=0) {
+    void update(maybePropVal val=0, double timetag=0) {
         mapper_timetag_t tt = MAPPER_NOW;
         if (timetag)
             mapper_timetag_set_double(&tt, timetag);
         mapper_signal sig = (mapper_signal)$self;
-        if (sig->props.type == 'f')
-            msig_update((mapper_signal)$self, &f, 1, tt);
-        else if (sig->props.type == 'i') {
-            int i = (int)f;
-            msig_update((mapper_signal)$self, &i, 1, tt);
+        if (!val) {
+            msig_update(sig, 0, 1, tt);
+            return;
         }
-    }
-    void update(int i, double timetag=0) {
-        mapper_timetag_t tt = MAPPER_NOW;
-        if (timetag)
-            mapper_timetag_set_double(&tt, timetag);
-        mapper_signal sig = (mapper_signal)$self;
-        if (sig->props.type == 'i')
-            msig_update((mapper_signal)$self, &i, 1, tt);
-        else if (sig->props.type == 'f') {
-            float f = (float)i;
-            msig_update((mapper_signal)$self, &f, 1, tt);
+        else if (val->length < sig->props.length ||
+                 (val->length % sig->props.length) != 0) {
+            printf("Signal update requires multiples of %i values.\n",
+                   sig->props.length);
+            return;
         }
+        int count = val->length / sig->props.length;
+        if (coerce_prop(val, sig->props.type)) {
+            printf("update: type mismatch\n");
+            return;
+        }
+        msig_update(sig, val->value, count, tt);
     }
-    void reserve_instances(int num) {
-        msig_reserve_instances((mapper_signal)$self, num);
+    void reserve_instances(int num=1) {
+        msig_reserve_instances((mapper_signal)$self, num, 0, 0);
     }
-    void update_instance(int id, float f, double timetag=0) {
-        mapper_timetag_t tt = MAPPER_NOW;
-        if (timetag)
-            mapper_timetag_set_double(&tt, timetag);
-        mapper_signal sig = (mapper_signal)$self;
-        if (sig->props.type == 'f')
-            msig_update_instance((mapper_signal)$self, id, &f, 0, tt);
-        else if (sig->props.type == 'i') {
-            int i = (int)f;
-            msig_update_instance((mapper_signal)$self, id, &i, 0, tt);
-        }
+    void reserve_instances(int num_int, int *argv) {
+        msig_reserve_instances((mapper_signal)$self, num_int, argv, 0);
     }
-    void update_instance(int id, int i, double timetag=0) {
+    void update_instance(int id, maybePropVal val=0, double timetag=0) {
         mapper_timetag_t tt = MAPPER_NOW;
         if (timetag)
             mapper_timetag_set_double(&tt, timetag);
         mapper_signal sig = (mapper_signal)$self;
-        if (sig->props.type == 'i')
-            msig_update_instance((mapper_signal)$self, id, &i, 0, tt);
-        else if (sig->props.type == 'f') {
-            float f = (float)i;
-            msig_update_instance((mapper_signal)$self, id, &f, 0, tt);
+        if (!val) {
+            msig_update(sig, 0, 1, tt);
+            return;
+        }
+        else if (val->length < sig->props.length ||
+                 (val->length % sig->props.length) != 0) {
+            printf("Signal update requires multiples of %i values.\n",
+                   sig->props.length);
+            return;
         }
+        int count = val->length / sig->props.length;
+        if (coerce_prop(val, sig->props.type)) {
+            printf("update: type mismatch\n");
+            return;
+        }
+        msig_update_instance(sig, id, val->value, count, tt);
     }
     void release_instance(int id, double timetag=0) {
         mapper_timetag_t tt = MAPPER_NOW;
@@ -968,6 +1587,9 @@ typedef struct _admin {} admin;
             mapper_timetag_set_double(&tt, timetag);
         msig_release_instance((mapper_signal)$self, id, tt);
     }
+    void remove_instance(int id) {
+        msig_remove_instance((mapper_signal)$self, id);
+    }
     int active_instance_id(int index) {
         return msig_active_instance_id((mapper_signal)$self, index);
     }
@@ -994,7 +1616,7 @@ typedef struct _admin {} admin;
                 callbacks[0] = 0;
                 callbacks[1] = PyFunc;
             }
-            Py_XINCREF(PyFunc);
+            Py_INCREF(PyFunc);
         }
         else if (callbacks) {
             Py_XDECREF(callbacks[1]);
@@ -1020,9 +1642,8 @@ typedef struct _admin {} admin;
                 callbacks = malloc(2 * sizeof(PyObject*));
                 callbacks[0] = PyFunc;
                 callbacks[1] = 0;
-                Py_XINCREF(callbacks);
             }
-            Py_XINCREF(PyFunc);
+            Py_INCREF(PyFunc);
         }
         else if (callbacks) {
             Py_XDECREF(callbacks[0]);
@@ -1030,11 +1651,11 @@ typedef struct _admin {} admin;
                 callbacks[0] = 0;
             }
             else {
-                Py_XDECREF(callbacks);
+                free(callbacks);
                 callbacks = 0;
             }
         }
-        return msig_set_callback((mapper_signal)$self, h, callbacks);
+        msig_set_callback((mapper_signal)$self, h, callbacks);
     }
     int query_remotes(double timetag=0) {
         mapper_timetag_t tt = MAPPER_NOW;
@@ -1042,47 +1663,59 @@ typedef struct _admin {} admin;
             mapper_timetag_set_double(&tt, timetag);
         return msig_query_remotes((mapper_signal)$self, tt);
     }
-    void set_minimum(maybeSigVal v) {
+    void set_minimum(maybePropVal val=0) {
         mapper_signal sig = (mapper_signal)$self;
-        if (!v)
+        if (!val) {
             msig_set_minimum((mapper_signal)$self, 0);
-        else if (v->t == sig->props.type)
-            msig_set_minimum((mapper_signal)$self, &v->v);
-        else {
-            mapper_signal_value_t tmp;
-            sigval_coerce(&tmp, v, sig->props.type);
-            msig_set_minimum((mapper_signal)$self, &tmp);
+            return;
+        }
+        else if (sig->props.length != val->length) {
+            printf("set_minimum: value length must be %i\n", sig->props.length);
+            return;
         }
+        else if (coerce_prop(val, sig->props.type)) {
+            printf("set_minimum: value type mismatch\n");
+            return;
+        }
+        msig_set_minimum((mapper_signal)$self, val->value);
     }
-    void set_maximum(maybeSigVal v) {
+    void set_maximum(maybePropVal val=0) {
         mapper_signal sig = (mapper_signal)$self;
-        if (!v)
+        if (!val) {
             msig_set_maximum((mapper_signal)$self, 0);
-        else if (v->t == sig->props.type)
-            msig_set_maximum((mapper_signal)$self, &v->v);
-        else {
-            mapper_signal_value_t tmp;
-            sigval_coerce(&tmp, v, sig->props.type);
-            msig_set_maximum((mapper_signal)$self, &tmp);
+            return;
         }
+        else if (sig->props.length != val->length) {
+            printf("set_maximum: value length must be %i\n", sig->props.length);
+            return;
+        }
+        else if (coerce_prop(val, sig->props.type)) {
+            printf("set_maximum: value type mismatch\n");
+            return;
+        }
+        msig_set_maximum((mapper_signal)$self, val->value);
     }
-    maybeSigVal get_minimum() {
+    maybePropVal get_minimum() {
         mapper_signal sig = (mapper_signal)$self;
         if (sig->props.minimum) {
-            sigval *pv = malloc(sizeof(sigval));
-            pv->t = sig->props.type;
-            pv->v = *sig->props.minimum;
-            return pv;
+            maybePropVal prop = malloc(sizeof(maybePropVal));
+            prop->type = sig->props.type;
+            prop->length = sig->props.length;
+            prop->value = sig->props.minimum;
+            prop->free_value = 0;
+            return prop;
         }
         return 0;
     }
-    maybeSigVal get_maximum() {
+    maybePropVal get_maximum() {
         mapper_signal sig = (mapper_signal)$self;
         if (sig->props.maximum) {
-            sigval *pv = malloc(sizeof(sigval));
-            pv->t = sig->props.type;
-            pv->v = *sig->props.maximum;
-            return pv;
+            maybePropVal prop = malloc(sizeof(maybePropVal));
+            prop->type = sig->props.type;
+            prop->length = sig->props.length;
+            prop->value = sig->props.maximum;
+            prop->free_value = 0;
+            return prop;
         }
         return 0;
     }
@@ -1098,25 +1731,13 @@ typedef struct _admin {} admin;
     mapper_db_signal get_properties() {
         return msig_properties((mapper_signal)$self);
     }
-    void set_property(const char *key, void* val=0) {
-        if (!val)
+    void set_property(const char *key, maybePropVal val=0) {
+        if (val)
+            msig_set_property((mapper_signal)$self, key, val->type,
+                              val->value, val->length);
+        else
             msig_remove_property((mapper_signal)$self, key);
     }
-    void set_property(const char *key, int val) {
-        msig_set_property((mapper_signal)$self, key, 'i', (lo_arg*)&val);
-    }
-    void set_property(const char *key, int64_t val) {
-        msig_set_property((mapper_signal)$self, key, 'h', (lo_arg*)&val);
-    }
-    void set_property(const char *key, double val) {
-        msig_set_property((mapper_signal)$self, key, 'd', (lo_arg*)&val);
-    }
-    void set_property(const char *key, float val) {
-        msig_set_property((mapper_signal)$self, key, 'f', (lo_arg*)&val);
-    }
-    void set_property(const char *key, const char *val) {
-        msig_set_property((mapper_signal)$self, key, 's', (lo_arg*)val);
-    }
     void remove_property(const char *key) {
         msig_remove_property((mapper_signal)$self, key);
     }
@@ -1151,9 +1772,9 @@ typedef struct _admin {} admin;
 }
 
 %extend _monitor {
-    _monitor(admin *DISOWN=0, int enable_autorequest=1) {
+    _monitor(admin *DISOWN=0, mapper_monitor_autoreq_mode_t autorequest=0xFF) {
         return (monitor *)mapper_monitor_new((mapper_admin) DISOWN,
-                                             enable_autorequest);
+                                             autorequest);
     }
     ~_monitor() {
         mapper_monitor_free((mapper_monitor)$self);
@@ -1167,8 +1788,8 @@ typedef struct _admin {} admin;
     db *get_db() {
         return (db *)mapper_monitor_get_db((mapper_monitor)$self);
     }
-    void autorequest(const int enable) {
-        mapper_monitor_autorequest((mapper_monitor)$self, enable);
+    void autorequest(mapper_monitor_autoreq_mode_t autorequest) {
+        mapper_monitor_autorequest((mapper_monitor)$self, autorequest);
     }
     int request_devices() {
         return mapper_monitor_request_devices((mapper_monitor)$self);
@@ -1216,17 +1837,14 @@ typedef struct _admin {} admin;
     void unlink(const char* source_device, const char* dest_device) {
         mapper_monitor_unlink((mapper_monitor)$self, source_device, dest_device);
     }
-    void modify(mapper_db_connection_with_flags_t *properties) {
+    void modify_connection(const char* source_signal,
+                           const char* dest_signal,
+                           mapper_db_connection_with_flags_t *properties) {
         if (properties)
         {
-            if (!properties->props.src_name || !properties->props.dest_name)
-                SWIG_exception_fail(SWIG_ValueError,
-                                    "modify() requires 'src_name' and "
-                                    "'dest_name' in properties dict");
-            mapper_monitor_connection_modify((mapper_monitor)$self, &properties->props,
+            mapper_monitor_connection_modify((mapper_monitor)$self, source_signal,
+                                             dest_signal, &properties->props,
                                              properties->flags);
-          fail:
-            ;
         }
     }
     void connect(const char* source_signal,
@@ -1243,12 +1861,17 @@ typedef struct _admin {} admin;
                     const char* dest_signal) {
         mapper_monitor_disconnect((mapper_monitor)$self, source_signal, dest_signal);
     }
+    double now() {
+        mapper_timetag_t tt;
+        mapper_monitor_now((mapper_monitor)$self, &tt);
+        return mapper_timetag_get_double(tt);
+    }
     %pythoncode {
         db = property(get_db)
     }
 }
 
-%extend db {
+%extend _db {
     void add_device_callback(PyObject *PyFunc) {
         Py_XINCREF(PyFunc);
         mapper_db_add_device_callback((mapper_db)$self, device_db_handler_py, PyFunc);
@@ -1371,7 +1994,7 @@ typedef struct _admin {} admin;
             (mapper_db)$self, src_device, src_signal,
             dest_device, dest_signal);
     }
-    mapper_db_connection connection_by_signal_full_names(
+    mapper_db_connection get_connection_by_signal_full_names(
         const char *src_name, const char *dest_name) {
         return mapper_db_get_connection_by_signal_full_names(
             (mapper_db)$self, src_name, dest_name);
@@ -1400,8 +2023,8 @@ typedef struct _admin {} admin;
         return mapper_db_get_links_by_dest_device_name((mapper_db)$self,
                                                        dest_device_name);
     }
-    mapper_db_link link_by_src_dest_names(const char *src_device_name,
-                                          const char *dest_device_name) {
+    mapper_db_link get_link_by_src_dest_names(const char *src_device_name,
+                                              const char *dest_device_name) {
         return mapper_db_get_link_by_src_dest_names((mapper_db)$self,
                                                     src_device_name,
                                                     dest_device_name);
diff --git a/swig/setup.py.in b/swig/setup.py.in
index 765d017..bbf9338 100644
--- a/swig/setup.py.in
+++ b/swig/setup.py.in
@@ -24,8 +24,11 @@ mapper_module = Extension('_mapper',
 
 setup (name = 'mapper',
        version = '@PACKAGE_VERSION@',
-       author      = "IDMIL",
-       description = """Simple swig mapper""",
+       author      = "libmapper.org",
+       author_email = "dot_mapper at googlegroups.com",
+       url = "http://libmapper.org",
+       description = """A library for mapping controllers and synthesizers.""",
+       license = "GNU LGPL version 2.1 or later",
        ext_modules = [mapper_module],
        py_modules = ["mapper"],
        )
diff --git a/swig/test.py b/swig/test.py
new file mode 100755
index 0000000..8f34bd6
--- /dev/null
+++ b/swig/test.py
@@ -0,0 +1,118 @@
+
+import sys, mapper
+
+def h(sig, id, f, timetag):
+    try:
+        print sig.name, f
+    except:
+        print 'exception'
+        print sig, f
+
+def setup(d):
+    sig = d.add_input("/freq", 1, 'i', "Hz", None, None, h)
+    print 'inputs',d.num_inputs
+    print 'minimum',sig.minimum
+    sig.minimum = 34.0
+    print 'minimum',sig.minimum
+    sig.minimum = 12
+    print 'minimum',sig.minimum
+    sig.minimum = None
+    print 'minimum',sig.minimum
+
+    print 'port',d.port
+    print 'device name',d.name
+    print 'device port',d.port
+    print 'device ip',d.ip4
+    print 'device interface',d.interface
+    print 'device ordinal',d.ordinal
+    print 'signal name',sig.name
+    print 'signal full name',sig.full_name
+    while not d.ready():
+        d.poll(10)
+    print 'port',d.port
+    print 'device name',d.name
+    print 'device ip',d.ip4
+    print 'device interface',d.interface
+    print 'device ordinal',d.ordinal
+    print 'signal name',sig.name
+    print 'signal full name',sig.full_name
+    print 'signal is_output',sig.is_output
+    print 'signal length',sig.length
+    print 'signal type', sig.type
+    print 'signal is_output', sig.is_output
+    print 'signal unit', sig.unit
+    d.set_properties({"testInt":5, "testFloat":12.7, "testString":"test",
+                     "removed1":"shouldn't see this"})
+    d.properties['testInt'] = 7
+    d.set_properties({"removed1":None, "removed2":"test"})
+    d.remove_property("removed2")
+    print 'device properties', d.properties
+    print 'signal properties:', sig.properties
+    sig.properties['testInt'] = 3
+    print 'signal properties:', sig.properties
+    d.add_input("/insig", 4, 'f', None, None, None, h)
+    d.add_output("/outsig", 4, 'f')
+    print 'setup done!'
+
+dev = mapper.device("test")
+setup(dev)
+
+def db_cb(rectype, record, action):
+    print rectype,'callback -'
+    print '  record:',record
+    print '  action:',["MODIFY","NEW","REMOVE"][action]
+
+mon = mapper.monitor()
+
+mon.db.add_device_callback(lambda x,y:db_cb('device',x,y))
+mon.db.add_signal_callback(lambda x,y:db_cb('signal',x,y))
+mon.db.add_connection_callback(lambda x,y:db_cb('connection',x,y))
+l = lambda x,y:db_cb('link',x,y)
+mon.db.add_link_callback(l)
+mon.db.remove_link_callback(l)
+
+while not dev.ready():
+    dev.poll(10)
+    mon.poll()
+
+mon.request_devices()
+
+for i in range(1000):
+    dev.poll(10)
+    mon.poll()
+    if i==250:
+        for i in [('devices', mon.db.all_devices),
+                  ('inputs', mon.db.all_inputs),
+                  ('outputs', mon.db.all_outputs),
+                  ('connections', mon.db.all_connections),
+                  ('links', mon.db.all_links)]:
+            print i[0],':'
+            for j in i[1]():
+                print j
+        print 'devices matching "send":'
+        for i in mon.db.match_devices_by_name('send'):
+            print i
+        print 'outputs for device "/testsend.1" matching "3":'
+        for i in mon.db.match_outputs_by_device_name('/testsend.1', '3'):
+            print i
+        print 'links for device "/testsend.1":'
+        for i in mon.db.links_by_src_device_name('/testsend.1'):
+            print i
+        print 'link for /testsend.1, /testrecv.1:'
+        print mon.db.get_link_by_src_dest_names("/testsend.1", "/testrecv.1")
+        print 'not found link:'
+        print mon.db.get_link_by_src_dest_names("/foo", "/bar")
+        mon.link("/test.1", "/test.1")
+
+    if i==500:
+        mon.connect("/test.1/outsig", "/test.1/insig",
+                    {'mode': mapper.MO_EXPRESSION,
+                     'expression': 'y=x',
+                     'src_min': [1,2,3,4],
+                     'bound_min': mapper.BA_WRAP,
+                     'bound_max': mapper.BA_CLAMP})
+    if i==750:
+        mon.modify_connection("/test.1/outsig", "/test.1/insig",
+                              {'src_min':[10,11,12,13],
+                               'muted':True,
+                               'mode': mapper.MO_LINEAR})
diff --git a/swig/testcallbacks.py b/swig/testcallbacks.py
new file mode 100755
index 0000000..f77cdb9
--- /dev/null
+++ b/swig/testcallbacks.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+import sys, mapper
+
+def link_h(dev, link, action):
+    try:
+        print '-->', dev['name'], 'added' if action == mapper.MDEV_LOCAL_ESTABLISHED else 'removed', 'link from', link['dest_name'] if dev['name'] == link['src_name'] else link['src_name']
+    except:
+        print 'exception'
+        print dev
+        print link
+        print action
+
+def connect_h(dev, link, sig, con, action):
+    try:
+        print '-->', dev['name'], 'added' if action == mapper.MDEV_LOCAL_ESTABLISHED else 'removed', 'connection from', link['dest_name']+con['dest_name'] if dev['name'] == link['src_name'] else link['src_name']+con['src_name']
+    except:
+        print 'exception'
+        print dev
+        print link
+        print action
+
+src = mapper.device("src")
+src.set_link_callback(link_h)
+src.set_connection_callback(connect_h)
+outsig = src.add_output("/outsig", 1, 'f', None, 0, 1000)
+
+dest = mapper.device("dest")
+dest.set_link_callback(link_h)
+dest.set_connection_callback(connect_h)
+insig = dest.add_input("/insig", 1, 'f', None, 0, 1)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig.name),
+                '%s%s' %(dest.name, insig.name),
+                {'mode': mapper.MO_REVERSE})
+monitor.poll()
+
+for i in range(10):
+    src.poll(10)
+    dest.poll(10)
+
+monitor.disconnect('%s%s' %(src.name, outsig.name),
+                   '%s%s' %(dest.name, insig.name))
+monitor.unlink('%s' %src.name, '%s' %dest.name)
+
+for i in range(10):
+    src.poll(10)
+    dest.poll(10)
diff --git a/swig/testinstance.py b/swig/testinstance.py
new file mode 100755
index 0000000..6d188f4
--- /dev/null
+++ b/swig/testinstance.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+
+import sys, mapper, random
+
+def h(sig, id, f, timetag):
+    try:
+        print '--> destination instance', id, 'got', f
+        if not f:
+            print 'retiring destination instance', id
+            sig.release_instance(id)
+    except:
+        print '--> exception'
+        print sig, id, f
+
+def manage_instances(sig, id, flag, timetag):
+    try:
+        if flag == mapper.IN_OVERFLOW:
+            print '--> OVERFLOW for sig', sig.name, 'instance', id
+    except:
+        print '--> exception'
+
+def print_instance_ids():
+    phrase = 'active /outsig: ['
+    count = outsig.num_active_instances()
+    for i in range(count):
+        phrase += ' '
+        phrase += str(outsig.active_instance_id(i))
+    phrase += ' ]   '
+    phrase += 'active /insig: ['
+    count = insig.num_active_instances()
+    for i in range(count):
+        phrase += ' '
+        phrase += str(insig.active_instance_id(i))
+    phrase += ' ]'
+    print phrase
+
+src = mapper.device("src")
+outsig = src.add_output("/outsig", 1, 'f', None, 0, 1000)
+outsig.reserve_instances(5)
+
+dest = mapper.device("dest")
+insig = dest.add_input("/insig", 1, 'f', None, 0, 1, h)
+insig.remove_instance(0)
+insig.reserve_instances([100, 200, 300])
+insig.set_allocation_mode(mapper.IN_STEAL_OLDEST)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig.name),
+                '%s%s' %(dest.name, insig.name),
+                {'mode': mapper.MO_LINEAR})
+monitor.poll()
+
+for i in range(100):
+    r = random.randint(0,5)
+    id = random.randint(0,5)
+    if r == 0:
+        print '--> retiring sender instance', id
+        outsig.release_instance(id)
+    else:    
+        print '--> sender instance', id, 'updated to', i
+        outsig.update_instance(id, i)
+    print_instance_ids()
+    dest.poll(100)
+    src.poll(0)
diff --git a/swig/testquery.py b/swig/testquery.py
new file mode 100755
index 0000000..ad86bd8
--- /dev/null
+++ b/swig/testquery.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+import sys, mapper
+
+def h(sig, id, f, timetag):
+    try:
+        print '--> received query response:', f
+    except:
+        print 'exception'
+        print sig, f
+
+src = mapper.device("src")
+outsig = src.add_output("/outsig", 1, 'f', None, 0, 1000)
+outsig.set_callback(h)
+
+dest = mapper.device("dest")
+insig = dest.add_input("/insig", 1, 'f', None, 0, 1)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig.name),
+                '%s%s' %(dest.name, insig.name),
+                {'mode': mapper.MO_LINEAR})
+monitor.poll()
+
+for i in range(100):
+    print 'updating destination to', i, '-->'
+    insig.update(i)
+    outsig.query_remotes()
+    src.poll(10)
+    dest.poll(10)
diff --git a/swig/testqueue.py b/swig/testqueue.py
new file mode 100755
index 0000000..6f6b129
--- /dev/null
+++ b/swig/testqueue.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+import sys, mapper, random
+
+def h(sig, id, f, timetag):
+    print '     handler got', sig.name, '=', f, 'at time', timetag
+
+src = mapper.device("src")
+outsig1 = src.add_output("/outsig1", 1, 'i', None, 0, 1000)
+outsig2 = src.add_output("/outsig2", 1, 'i', None, 0, 1000)
+
+dest = mapper.device("dest")
+insig1 = dest.add_input("/insig1", 1, 'f', None, 0, 1, h)
+insig2 = dest.add_input("/insig2", 1, 'f', None, 0, 1, h)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig1.name),
+                '%s%s' %(dest.name, insig1.name),
+                {'mode': mapper.MO_LINEAR})
+monitor.connect('%s%s' %(src.name, outsig2.name),
+                '%s%s' %(dest.name, insig2.name),
+                {'mode': mapper.MO_LINEAR})
+monitor.poll()
+
+for i in range(10):
+    now = src.now()
+    print 'Updating output signals to', i, 'at time', now
+    src.start_queue(now)
+    outsig1.update(i)
+    outsig2.update(i)
+    src.send_queue(now)
+    dest.poll(100)
+    src.poll(0)
diff --git a/swig/testreverse.py b/swig/testreverse.py
new file mode 100755
index 0000000..81646e7
--- /dev/null
+++ b/swig/testreverse.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+import sys, mapper
+
+def h(sig, id, f, timetag):
+    try:
+        print '--> source received', f
+    except:
+        print 'exception'
+        print sig, f
+
+src = mapper.device("src")
+outsig = src.add_output("/outsig", 1, 'f', None, 0, 1000)
+outsig.set_callback(h)
+
+dest = mapper.device("dest")
+insig = dest.add_input("/insig", 1, 'f', None, 0, 1)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig.name),
+                '%s%s' %(dest.name, insig.name),
+                {'mode': mapper.MO_REVERSE})
+monitor.poll()
+
+for i in range(100):
+    print 'updating destination to', i, '-->'
+    insig.update(i)
+    src.poll(10)
+    dest.poll(10)
diff --git a/swig/testvector.py b/swig/testvector.py
new file mode 100755
index 0000000..fb279e3
--- /dev/null
+++ b/swig/testvector.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import sys, mapper, random
+
+def h(sig, id, f, timetag):
+    print '  handler got', sig.name, '=', f, 'at time', timetag
+
+mins = [0,0,0,0,0,0,0,0,0,0]
+maxs = [1,1,1,1,1,1,1,1,1,1]
+
+src = mapper.device("src")
+outsig = src.add_output("/outsig1", 10, 'i', None, mins, maxs)
+
+dest = mapper.device("dest")
+insig = dest.add_input("/insig1", 10, 'f', None, mins, maxs, h)
+
+while not src.ready() or not dest.ready():
+    src.poll()
+    dest.poll(10)
+
+monitor = mapper.monitor()
+
+monitor.link('%s' %src.name, '%s' %dest.name)
+monitor.connect('%s%s' %(src.name, outsig.name),
+                '%s%s' %(dest.name, insig.name),
+                {'mode': mapper.MO_LINEAR})
+monitor.poll()
+
+for i in range(100):
+    outsig.update([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
+    dest.poll(100)
+    src.poll(0)
diff --git a/test/Makefile.am b/test/Makefile.am
index cfe02e7..f0f8ec4 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -10,7 +10,13 @@ endif
 noinst_PROGRAMS = test testadmin testcustomtransport testdb testexpression \
                   testinstance testlinear testmany testmonitor testparams \
                   testparser testprops testqueue testquery testrate testrecv \
-                  testreverse testselect testsend testspeed testsync testvector
+                  testreverse testselect testsend testsignals testspeed testsync \
+                  testvector
+
+test_all_ordered = testparams testprops testdb testparser testadmin testmany \
+                   testsend testrecv test testlinear testexpression testqueue \
+                   testquery testrate testinstance testreverse testselect \
+                   testvector testcustomtransport testspeed testsync
 
 test_CFLAGS = $(TEST_CFLAGS)
 test_SOURCES = test.c
@@ -88,6 +94,10 @@ testsend_CFLAGS = $(TEST_CFLAGS)
 testsend_SOURCES = testsend.c
 testsend_LDADD = $(TEST_LDADD)
 
+testsignals_CFLAGS = $(TEST_CFLAGS)
+testsignals_SOURCES = testsignals.c
+testsignals_LDADD = $(TEST_LDADD)
+
 testspeed_CFLAGS = $(TEST_CFLAGS)
 testspeed_SOURCES = testspeed.c
 testspeed_LDADD = $(TEST_LDADD)
@@ -99,3 +109,10 @@ testsync_LDADD = $(TEST_LDADD)
 testvector_CFLAGS = $(TEST_CFLAGS)
 testvector_SOURCES = testvector.c
 testvector_LDADD = $(TEST_LDADD)
+
+tests: all
+	for i in $(test_all_ordered); do echo Running $$i; if ! ./$$i -qt; then exit 1; fi; done
+	echo Running testmonitor and testsignals; ./testmonitor -t & ./testsignals
+
+memtest: all
+	for i in $(noinst_PROGRAMS); do echo Running $$i; if ! LD_PRELOAD=/usr/local/lib/libmapper-0.2.dylib valgrind --leakcheck=full ./.libs/$$i -qt; then exit 1; fi; done
diff --git a/test/Makefile.in b/test/Makefile.in
deleted file mode 100644
index e00a472..0000000
--- a/test/Makefile.in
+++ /dev/null
@@ -1,1175 +0,0 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
-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) testadmin$(EXEEXT) \
-	testcustomtransport$(EXEEXT) testdb$(EXEEXT) \
-	testexpression$(EXEEXT) testinstance$(EXEEXT) \
-	testlinear$(EXEEXT) testmany$(EXEEXT) testmonitor$(EXEEXT) \
-	testparams$(EXEEXT) testparser$(EXEEXT) testprops$(EXEEXT) \
-	testqueue$(EXEEXT) testquery$(EXEEXT) testrate$(EXEEXT) \
-	testrecv$(EXEEXT) testreverse$(EXEEXT) testselect$(EXEEXT) \
-	testsend$(EXEEXT) testspeed$(EXEEXT) testsync$(EXEEXT) \
-	testvector$(EXEEXT)
-subdir = test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(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)/m4/pkg.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_test_OBJECTS = test-test.$(OBJEXT)
-test_OBJECTS = $(am_test_OBJECTS)
-am__DEPENDENCIES_1 =
- at WINDOWS_DLL_FALSE@am__DEPENDENCIES_2 = $(top_builddir)/src/libmapper- at MAJOR_VERSION@.la \
- at WINDOWS_DLL_FALSE@	$(am__DEPENDENCIES_1)
- at WINDOWS_DLL_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/src/*.lo \
- at WINDOWS_DLL_TRUE@	$(am__DEPENDENCIES_1)
-test_DEPENDENCIES = $(am__DEPENDENCIES_2)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testadmin_OBJECTS = testadmin-testadmin.$(OBJEXT)
-testadmin_OBJECTS = $(am_testadmin_OBJECTS)
-testadmin_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testadmin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testadmin_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testcustomtransport_OBJECTS =  \
-	testcustomtransport-testcustomtransport.$(OBJEXT)
-testcustomtransport_OBJECTS = $(am_testcustomtransport_OBJECTS)
-testcustomtransport_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testcustomtransport_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(testcustomtransport_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-am_testdb_OBJECTS = testdb-testdb.$(OBJEXT)
-testdb_OBJECTS = $(am_testdb_OBJECTS)
-testdb_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testdb_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testdb_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testexpression_OBJECTS = testexpression-testexpression.$(OBJEXT)
-testexpression_OBJECTS = $(am_testexpression_OBJECTS)
-testexpression_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testexpression_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(testexpression_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
-	$@
-am_testinstance_OBJECTS = testinstance-testinstance.$(OBJEXT)
-testinstance_OBJECTS = $(am_testinstance_OBJECTS)
-testinstance_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testinstance_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testinstance_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testlinear_OBJECTS = testlinear-testlinear.$(OBJEXT)
-testlinear_OBJECTS = $(am_testlinear_OBJECTS)
-testlinear_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testlinear_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testlinear_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testmany_OBJECTS = testmany-testmany.$(OBJEXT)
-testmany_OBJECTS = $(am_testmany_OBJECTS)
-testmany_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testmany_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testmany_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testmonitor_OBJECTS = testmonitor-testmonitor.$(OBJEXT)
-testmonitor_OBJECTS = $(am_testmonitor_OBJECTS)
-testmonitor_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testmonitor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testmonitor_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testparams_OBJECTS = testparams-testparams.$(OBJEXT)
-testparams_OBJECTS = $(am_testparams_OBJECTS)
-testparams_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testparams_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testparams_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testparser_OBJECTS = testparser-testparser.$(OBJEXT)
-testparser_OBJECTS = $(am_testparser_OBJECTS)
-testparser_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testparser_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testparser_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testprops_OBJECTS = testprops-testprops.$(OBJEXT)
-testprops_OBJECTS = $(am_testprops_OBJECTS)
-testprops_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testprops_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testprops_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testquery_OBJECTS = testquery-testquery.$(OBJEXT)
-testquery_OBJECTS = $(am_testquery_OBJECTS)
-testquery_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testquery_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testquery_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testqueue_OBJECTS = testqueue-testqueue.$(OBJEXT)
-testqueue_OBJECTS = $(am_testqueue_OBJECTS)
-testqueue_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testqueue_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testqueue_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testrate_OBJECTS = testrate-testrate.$(OBJEXT)
-testrate_OBJECTS = $(am_testrate_OBJECTS)
-testrate_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testrate_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testrate_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testrecv_OBJECTS = testrecv-testrecv.$(OBJEXT)
-testrecv_OBJECTS = $(am_testrecv_OBJECTS)
-testrecv_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testrecv_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testrecv_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testreverse_OBJECTS = testreverse-testreverse.$(OBJEXT)
-testreverse_OBJECTS = $(am_testreverse_OBJECTS)
-testreverse_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testreverse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testreverse_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testselect_OBJECTS = testselect-testselect.$(OBJEXT)
-testselect_OBJECTS = $(am_testselect_OBJECTS)
-testselect_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testselect_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testselect_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testsend_OBJECTS = testsend-testsend.$(OBJEXT)
-testsend_OBJECTS = $(am_testsend_OBJECTS)
-testsend_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testsend_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testsend_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testspeed_OBJECTS = testspeed-testspeed.$(OBJEXT)
-testspeed_OBJECTS = $(am_testspeed_OBJECTS)
-testspeed_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testspeed_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testspeed_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testsync_OBJECTS = testsync-testsync.$(OBJEXT)
-testsync_OBJECTS = $(am_testsync_OBJECTS)
-testsync_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testsync_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testsync_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_testvector_OBJECTS = testvector-testvector.$(OBJEXT)
-testvector_OBJECTS = $(am_testvector_OBJECTS)
-testvector_DEPENDENCIES = $(am__DEPENDENCIES_2)
-testvector_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testvector_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-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_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-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_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(test_SOURCES) $(testadmin_SOURCES) \
-	$(testcustomtransport_SOURCES) $(testdb_SOURCES) \
-	$(testexpression_SOURCES) $(testinstance_SOURCES) \
-	$(testlinear_SOURCES) $(testmany_SOURCES) \
-	$(testmonitor_SOURCES) $(testparams_SOURCES) \
-	$(testparser_SOURCES) $(testprops_SOURCES) \
-	$(testquery_SOURCES) $(testqueue_SOURCES) $(testrate_SOURCES) \
-	$(testrecv_SOURCES) $(testreverse_SOURCES) \
-	$(testselect_SOURCES) $(testsend_SOURCES) $(testspeed_SOURCES) \
-	$(testsync_SOURCES) $(testvector_SOURCES)
-DIST_SOURCES = $(test_SOURCES) $(testadmin_SOURCES) \
-	$(testcustomtransport_SOURCES) $(testdb_SOURCES) \
-	$(testexpression_SOURCES) $(testinstance_SOURCES) \
-	$(testlinear_SOURCES) $(testmany_SOURCES) \
-	$(testmonitor_SOURCES) $(testparams_SOURCES) \
-	$(testparser_SOURCES) $(testprops_SOURCES) \
-	$(testquery_SOURCES) $(testqueue_SOURCES) $(testrate_SOURCES) \
-	$(testrecv_SOURCES) $(testreverse_SOURCES) \
-	$(testselect_SOURCES) $(testsend_SOURCES) $(testspeed_SOURCES) \
-	$(testsync_SOURCES) $(testvector_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JAR = @JAR@
-JAVAC = @JAVAC@
-JAVAH = @JAVAH@
-JNI = @JNI@
-JNIPATH = @JNIPATH@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBLO = @LIBLO@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAJOR_VERSION = @MAJOR_VERSION@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PYEXT = @PYEXT@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RTAUDIO_CFLAGS = @RTAUDIO_CFLAGS@
-RTAUDIO_LIBS = @RTAUDIO_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SO_VERSION = @SO_VERSION@
-STRIP = @STRIP@
-SWIG = @SWIG@
-SWIGDIR = @SWIGDIR@
-VERSION = @VERSION@
-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_CXX = @ac_ct_CXX@
-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@
-ax_pthread_config = @ax_pthread_config@
-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@
-liblo_CFLAGS = @liblo_CFLAGS@
-liblo_LIBS = @liblo_LIBS@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-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_CFLAGS = -Wall -I$(top_srcdir)/include $(liblo_CFLAGS)
- at WINDOWS_DLL_FALSE@TEST_LDADD = $(top_builddir)/src/libmapper- at MAJOR_VERSION@.la $(liblo_LIBS)
- at WINDOWS_DLL_TRUE@TEST_LDADD = $(top_builddir)/src/*.lo $(liblo_LIBS)
-test_CFLAGS = $(TEST_CFLAGS)
-test_SOURCES = test.c
-test_LDADD = $(TEST_LDADD)
-testadmin_CFLAGS = $(TEST_CFLAGS)
-testadmin_SOURCES = testadmin.c
-testadmin_LDADD = $(TEST_LDADD)
-testcustomtransport_CFLAGS = $(TEST_CFLAGS)
-testcustomtransport_SOURCES = testcustomtransport.c
-testcustomtransport_LDADD = $(TEST_LDADD)
-testdb_CFLAGS = $(TEST_CFLAGS)
-testdb_SOURCES = testdb.c
-testdb_LDADD = $(TEST_LDADD)
-testexpression_CFLAGS = $(TEST_CFLAGS)
-testexpression_SOURCES = testexpression.c
-testexpression_LDADD = $(TEST_LDADD)
-testinstance_CFLAGS = $(TEST_CFLAGS)
-testinstance_SOURCES = testinstance.c
-testinstance_LDADD = $(TEST_LDADD)
-testlinear_CFLAGS = $(TEST_CFLAGS)
-testlinear_SOURCES = testlinear.c
-testlinear_LDADD = $(TEST_LDADD)
-testmany_CFLAGS = $(TEST_CFLAGS)
-testmany_SOURCES = testmany.c
-testmany_LDADD = $(TEST_LDADD)
-testmonitor_CFLAGS = $(TEST_CFLAGS)
-testmonitor_SOURCES = testmonitor.c
-testmonitor_LDADD = $(TEST_LDADD)
-testparams_CFLAGS = $(TEST_CFLAGS)
-testparams_SOURCES = testparams.c
-testparams_LDADD = $(TEST_LDADD)
-testparser_CFLAGS = $(TEST_CFLAGS)
-testparser_SOURCES = testparser.c
-testparser_LDADD = $(TEST_LDADD)
-testprops_CFLAGS = $(TEST_CFLAGS)
-testprops_SOURCES = testprops.c
-testprops_LDADD = $(TEST_LDADD)
-testqueue_CFLAGS = $(TEST_CFLAGS)
-testqueue_SOURCES = testqueue.c
-testqueue_LDADD = $(TEST_LDADD)
-testquery_CFLAGS = $(TEST_CFLAGS)
-testquery_SOURCES = testquery.c
-testquery_LDADD = $(TEST_LDADD)
-testrate_CFLAGS = $(TEST_CFLAGS)
-testrate_SOURCES = testrate.c
-testrate_LDADD = $(TEST_LDADD)
-testrecv_CFLAGS = $(TEST_CFLAGS)
-testrecv_SOURCES = testrecv.c
-testrecv_LDADD = $(TEST_LDADD)
-testreverse_CFLAGS = $(TEST_CFLAGS)
-testreverse_SOURCES = testreverse.c
-testreverse_LDADD = $(TEST_LDADD)
-testselect_CFLAGS = $(TEST_CFLAGS)
-testselect_SOURCES = testselect.c
-testselect_LDADD = $(TEST_LDADD)
-testsend_CFLAGS = $(TEST_CFLAGS)
-testsend_SOURCES = testsend.c
-testsend_LDADD = $(TEST_LDADD)
-testspeed_CFLAGS = $(TEST_CFLAGS)
-testspeed_SOURCES = testspeed.c
-testspeed_LDADD = $(TEST_LDADD)
-testsync_CFLAGS = $(TEST_CFLAGS)
-testsync_SOURCES = testsync.c
-testsync_LDADD = $(TEST_LDADD)
-testvector_CFLAGS = $(TEST_CFLAGS)
-testvector_SOURCES = testvector.c
-testvector_LDADD = $(TEST_LDADD)
-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) --foreign test/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/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) $(EXTRA_test_DEPENDENCIES) 
-	@rm -f test$(EXEEXT)
-	$(AM_V_CCLD)$(test_LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
-testadmin$(EXEEXT): $(testadmin_OBJECTS) $(testadmin_DEPENDENCIES) $(EXTRA_testadmin_DEPENDENCIES) 
-	@rm -f testadmin$(EXEEXT)
-	$(AM_V_CCLD)$(testadmin_LINK) $(testadmin_OBJECTS) $(testadmin_LDADD) $(LIBS)
-testcustomtransport$(EXEEXT): $(testcustomtransport_OBJECTS) $(testcustomtransport_DEPENDENCIES) $(EXTRA_testcustomtransport_DEPENDENCIES) 
-	@rm -f testcustomtransport$(EXEEXT)
-	$(AM_V_CCLD)$(testcustomtransport_LINK) $(testcustomtransport_OBJECTS) $(testcustomtransport_LDADD) $(LIBS)
-testdb$(EXEEXT): $(testdb_OBJECTS) $(testdb_DEPENDENCIES) $(EXTRA_testdb_DEPENDENCIES) 
-	@rm -f testdb$(EXEEXT)
-	$(AM_V_CCLD)$(testdb_LINK) $(testdb_OBJECTS) $(testdb_LDADD) $(LIBS)
-testexpression$(EXEEXT): $(testexpression_OBJECTS) $(testexpression_DEPENDENCIES) $(EXTRA_testexpression_DEPENDENCIES) 
-	@rm -f testexpression$(EXEEXT)
-	$(AM_V_CCLD)$(testexpression_LINK) $(testexpression_OBJECTS) $(testexpression_LDADD) $(LIBS)
-testinstance$(EXEEXT): $(testinstance_OBJECTS) $(testinstance_DEPENDENCIES) $(EXTRA_testinstance_DEPENDENCIES) 
-	@rm -f testinstance$(EXEEXT)
-	$(AM_V_CCLD)$(testinstance_LINK) $(testinstance_OBJECTS) $(testinstance_LDADD) $(LIBS)
-testlinear$(EXEEXT): $(testlinear_OBJECTS) $(testlinear_DEPENDENCIES) $(EXTRA_testlinear_DEPENDENCIES) 
-	@rm -f testlinear$(EXEEXT)
-	$(AM_V_CCLD)$(testlinear_LINK) $(testlinear_OBJECTS) $(testlinear_LDADD) $(LIBS)
-testmany$(EXEEXT): $(testmany_OBJECTS) $(testmany_DEPENDENCIES) $(EXTRA_testmany_DEPENDENCIES) 
-	@rm -f testmany$(EXEEXT)
-	$(AM_V_CCLD)$(testmany_LINK) $(testmany_OBJECTS) $(testmany_LDADD) $(LIBS)
-testmonitor$(EXEEXT): $(testmonitor_OBJECTS) $(testmonitor_DEPENDENCIES) $(EXTRA_testmonitor_DEPENDENCIES) 
-	@rm -f testmonitor$(EXEEXT)
-	$(AM_V_CCLD)$(testmonitor_LINK) $(testmonitor_OBJECTS) $(testmonitor_LDADD) $(LIBS)
-testparams$(EXEEXT): $(testparams_OBJECTS) $(testparams_DEPENDENCIES) $(EXTRA_testparams_DEPENDENCIES) 
-	@rm -f testparams$(EXEEXT)
-	$(AM_V_CCLD)$(testparams_LINK) $(testparams_OBJECTS) $(testparams_LDADD) $(LIBS)
-testparser$(EXEEXT): $(testparser_OBJECTS) $(testparser_DEPENDENCIES) $(EXTRA_testparser_DEPENDENCIES) 
-	@rm -f testparser$(EXEEXT)
-	$(AM_V_CCLD)$(testparser_LINK) $(testparser_OBJECTS) $(testparser_LDADD) $(LIBS)
-testprops$(EXEEXT): $(testprops_OBJECTS) $(testprops_DEPENDENCIES) $(EXTRA_testprops_DEPENDENCIES) 
-	@rm -f testprops$(EXEEXT)
-	$(AM_V_CCLD)$(testprops_LINK) $(testprops_OBJECTS) $(testprops_LDADD) $(LIBS)
-testquery$(EXEEXT): $(testquery_OBJECTS) $(testquery_DEPENDENCIES) $(EXTRA_testquery_DEPENDENCIES) 
-	@rm -f testquery$(EXEEXT)
-	$(AM_V_CCLD)$(testquery_LINK) $(testquery_OBJECTS) $(testquery_LDADD) $(LIBS)
-testqueue$(EXEEXT): $(testqueue_OBJECTS) $(testqueue_DEPENDENCIES) $(EXTRA_testqueue_DEPENDENCIES) 
-	@rm -f testqueue$(EXEEXT)
-	$(AM_V_CCLD)$(testqueue_LINK) $(testqueue_OBJECTS) $(testqueue_LDADD) $(LIBS)
-testrate$(EXEEXT): $(testrate_OBJECTS) $(testrate_DEPENDENCIES) $(EXTRA_testrate_DEPENDENCIES) 
-	@rm -f testrate$(EXEEXT)
-	$(AM_V_CCLD)$(testrate_LINK) $(testrate_OBJECTS) $(testrate_LDADD) $(LIBS)
-testrecv$(EXEEXT): $(testrecv_OBJECTS) $(testrecv_DEPENDENCIES) $(EXTRA_testrecv_DEPENDENCIES) 
-	@rm -f testrecv$(EXEEXT)
-	$(AM_V_CCLD)$(testrecv_LINK) $(testrecv_OBJECTS) $(testrecv_LDADD) $(LIBS)
-testreverse$(EXEEXT): $(testreverse_OBJECTS) $(testreverse_DEPENDENCIES) $(EXTRA_testreverse_DEPENDENCIES) 
-	@rm -f testreverse$(EXEEXT)
-	$(AM_V_CCLD)$(testreverse_LINK) $(testreverse_OBJECTS) $(testreverse_LDADD) $(LIBS)
-testselect$(EXEEXT): $(testselect_OBJECTS) $(testselect_DEPENDENCIES) $(EXTRA_testselect_DEPENDENCIES) 
-	@rm -f testselect$(EXEEXT)
-	$(AM_V_CCLD)$(testselect_LINK) $(testselect_OBJECTS) $(testselect_LDADD) $(LIBS)
-testsend$(EXEEXT): $(testsend_OBJECTS) $(testsend_DEPENDENCIES) $(EXTRA_testsend_DEPENDENCIES) 
-	@rm -f testsend$(EXEEXT)
-	$(AM_V_CCLD)$(testsend_LINK) $(testsend_OBJECTS) $(testsend_LDADD) $(LIBS)
-testspeed$(EXEEXT): $(testspeed_OBJECTS) $(testspeed_DEPENDENCIES) $(EXTRA_testspeed_DEPENDENCIES) 
-	@rm -f testspeed$(EXEEXT)
-	$(AM_V_CCLD)$(testspeed_LINK) $(testspeed_OBJECTS) $(testspeed_LDADD) $(LIBS)
-testsync$(EXEEXT): $(testsync_OBJECTS) $(testsync_DEPENDENCIES) $(EXTRA_testsync_DEPENDENCIES) 
-	@rm -f testsync$(EXEEXT)
-	$(AM_V_CCLD)$(testsync_LINK) $(testsync_OBJECTS) $(testsync_LDADD) $(LIBS)
-testvector$(EXEEXT): $(testvector_OBJECTS) $(testvector_DEPENDENCIES) $(EXTRA_testvector_DEPENDENCIES) 
-	@rm -f testvector$(EXEEXT)
-	$(AM_V_CCLD)$(testvector_LINK) $(testvector_OBJECTS) $(testvector_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-test.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testadmin-testadmin.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testcustomtransport-testcustomtransport.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testdb-testdb.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testexpression-testexpression.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testinstance-testinstance.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testlinear-testlinear.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testmany-testmany.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testmonitor-testmonitor.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testparams-testparams.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testparser-testparser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testprops-testprops.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testquery-testquery.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testqueue-testqueue.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testrate-testrate.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testrecv-testrecv.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testreverse-testreverse.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testselect-testselect.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testsend-testsend.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testspeed-testspeed.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testsync-testsync.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testvector-testvector.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-test-test.o: test.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.o -MD -MP -MF $(DEPDIR)/test-test.Tpo -c -o test-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test-test.Tpo $(DEPDIR)/test-test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test.c' object='test-test.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c
-
-test-test.obj: test.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.obj -MD -MP -MF $(DEPDIR)/test-test.Tpo -c -o test-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test-test.Tpo $(DEPDIR)/test-test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test.c' object='test-test.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi`
-
-testadmin-testadmin.o: testadmin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testadmin_CFLAGS) $(CFLAGS) -MT testadmin-testadmin.o -MD -MP -MF $(DEPDIR)/testadmin-testadmin.Tpo -c -o testadmin-testadmin.o `test -f 'testadmin.c' || echo '$(srcdir)/'`testadmin.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testadmin-testadmin.Tpo $(DEPDIR)/testadmin-testadmin.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testadmin.c' object='testadmin-testadmin.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testadmin_CFLAGS) $(CFLAGS) -c -o testadmin-testadmin.o `test -f 'testadmin.c' || echo '$(srcdir)/'`testadmin.c
-
-testadmin-testadmin.obj: testadmin.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testadmin_CFLAGS) $(CFLAGS) -MT testadmin-testadmin.obj -MD -MP -MF $(DEPDIR)/testadmin-testadmin.Tpo -c -o testadmin-testadmin.obj `if test -f 'testadmin.c'; then $(CYGPATH_W) 'testadmin.c'; else $(CYGPATH_W) '$(srcdir)/testadmin.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testadmin-testadmin.Tpo $(DEPDIR)/testadmin-testadmin.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testadmin.c' object='testadmin-testadmin.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testadmin_CFLAGS) $(CFLAGS) -c -o testadmin-testadmin.obj `if test -f 'testadmin.c'; then $(CYGPATH_W) 'testadmin.c'; else $(CYGPATH_W) '$(srcdir)/testadmin.c'; fi`
-
-testcustomtransport-testcustomtransport.o: testcustomtransport.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcustomtransport_CFLAGS) $(CFLAGS) -MT testcustomtransport-testcustomtransport.o -MD -MP -MF $(DEPDIR)/testcustomtransport-testcustomtransport.Tpo -c -o testcustomtransport-testcustomtransport.o `test -f 'testcustomtransport.c' || echo '$(srcdir)/'`testcustomtransport.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testcustomtransport-testcustomtransport.Tpo $(DEPDIR)/testcustomtransport-testcustomtransport.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testcustomtransport.c' object='testcustomtransport-testcustomtransport.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcustomtransport_CFLAGS) $(CFLAGS) -c -o testcustomtransport-testcustomtransport.o `test -f 'testcustomtransport.c' || echo '$(srcdir)/'`testcustomtransport.c
-
-testcustomtransport-testcustomtransport.obj: testcustomtransport.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcustomtransport_CFLAGS) $(CFLAGS) -MT testcustomtransport-testcustomtransport.obj -MD -MP -MF $(DEPDIR)/testcustomtransport-testcustomtransport.Tpo -c -o testcustomtransport-testcustomtransport.obj `if test -f 'testcustomtransport.c'; then $(CYGPATH_W) 'testcustomtransport.c'; else $(CYGPATH_W) '$(srcdir)/testcustomtransport.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testcustomtransport-testcustomtransport.Tpo $(DEPDIR)/testcustomtransport-testcustomtransport.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testcustomtransport.c' object='testcustomtransport-testcustomtransport.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcustomtransport_CFLAGS) $(CFLAGS) -c -o testcustomtransport-testcustomtransport.obj `if test -f 'testcustomtransport.c'; then $(CYGPATH_W) 'testcustomtransport.c'; else $(CYGPATH_W) '$(srcdir)/testcustomtransport.c'; fi`
-
-testdb-testdb.o: testdb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testdb_CFLAGS) $(CFLAGS) -MT testdb-testdb.o -MD -MP -MF $(DEPDIR)/testdb-testdb.Tpo -c -o testdb-testdb.o `test -f 'testdb.c' || echo '$(srcdir)/'`testdb.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testdb-testdb.Tpo $(DEPDIR)/testdb-testdb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testdb.c' object='testdb-testdb.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testdb_CFLAGS) $(CFLAGS) -c -o testdb-testdb.o `test -f 'testdb.c' || echo '$(srcdir)/'`testdb.c
-
-testdb-testdb.obj: testdb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testdb_CFLAGS) $(CFLAGS) -MT testdb-testdb.obj -MD -MP -MF $(DEPDIR)/testdb-testdb.Tpo -c -o testdb-testdb.obj `if test -f 'testdb.c'; then $(CYGPATH_W) 'testdb.c'; else $(CYGPATH_W) '$(srcdir)/testdb.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testdb-testdb.Tpo $(DEPDIR)/testdb-testdb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testdb.c' object='testdb-testdb.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testdb_CFLAGS) $(CFLAGS) -c -o testdb-testdb.obj `if test -f 'testdb.c'; then $(CYGPATH_W) 'testdb.c'; else $(CYGPATH_W) '$(srcdir)/testdb.c'; fi`
-
-testexpression-testexpression.o: testexpression.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testexpression_CFLAGS) $(CFLAGS) -MT testexpression-testexpression.o -MD -MP -MF $(DEPDIR)/testexpression-testexpression.Tpo -c -o testexpression-testexpression.o `test -f 'testexpression.c' || echo '$(srcdir)/'`testexpression.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testexpression-testexpression.Tpo $(DEPDIR)/testexpression-testexpression.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testexpression.c' object='testexpression-testexpression.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testexpression_CFLAGS) $(CFLAGS) -c -o testexpression-testexpression.o `test -f 'testexpression.c' || echo '$(srcdir)/'`testexpression.c
-
-testexpression-testexpression.obj: testexpression.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testexpression_CFLAGS) $(CFLAGS) -MT testexpression-testexpression.obj -MD -MP -MF $(DEPDIR)/testexpression-testexpression.Tpo -c -o testexpression-testexpression.obj `if test -f 'testexpression.c'; then $(CYGPATH_W) 'testexpression.c'; else $(CYGPATH_W) '$(srcdir)/testexpression.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testexpression-testexpression.Tpo $(DEPDIR)/testexpression-testexpression.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testexpression.c' object='testexpression-testexpression.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testexpression_CFLAGS) $(CFLAGS) -c -o testexpression-testexpression.obj `if test -f 'testexpression.c'; then $(CYGPATH_W) 'testexpression.c'; else $(CYGPATH_W) '$(srcdir)/testexpression.c'; fi`
-
-testinstance-testinstance.o: testinstance.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testinstance_CFLAGS) $(CFLAGS) -MT testinstance-testinstance.o -MD -MP -MF $(DEPDIR)/testinstance-testinstance.Tpo -c -o testinstance-testinstance.o `test -f 'testinstance.c' || echo '$(srcdir)/'`testinstance.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testinstance-testinstance.Tpo $(DEPDIR)/testinstance-testinstance.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testinstance.c' object='testinstance-testinstance.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testinstance_CFLAGS) $(CFLAGS) -c -o testinstance-testinstance.o `test -f 'testinstance.c' || echo '$(srcdir)/'`testinstance.c
-
-testinstance-testinstance.obj: testinstance.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testinstance_CFLAGS) $(CFLAGS) -MT testinstance-testinstance.obj -MD -MP -MF $(DEPDIR)/testinstance-testinstance.Tpo -c -o testinstance-testinstance.obj `if test -f 'testinstance.c'; then $(CYGPATH_W) 'testinstance.c'; else $(CYGPATH_W) '$(srcdir)/testinstance.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testinstance-testinstance.Tpo $(DEPDIR)/testinstance-testinstance.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testinstance.c' object='testinstance-testinstance.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testinstance_CFLAGS) $(CFLAGS) -c -o testinstance-testinstance.obj `if test -f 'testinstance.c'; then $(CYGPATH_W) 'testinstance.c'; else $(CYGPATH_W) '$(srcdir)/testinstance.c'; fi`
-
-testlinear-testlinear.o: testlinear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testlinear_CFLAGS) $(CFLAGS) -MT testlinear-testlinear.o -MD -MP -MF $(DEPDIR)/testlinear-testlinear.Tpo -c -o testlinear-testlinear.o `test -f 'testlinear.c' || echo '$(srcdir)/'`testlinear.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testlinear-testlinear.Tpo $(DEPDIR)/testlinear-testlinear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testlinear.c' object='testlinear-testlinear.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testlinear_CFLAGS) $(CFLAGS) -c -o testlinear-testlinear.o `test -f 'testlinear.c' || echo '$(srcdir)/'`testlinear.c
-
-testlinear-testlinear.obj: testlinear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testlinear_CFLAGS) $(CFLAGS) -MT testlinear-testlinear.obj -MD -MP -MF $(DEPDIR)/testlinear-testlinear.Tpo -c -o testlinear-testlinear.obj `if test -f 'testlinear.c'; then $(CYGPATH_W) 'testlinear.c'; else $(CYGPATH_W) '$(srcdir)/testlinear.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testlinear-testlinear.Tpo $(DEPDIR)/testlinear-testlinear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testlinear.c' object='testlinear-testlinear.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testlinear_CFLAGS) $(CFLAGS) -c -o testlinear-testlinear.obj `if test -f 'testlinear.c'; then $(CYGPATH_W) 'testlinear.c'; else $(CYGPATH_W) '$(srcdir)/testlinear.c'; fi`
-
-testmany-testmany.o: testmany.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmany_CFLAGS) $(CFLAGS) -MT testmany-testmany.o -MD -MP -MF $(DEPDIR)/testmany-testmany.Tpo -c -o testmany-testmany.o `test -f 'testmany.c' || echo '$(srcdir)/'`testmany.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testmany-testmany.Tpo $(DEPDIR)/testmany-testmany.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testmany.c' object='testmany-testmany.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmany_CFLAGS) $(CFLAGS) -c -o testmany-testmany.o `test -f 'testmany.c' || echo '$(srcdir)/'`testmany.c
-
-testmany-testmany.obj: testmany.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmany_CFLAGS) $(CFLAGS) -MT testmany-testmany.obj -MD -MP -MF $(DEPDIR)/testmany-testmany.Tpo -c -o testmany-testmany.obj `if test -f 'testmany.c'; then $(CYGPATH_W) 'testmany.c'; else $(CYGPATH_W) '$(srcdir)/testmany.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testmany-testmany.Tpo $(DEPDIR)/testmany-testmany.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testmany.c' object='testmany-testmany.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmany_CFLAGS) $(CFLAGS) -c -o testmany-testmany.obj `if test -f 'testmany.c'; then $(CYGPATH_W) 'testmany.c'; else $(CYGPATH_W) '$(srcdir)/testmany.c'; fi`
-
-testmonitor-testmonitor.o: testmonitor.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmonitor_CFLAGS) $(CFLAGS) -MT testmonitor-testmonitor.o -MD -MP -MF $(DEPDIR)/testmonitor-testmonitor.Tpo -c -o testmonitor-testmonitor.o `test -f 'testmonitor.c' || echo '$(srcdir)/'`testmonitor.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testmonitor-testmonitor.Tpo $(DEPDIR)/testmonitor-testmonitor.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testmonitor.c' object='testmonitor-testmonitor.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmonitor_CFLAGS) $(CFLAGS) -c -o testmonitor-testmonitor.o `test -f 'testmonitor.c' || echo '$(srcdir)/'`testmonitor.c
-
-testmonitor-testmonitor.obj: testmonitor.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmonitor_CFLAGS) $(CFLAGS) -MT testmonitor-testmonitor.obj -MD -MP -MF $(DEPDIR)/testmonitor-testmonitor.Tpo -c -o testmonitor-testmonitor.obj `if test -f 'testmonitor.c'; then $(CYGPATH_W) 'testmonitor.c'; else $(CYGPATH_W) '$(srcdir)/testmonitor.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testmonitor-testmonitor.Tpo $(DEPDIR)/testmonitor-testmonitor.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testmonitor.c' object='testmonitor-testmonitor.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testmonitor_CFLAGS) $(CFLAGS) -c -o testmonitor-testmonitor.obj `if test -f 'testmonitor.c'; then $(CYGPATH_W) 'testmonitor.c'; else $(CYGPATH_W) '$(srcdir)/testmonitor.c'; fi`
-
-testparams-testparams.o: testparams.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparams_CFLAGS) $(CFLAGS) -MT testparams-testparams.o -MD -MP -MF $(DEPDIR)/testparams-testparams.Tpo -c -o testparams-testparams.o `test -f 'testparams.c' || echo '$(srcdir)/'`testparams.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testparams-testparams.Tpo $(DEPDIR)/testparams-testparams.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testparams.c' object='testparams-testparams.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparams_CFLAGS) $(CFLAGS) -c -o testparams-testparams.o `test -f 'testparams.c' || echo '$(srcdir)/'`testparams.c
-
-testparams-testparams.obj: testparams.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparams_CFLAGS) $(CFLAGS) -MT testparams-testparams.obj -MD -MP -MF $(DEPDIR)/testparams-testparams.Tpo -c -o testparams-testparams.obj `if test -f 'testparams.c'; then $(CYGPATH_W) 'testparams.c'; else $(CYGPATH_W) '$(srcdir)/testparams.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testparams-testparams.Tpo $(DEPDIR)/testparams-testparams.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testparams.c' object='testparams-testparams.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparams_CFLAGS) $(CFLAGS) -c -o testparams-testparams.obj `if test -f 'testparams.c'; then $(CYGPATH_W) 'testparams.c'; else $(CYGPATH_W) '$(srcdir)/testparams.c'; fi`
-
-testparser-testparser.o: testparser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparser_CFLAGS) $(CFLAGS) -MT testparser-testparser.o -MD -MP -MF $(DEPDIR)/testparser-testparser.Tpo -c -o testparser-testparser.o `test -f 'testparser.c' || echo '$(srcdir)/'`testparser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testparser-testparser.Tpo $(DEPDIR)/testparser-testparser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testparser.c' object='testparser-testparser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparser_CFLAGS) $(CFLAGS) -c -o testparser-testparser.o `test -f 'testparser.c' || echo '$(srcdir)/'`testparser.c
-
-testparser-testparser.obj: testparser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparser_CFLAGS) $(CFLAGS) -MT testparser-testparser.obj -MD -MP -MF $(DEPDIR)/testparser-testparser.Tpo -c -o testparser-testparser.obj `if test -f 'testparser.c'; then $(CYGPATH_W) 'testparser.c'; else $(CYGPATH_W) '$(srcdir)/testparser.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testparser-testparser.Tpo $(DEPDIR)/testparser-testparser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testparser.c' object='testparser-testparser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testparser_CFLAGS) $(CFLAGS) -c -o testparser-testparser.obj `if test -f 'testparser.c'; then $(CYGPATH_W) 'testparser.c'; else $(CYGPATH_W) '$(srcdir)/testparser.c'; fi`
-
-testprops-testprops.o: testprops.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testprops_CFLAGS) $(CFLAGS) -MT testprops-testprops.o -MD -MP -MF $(DEPDIR)/testprops-testprops.Tpo -c -o testprops-testprops.o `test -f 'testprops.c' || echo '$(srcdir)/'`testprops.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testprops-testprops.Tpo $(DEPDIR)/testprops-testprops.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testprops.c' object='testprops-testprops.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testprops_CFLAGS) $(CFLAGS) -c -o testprops-testprops.o `test -f 'testprops.c' || echo '$(srcdir)/'`testprops.c
-
-testprops-testprops.obj: testprops.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testprops_CFLAGS) $(CFLAGS) -MT testprops-testprops.obj -MD -MP -MF $(DEPDIR)/testprops-testprops.Tpo -c -o testprops-testprops.obj `if test -f 'testprops.c'; then $(CYGPATH_W) 'testprops.c'; else $(CYGPATH_W) '$(srcdir)/testprops.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testprops-testprops.Tpo $(DEPDIR)/testprops-testprops.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testprops.c' object='testprops-testprops.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testprops_CFLAGS) $(CFLAGS) -c -o testprops-testprops.obj `if test -f 'testprops.c'; then $(CYGPATH_W) 'testprops.c'; else $(CYGPATH_W) '$(srcdir)/testprops.c'; fi`
-
-testquery-testquery.o: testquery.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testquery_CFLAGS) $(CFLAGS) -MT testquery-testquery.o -MD -MP -MF $(DEPDIR)/testquery-testquery.Tpo -c -o testquery-testquery.o `test -f 'testquery.c' || echo '$(srcdir)/'`testquery.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testquery-testquery.Tpo $(DEPDIR)/testquery-testquery.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testquery.c' object='testquery-testquery.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testquery_CFLAGS) $(CFLAGS) -c -o testquery-testquery.o `test -f 'testquery.c' || echo '$(srcdir)/'`testquery.c
-
-testquery-testquery.obj: testquery.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testquery_CFLAGS) $(CFLAGS) -MT testquery-testquery.obj -MD -MP -MF $(DEPDIR)/testquery-testquery.Tpo -c -o testquery-testquery.obj `if test -f 'testquery.c'; then $(CYGPATH_W) 'testquery.c'; else $(CYGPATH_W) '$(srcdir)/testquery.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testquery-testquery.Tpo $(DEPDIR)/testquery-testquery.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testquery.c' object='testquery-testquery.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testquery_CFLAGS) $(CFLAGS) -c -o testquery-testquery.obj `if test -f 'testquery.c'; then $(CYGPATH_W) 'testquery.c'; else $(CYGPATH_W) '$(srcdir)/testquery.c'; fi`
-
-testqueue-testqueue.o: testqueue.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testqueue_CFLAGS) $(CFLAGS) -MT testqueue-testqueue.o -MD -MP -MF $(DEPDIR)/testqueue-testqueue.Tpo -c -o testqueue-testqueue.o `test -f 'testqueue.c' || echo '$(srcdir)/'`testqueue.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testqueue-testqueue.Tpo $(DEPDIR)/testqueue-testqueue.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testqueue.c' object='testqueue-testqueue.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testqueue_CFLAGS) $(CFLAGS) -c -o testqueue-testqueue.o `test -f 'testqueue.c' || echo '$(srcdir)/'`testqueue.c
-
-testqueue-testqueue.obj: testqueue.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testqueue_CFLAGS) $(CFLAGS) -MT testqueue-testqueue.obj -MD -MP -MF $(DEPDIR)/testqueue-testqueue.Tpo -c -o testqueue-testqueue.obj `if test -f 'testqueue.c'; then $(CYGPATH_W) 'testqueue.c'; else $(CYGPATH_W) '$(srcdir)/testqueue.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testqueue-testqueue.Tpo $(DEPDIR)/testqueue-testqueue.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testqueue.c' object='testqueue-testqueue.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testqueue_CFLAGS) $(CFLAGS) -c -o testqueue-testqueue.obj `if test -f 'testqueue.c'; then $(CYGPATH_W) 'testqueue.c'; else $(CYGPATH_W) '$(srcdir)/testqueue.c'; fi`
-
-testrate-testrate.o: testrate.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrate_CFLAGS) $(CFLAGS) -MT testrate-testrate.o -MD -MP -MF $(DEPDIR)/testrate-testrate.Tpo -c -o testrate-testrate.o `test -f 'testrate.c' || echo '$(srcdir)/'`testrate.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrate-testrate.Tpo $(DEPDIR)/testrate-testrate.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrate.c' object='testrate-testrate.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrate_CFLAGS) $(CFLAGS) -c -o testrate-testrate.o `test -f 'testrate.c' || echo '$(srcdir)/'`testrate.c
-
-testrate-testrate.obj: testrate.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrate_CFLAGS) $(CFLAGS) -MT testrate-testrate.obj -MD -MP -MF $(DEPDIR)/testrate-testrate.Tpo -c -o testrate-testrate.obj `if test -f 'testrate.c'; then $(CYGPATH_W) 'testrate.c'; else $(CYGPATH_W) '$(srcdir)/testrate.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrate-testrate.Tpo $(DEPDIR)/testrate-testrate.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrate.c' object='testrate-testrate.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrate_CFLAGS) $(CFLAGS) -c -o testrate-testrate.obj `if test -f 'testrate.c'; then $(CYGPATH_W) 'testrate.c'; else $(CYGPATH_W) '$(srcdir)/testrate.c'; fi`
-
-testrecv-testrecv.o: testrecv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrecv_CFLAGS) $(CFLAGS) -MT testrecv-testrecv.o -MD -MP -MF $(DEPDIR)/testrecv-testrecv.Tpo -c -o testrecv-testrecv.o `test -f 'testrecv.c' || echo '$(srcdir)/'`testrecv.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrecv-testrecv.Tpo $(DEPDIR)/testrecv-testrecv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrecv.c' object='testrecv-testrecv.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrecv_CFLAGS) $(CFLAGS) -c -o testrecv-testrecv.o `test -f 'testrecv.c' || echo '$(srcdir)/'`testrecv.c
-
-testrecv-testrecv.obj: testrecv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrecv_CFLAGS) $(CFLAGS) -MT testrecv-testrecv.obj -MD -MP -MF $(DEPDIR)/testrecv-testrecv.Tpo -c -o testrecv-testrecv.obj `if test -f 'testrecv.c'; then $(CYGPATH_W) 'testrecv.c'; else $(CYGPATH_W) '$(srcdir)/testrecv.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testrecv-testrecv.Tpo $(DEPDIR)/testrecv-testrecv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testrecv.c' object='testrecv-testrecv.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testrecv_CFLAGS) $(CFLAGS) -c -o testrecv-testrecv.obj `if test -f 'testrecv.c'; then $(CYGPATH_W) 'testrecv.c'; else $(CYGPATH_W) '$(srcdir)/testrecv.c'; fi`
-
-testreverse-testreverse.o: testreverse.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testreverse_CFLAGS) $(CFLAGS) -MT testreverse-testreverse.o -MD -MP -MF $(DEPDIR)/testreverse-testreverse.Tpo -c -o testreverse-testreverse.o `test -f 'testreverse.c' || echo '$(srcdir)/'`testreverse.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testreverse-testreverse.Tpo $(DEPDIR)/testreverse-testreverse.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testreverse.c' object='testreverse-testreverse.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testreverse_CFLAGS) $(CFLAGS) -c -o testreverse-testreverse.o `test -f 'testreverse.c' || echo '$(srcdir)/'`testreverse.c
-
-testreverse-testreverse.obj: testreverse.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testreverse_CFLAGS) $(CFLAGS) -MT testreverse-testreverse.obj -MD -MP -MF $(DEPDIR)/testreverse-testreverse.Tpo -c -o testreverse-testreverse.obj `if test -f 'testreverse.c'; then $(CYGPATH_W) 'testreverse.c'; else $(CYGPATH_W) '$(srcdir)/testreverse.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testreverse-testreverse.Tpo $(DEPDIR)/testreverse-testreverse.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testreverse.c' object='testreverse-testreverse.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testreverse_CFLAGS) $(CFLAGS) -c -o testreverse-testreverse.obj `if test -f 'testreverse.c'; then $(CYGPATH_W) 'testreverse.c'; else $(CYGPATH_W) '$(srcdir)/testreverse.c'; fi`
-
-testselect-testselect.o: testselect.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testselect_CFLAGS) $(CFLAGS) -MT testselect-testselect.o -MD -MP -MF $(DEPDIR)/testselect-testselect.Tpo -c -o testselect-testselect.o `test -f 'testselect.c' || echo '$(srcdir)/'`testselect.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testselect-testselect.Tpo $(DEPDIR)/testselect-testselect.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testselect.c' object='testselect-testselect.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testselect_CFLAGS) $(CFLAGS) -c -o testselect-testselect.o `test -f 'testselect.c' || echo '$(srcdir)/'`testselect.c
-
-testselect-testselect.obj: testselect.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testselect_CFLAGS) $(CFLAGS) -MT testselect-testselect.obj -MD -MP -MF $(DEPDIR)/testselect-testselect.Tpo -c -o testselect-testselect.obj `if test -f 'testselect.c'; then $(CYGPATH_W) 'testselect.c'; else $(CYGPATH_W) '$(srcdir)/testselect.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testselect-testselect.Tpo $(DEPDIR)/testselect-testselect.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testselect.c' object='testselect-testselect.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testselect_CFLAGS) $(CFLAGS) -c -o testselect-testselect.obj `if test -f 'testselect.c'; then $(CYGPATH_W) 'testselect.c'; else $(CYGPATH_W) '$(srcdir)/testselect.c'; fi`
-
-testsend-testsend.o: testsend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsend_CFLAGS) $(CFLAGS) -MT testsend-testsend.o -MD -MP -MF $(DEPDIR)/testsend-testsend.Tpo -c -o testsend-testsend.o `test -f 'testsend.c' || echo '$(srcdir)/'`testsend.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testsend-testsend.Tpo $(DEPDIR)/testsend-testsend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testsend.c' object='testsend-testsend.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsend_CFLAGS) $(CFLAGS) -c -o testsend-testsend.o `test -f 'testsend.c' || echo '$(srcdir)/'`testsend.c
-
-testsend-testsend.obj: testsend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsend_CFLAGS) $(CFLAGS) -MT testsend-testsend.obj -MD -MP -MF $(DEPDIR)/testsend-testsend.Tpo -c -o testsend-testsend.obj `if test -f 'testsend.c'; then $(CYGPATH_W) 'testsend.c'; else $(CYGPATH_W) '$(srcdir)/testsend.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testsend-testsend.Tpo $(DEPDIR)/testsend-testsend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testsend.c' object='testsend-testsend.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsend_CFLAGS) $(CFLAGS) -c -o testsend-testsend.obj `if test -f 'testsend.c'; then $(CYGPATH_W) 'testsend.c'; else $(CYGPATH_W) '$(srcdir)/testsend.c'; fi`
-
-testspeed-testspeed.o: testspeed.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testspeed_CFLAGS) $(CFLAGS) -MT testspeed-testspeed.o -MD -MP -MF $(DEPDIR)/testspeed-testspeed.Tpo -c -o testspeed-testspeed.o `test -f 'testspeed.c' || echo '$(srcdir)/'`testspeed.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testspeed-testspeed.Tpo $(DEPDIR)/testspeed-testspeed.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testspeed.c' object='testspeed-testspeed.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testspeed_CFLAGS) $(CFLAGS) -c -o testspeed-testspeed.o `test -f 'testspeed.c' || echo '$(srcdir)/'`testspeed.c
-
-testspeed-testspeed.obj: testspeed.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testspeed_CFLAGS) $(CFLAGS) -MT testspeed-testspeed.obj -MD -MP -MF $(DEPDIR)/testspeed-testspeed.Tpo -c -o testspeed-testspeed.obj `if test -f 'testspeed.c'; then $(CYGPATH_W) 'testspeed.c'; else $(CYGPATH_W) '$(srcdir)/testspeed.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testspeed-testspeed.Tpo $(DEPDIR)/testspeed-testspeed.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testspeed.c' object='testspeed-testspeed.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testspeed_CFLAGS) $(CFLAGS) -c -o testspeed-testspeed.obj `if test -f 'testspeed.c'; then $(CYGPATH_W) 'testspeed.c'; else $(CYGPATH_W) '$(srcdir)/testspeed.c'; fi`
-
-testsync-testsync.o: testsync.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsync_CFLAGS) $(CFLAGS) -MT testsync-testsync.o -MD -MP -MF $(DEPDIR)/testsync-testsync.Tpo -c -o testsync-testsync.o `test -f 'testsync.c' || echo '$(srcdir)/'`testsync.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testsync-testsync.Tpo $(DEPDIR)/testsync-testsync.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testsync.c' object='testsync-testsync.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsync_CFLAGS) $(CFLAGS) -c -o testsync-testsync.o `test -f 'testsync.c' || echo '$(srcdir)/'`testsync.c
-
-testsync-testsync.obj: testsync.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsync_CFLAGS) $(CFLAGS) -MT testsync-testsync.obj -MD -MP -MF $(DEPDIR)/testsync-testsync.Tpo -c -o testsync-testsync.obj `if test -f 'testsync.c'; then $(CYGPATH_W) 'testsync.c'; else $(CYGPATH_W) '$(srcdir)/testsync.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testsync-testsync.Tpo $(DEPDIR)/testsync-testsync.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testsync.c' object='testsync-testsync.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testsync_CFLAGS) $(CFLAGS) -c -o testsync-testsync.obj `if test -f 'testsync.c'; then $(CYGPATH_W) 'testsync.c'; else $(CYGPATH_W) '$(srcdir)/testsync.c'; fi`
-
-testvector-testvector.o: testvector.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testvector_CFLAGS) $(CFLAGS) -MT testvector-testvector.o -MD -MP -MF $(DEPDIR)/testvector-testvector.Tpo -c -o testvector-testvector.o `test -f 'testvector.c' || echo '$(srcdir)/'`testvector.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testvector-testvector.Tpo $(DEPDIR)/testvector-testvector.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testvector.c' object='testvector-testvector.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testvector_CFLAGS) $(CFLAGS) -c -o testvector-testvector.o `test -f 'testvector.c' || echo '$(srcdir)/'`testvector.c
-
-testvector-testvector.obj: testvector.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testvector_CFLAGS) $(CFLAGS) -MT testvector-testvector.obj -MD -MP -MF $(DEPDIR)/testvector-testvector.Tpo -c -o testvector-testvector.obj `if test -f 'testvector.c'; then $(CYGPATH_W) 'testvector.c'; else $(CYGPATH_W) '$(srcdir)/testvector.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/testvector-testvector.Tpo $(DEPDIR)/testvector-testvector.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testvector.c' object='testvector-testvector.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testvector_CFLAGS) $(CFLAGS) -c -o testvector-testvector.obj `if test -f 'testvector.c'; then $(CYGPATH_W) 'testvector.c'; else $(CYGPATH_W) '$(srcdir)/testvector.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:
-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:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-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: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check 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/test/test.c b/test/test.c
index 0ef5871..4ffd8ed 100644
--- a/test/test.c
+++ b/test/test.c
@@ -4,15 +4,19 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
+#include <stdlib.h>
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -29,28 +33,33 @@ int sent = 0;
 int received = 0;
 int done = 0;
 
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+
 /*! Creation of a local source. */
 int setup_source()
 {
     source = mdev_new("testsend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
-    float mn=0, mx=10;
+    float mnf[]={3.2,2,0}, mxf[]={-2,13,100};
+    double mnd=0, mxd=10;
 
-    sendsig_1 = mdev_add_output(source, "/outsig_1", 1, 'f', "Hz", &mn, &mx);
-    sendsig_2 = mdev_add_output(source, "/outsig_2", 1, 'f', "mm", &mn, &mx);
-    sendsig_3 = mdev_add_output(source, "/outsig_3", 3, 'f', 0, &mn, &mx);
-    sendsig_4 = mdev_add_output(source, "/outsig_4", 1, 'f', 0, &mn, &mx);
+    sendsig_1 = mdev_add_output(source, "/outsig_1", 1, 'd', "Hz", &mnd, &mxd);
+    sendsig_2 = mdev_add_output(source, "/outsig_2", 1, 'f', "mm", mnf, mxf);
+    sendsig_3 = mdev_add_output(source, "/outsig_3", 3, 'f', 0, mnf, mxf);
+    sendsig_4 = mdev_add_output(source, "/outsig_4", 1, 'f', 0, mnf, mxf);
 
-    printf("Output signal /outsig registered.\n");
+    eprintf("Output signal /outsig registered.\n");
 
     // Make sure we can add and remove outputs without crashing.
     mdev_remove_output(source, mdev_add_output(source, "/outsig_5", 1,
-                                               'f', 0, &mn, &mx));
+                                               'f', 0, &mnf, &mxf));
 
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
 
     return 0;
 
@@ -61,10 +70,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -73,12 +82,20 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination got %s", props->name);
-        float *v = value;
-        for (int i = 0; i < props->length; i++) {
-            printf(" %f", v[i]);
+        eprintf("--> destination got %s", props->name);
+        if (props->type == 'f') {
+            float *v = value;
+            for (int i = 0; i < props->length; i++) {
+                eprintf(" %f", v[i]);
+            }
+        }
+        else if (props->type == 'd') {
+            double *v = value;
+            for (int i = 0; i < props->length; i++) {
+                eprintf(" %f", v[i]);
+            }
         }
-        printf("\n");
+        eprintf("\n");
     }
     received++;
 }
@@ -89,27 +106,28 @@ int setup_destination()
     destination = mdev_new("testrecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
-    float mn=0, mx=1;
+    float mnf[]={0,0,0}, mxf[]={1,1,1};
+    double mnd=0, mxd=1;
 
     recvsig_1 = mdev_add_input(destination, "/insig_1", 1, 'f',
-                               0, &mn, &mx, insig_handler, 0);
-    recvsig_2 = mdev_add_input(destination, "/insig_2", 1, 'f',
-                               0, &mn, &mx, insig_handler, 0);
+                               0, mnf, mxf, insig_handler, 0);
+    recvsig_2 = mdev_add_input(destination, "/insig_2", 1, 'd',
+                               0, &mnd, &mxd, insig_handler, 0);
     recvsig_3 = mdev_add_input(destination, "/insig_3", 3, 'f',
-                               0, &mn, &mx, insig_handler, 0);
+                               0, mnf, mxf, insig_handler, 0);
     recvsig_4 = mdev_add_input(destination, "/insig_4", 1, 'f',
-                               0, &mn, &mx, insig_handler, 0);
+                               0, mnf, mxf, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
+    eprintf("Input signal /insig registered.\n");
 
     // Make sure we can add and remove inputs and inputs within crashing.
     mdev_remove_input(destination,
                       mdev_add_input(destination, "/insig_5", 1,
-                                     'f', 0, &mn, &mx, 0, 0));
+                                     'f', 0, &mnf, &mxf, 0, 0));
 
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
 
     return 0;
 
@@ -120,10 +138,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -141,10 +159,10 @@ void wait_local_devices()
 
 void loop()
 {
-    printf("-------------------- GO ! --------------------\n");
-    int i = 0;
+    eprintf("-------------------- GO ! --------------------\n");
+    int i = 0, recvd;
 
-    if (automate) {
+    if (autoconnect) {
         mapper_monitor mon = mapper_monitor_new(source->admin, 0);
 
         char src_name[1024], dest_name[1024];
@@ -159,17 +177,49 @@ void loop()
         msig_full_name(recvsig_2, dest_name, 1024);
         mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
 
+        msig_full_name(sendsig_3, src_name, 1024);
+        msig_full_name(recvsig_3, dest_name, 1024);
+        mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+
+        msig_full_name(recvsig_4, dest_name, 1024);
+        mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+
+        // wait until connection has been established
+        while (!source->routers || !source->routers->n_connections) {
+            mdev_poll(source, 1);
+            mdev_poll(destination, 1);
+        }
+
         mapper_monitor_free(mon);
     }
 
-    while (i >= 0 && !done) {
+    float val[3];
+    while ((!terminate || i < 50) && !done) {
         mdev_poll(source, 0);
-        msig_update_float(source->outputs[0], ((i % 10) * 1.0f));
-        msig_update_float(source->outputs[1], ((i % 10) * 1.0f));
-        printf("source value updated to %d -->\n", i % 10);
+        msig_update_double(sendsig_1, ((i % 10) * 1.0f));
+        eprintf("/outsig_1 value updated to %d -->\n", i % 10);
+
+        msig_update_float(sendsig_2, ((i % 10) * 1.0f));
+        eprintf("/outsig_2 value updated to %d -->\n", i % 10);
 
-        printf("Received %i messages.\n\n", mdev_poll(destination, 100));
+        val[0] = val[1] = val[2] = (i % 10) * 1.0f;
+        msig_update(sendsig_3, val, 1, MAPPER_NOW);
+        eprintf("/outsig_3 value updated to [%f,%f,%f] -->\n",
+               val[0], val[1], val[2]);
+
+        msig_update_float(sendsig_4, ((i % 10) * 1.0f));
+        eprintf("/outsig_4 value updated to %d -->\n", i % 10);
+
+        eprintf("Sent %i messages.\n", 4);
+        sent += 4;
+        recvd = mdev_poll(destination, 100);
+        eprintf("Received %i messages.\n\n", recvd);
         i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
@@ -178,20 +228,46 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char ** argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("test.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
@@ -200,8 +276,14 @@ int main()
 
     loop();
 
+    if (autoconnect && received != sent) {
+        eprintf("sent: %d, recvd: %d\n", sent, received);
+        result = 1;
+    }
+
   done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testadmin.c b/test/testadmin.c
index 2eb0820..420e021 100644
--- a/test/testadmin.c
+++ b/test/testadmin.c
@@ -3,65 +3,101 @@
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
+#include <string.h>
 #include <unistd.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
 mapper_admin my_admin = NULL;
 mapper_device my_device = NULL;
 
+int verbose = 1;
+
 int test_admin()
 {
     int error = 0, wait;
 
     my_admin = mapper_admin_new(0, 0, 0);
     if (!my_admin) {
-        printf("Error creating admin structure.\n");
+        eprintf("Error creating admin structure.\n");
         return 1;
     }
 
-    printf("Admin structure initialized.\n");
+    eprintf("Admin structure initialized.\n");
 
     my_device = mdev_new("tester", 0, my_admin);
     if (!my_device) {
-        printf("Error creating device structure.\n");
+        eprintf("Error creating device structure.\n");
         return 1;
     }
 
-    printf("Device structure initialized.\n");
+    eprintf("Device structure initialized.\n");
 
-    printf("Found interface %s has IP %s\n", my_admin->interface_name,
+    eprintf("Found interface %s has IP %s\n", my_admin->interface_name,
            inet_ntoa(my_admin->interface_ip));
 
-    while (!my_admin->registered) {
+    while (!my_device->registered) {
         usleep(10000);
         mapper_admin_poll(my_admin);
     }
 
-    printf("Using port %d.\n", my_admin->port);
-    printf("Allocated ordinal %d.\n", my_admin->ordinal.value);
+    eprintf("Using port %d.\n", my_device->props.port);
+    eprintf("Allocated ordinal %d.\n", my_device->ordinal.value);
 
-    printf("Delaying for 5 seconds..\n");
-    wait = 500;
-    while (wait-- >= 0) {
-        usleep(10000);
+    eprintf("Delaying for 5 seconds..\n");
+    wait = 50;
+    while (wait-- > 0) {
+        usleep(50000);
         mapper_admin_poll(my_admin);
+        if (!verbose) {
+            printf(".");
+            fflush(stdout);
+        }
     }
 
     mdev_free(my_device);
-    printf("Device structure freed.\n");
+    eprintf("Device structure freed.\n");
     mapper_admin_free(my_admin);
-    printf("Admin structure freed.\n");
+    eprintf("Admin structure freed.\n");
 
     return error;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = test_admin();
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testadmin.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    result = test_admin();
+
     if (result) {
         printf("Test FAILED.\n");
         return 1;
diff --git a/test/testcustomtransport.c b/test/testcustomtransport.c
index 7e67b66..ee35aaa 100644
--- a/test/testcustomtransport.c
+++ b/test/testcustomtransport.c
@@ -6,7 +6,6 @@
 #include <string.h>
 #include <stdlib.h>
 #include <lo/lo.h>
-
 #include <sys/ioctl.h>
 #include <unistd.h>
 #include <signal.h>
@@ -16,7 +15,15 @@
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int autoconnect = 1;
+int terminate = 0;
+int iterations = 50; // only matters when terminate==1
+int verbose = 1;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -44,14 +51,13 @@ void on_mdev_link(mapper_device dev,
                   mapper_device_local_action_t action,
                   void *user)
 {
-    printf("%s link for %s (%s -> %s), ",
-           action == MDEV_LOCAL_ESTABLISHED ? "New"
-           : action == MDEV_LOCAL_DESTROYED ? "Destroyed" : "????",
-           mdev_name(dev), link->src_name, link->dest_name);
-
-    printf("destination host is %s, port is %s\n",
-           lo_address_get_hostname(link->dest_addr),
-           lo_address_get_port(link->dest_addr));
+    eprintf("%s link for %s (%s -> %s), ",
+            action == MDEV_LOCAL_ESTABLISHED ? "New"
+            : action == MDEV_LOCAL_DESTROYED ? "Destroyed" : "????",
+            mdev_name(dev), link->src_name, link->dest_name);
+
+    eprintf("destination host is %s, port is %i\n",
+            link->dest_host, link->dest_port);
 }
 
 void on_mdev_connection(mapper_device dev,
@@ -61,52 +67,58 @@ void on_mdev_connection(mapper_device dev,
                         mapper_device_local_action_t action,
                         void *user)
 {
-    printf("%s connection for %s (%s:%s -> %s:%s), ",
-           action == MDEV_LOCAL_ESTABLISHED ? "New"
-           : action == MDEV_LOCAL_DESTROYED ? "Destroyed" : "????",
-           mdev_name(dev),
-           link->src_name, connection->src_name,
-           link->dest_name, connection->dest_name);
-
-    printf("destination host is %s, port is %s\n",
-           lo_address_get_hostname(link->dest_addr),
-           lo_address_get_port(link->dest_addr));
-
-    if (send_socket != -1) {
-        printf("send socket already in use, not doing anything.\n");
+    eprintf("%s connection for %s (%s:%s -> %s:%s), ",
+            action == MDEV_LOCAL_ESTABLISHED ? "New"
+            : action == MDEV_LOCAL_DESTROYED ? "Destroyed" : "????",
+            mdev_name(dev),
+            link->src_name, connection->src_name,
+            link->dest_name, connection->dest_name);
+
+    eprintf("destination host is %s, port is %i\n",
+            link->dest_host, link->dest_port);
+
+    if (action == MDEV_LOCAL_DESTROYED) {
+        if (send_socket != -1) {
+            close(send_socket);
+            send_socket = -1;
+        }
+    }
+    else if (send_socket != -1) {
+        eprintf("send socket already in use, not doing anything.\n");
         return;
     }
 
-    const lo_arg *a_transport;
-    lo_type t;
-    if (mapper_db_connection_property_lookup(connection,
-                                             "transport",
-                                             &t, &a_transport)
-        || t != 's')
+    const char *a_transport;
+    char t;
+    int length;
+    if (mapper_db_connection_property_lookup(connection, "transport", &t,
+                                             (const void **)&a_transport,
+                                             &length)
+        || t != 's' || length != 1)
     {
-        printf("Couldn't find `transport' property.\n");
+        eprintf("Couldn't find `transport' property.\n");
         return;
     }
 
-    if (strncmp(&a_transport->s, "tcp", 3) != 0) {
-        printf("Unknown transport property `%s', "
-               "was expecting `tcp'.\n", &a_transport->s);
+    
+    if (strncmp(a_transport, "tcp", 3) != 0) {
+        eprintf("Unknown transport property `%s', "
+                "was expecting `tcp'.\n", a_transport);
         return;
     }
 
     // Find the TCP port in the connection properties
-    const lo_arg *a_port;
-    if (mapper_db_connection_property_lookup(connection,
-                                             "tcpPort",
-                                             &t, &a_port)
-        || t != 'i')
+    const int *a_port;
+    if (mapper_db_connection_property_lookup(connection, "tcpPort", &t,
+                                             (const void **)&a_port, &length)
+        || t != 'i' || length != 1)
     {
-        printf("Couldn't make TCP connection, "
-               "tcpPort property not found.\n");
+        eprintf("Couldn't make TCP connection, "
+                "tcpPort property not found.\n");
         return;
     }
 
-    int port = a_port->i, on = 1;
+    int port = *a_port, on = 1;
 
     send_socket = socket(AF_INET, SOCK_STREAM, 0);
 
@@ -118,20 +130,20 @@ void on_mdev_connection(mapper_device dev,
         exit(1);
     }
 
-    const char *hostname = lo_address_get_hostname(link->dest_addr);
+    const char *host = link->dest_host;
 
-    printf("Connecting with TCP to `%s' on port %d.\n", hostname, port);
+    eprintf("Connecting with TCP to `%s' on port %d.\n", host, port);
 
     struct sockaddr_in addr;
     memset((char *) &addr, 0, sizeof(addr));
     addr.sin_family = AF_INET;
-    addr.sin_addr.s_addr = inet_addr(hostname);
+    addr.sin_addr.s_addr = inet_addr(host);
     addr.sin_port = htons(port);
 
     if (connect(send_socket, (struct sockaddr*)&addr, sizeof(addr)))
     {
         if (errno == EINPROGRESS)
-            printf("Connecting!\n");
+            eprintf("Connecting!\n");
         else
         {
             perror("connect");
@@ -148,20 +160,21 @@ int setup_source()
     source = mdev_new("testsend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=10;
 
-    mdev_add_link_callback(source, on_mdev_link, 0);
-    mdev_add_connection_callback(source, on_mdev_connection, 0);
+    mdev_set_link_callback(source, on_mdev_link, 0);
+    mdev_set_connection_callback(source, on_mdev_connection, 0);
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', "Hz", &mn, &mx);
 
     // Add custom meta-data specifying that this signal supports a
     // special TCP transport.
-    msig_set_property(sendsig, "transport", 's', (lo_arg*)"tcp");
+    char *str = "tcp";
+    msig_set_property(sendsig, "transport", 's', &str, 1);
 
-    printf("Output signal /outsig registered.\n");
+    eprintf("Output signal /outsig registered.\n");
 
     return 0;
 
@@ -172,10 +185,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -184,12 +197,12 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination got %s", props->name);
+        eprintf("--> destination got %s", props->name);
         float *v = value;
         for (int i = 0; i < props->length; i++) {
-            printf(" %f", v[i]);
+            eprintf(" %f", v[i]);
         }
-        printf("\n");
+        eprintf("\n");
     }
     received++;
 }
@@ -200,7 +213,7 @@ int setup_destination()
     destination = mdev_new("testrecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
@@ -209,13 +222,14 @@ int setup_destination()
 
     // Add custom meta-data specifying a special transport for this
     // signal.
-    msig_set_property(recvsig, "transport", 's', (lo_arg*)"tcp");
+    char *str = "tcp";
+    msig_set_property(recvsig, "transport", 's', &str, 1);
 
     // Add custom meta-data specifying a port to use for this signal's
     // custom transport.
-    msig_set_property(recvsig, "tcpPort", 'i', (lo_arg*)&tcp_port);
+    msig_set_property(recvsig, "tcpPort", 'i', &tcp_port, 1);
 
-    printf("Input signal /insig registered.\n");
+    eprintf("Input signal /insig registered.\n");
 
     return 0;
 
@@ -226,10 +240,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -245,10 +259,10 @@ void wait_local_devices()
 
 void loop()
 {
-    printf("-------------------- GO ! --------------------\n");
+    eprintf("-------------------- GO ! --------------------\n");
     int i = 0;
 
-    if (automate) {
+    if (autoconnect) {
         mapper_monitor mon = mapper_monitor_new(source->admin, 0);
 
         char src_name[1024], dest_name[1024];
@@ -277,11 +291,11 @@ void loop()
         exit(1);
     }
 
-    printf("Bound to TCP port %d\n", tcp_port);
+    eprintf("Bound to TCP port %d\n", tcp_port);
 
     listen(listen_socket, 1);
 
-    while (i >= 0 && !done) {
+    while ((!terminate || received < iterations) && !done) {
         mdev_poll(source, 0);
 
         // Instead of
@@ -313,41 +327,52 @@ void loop()
                     if (recv_socket < 0)
                         perror("accept");
                     else
-                        printf("TCP connection accepted.\n");
+                        eprintf("TCP connection accepted.\n");
                 }
 
                 if (recv_socket >= 0
                     && FD_ISSET(recv_socket, &fdsr))
                 {
                     float j;
-                    if (recv(recv_socket, &j, sizeof(float), 0) > 0)
-                        printf("received value %g\n", j);
+                    if (recv(recv_socket, &j, sizeof(float), 0) > 0) {
+                        eprintf("received value %g\n", j);
+                        received++;
+                    }
                     else {
                         perror("recv");
-                        printf("closing receive socket.\n");
+                        eprintf("closing receive socket.\n");
                         close(recv_socket);
                         recv_socket = -1;
                     }
                 }
 
-                if (FD_ISSET(send_socket, &fdss)) {
+                if (FD_ISSET(send_socket, &fdss)
+                    && (!terminate || sent < iterations)) {
 
                     float j = (i % 10) * 1.0f;
-                    if (send(send_socket, &j, sizeof(float), 0) > 0)
-                        printf("source value updated to %g -->\n", j);
+                    if (send(send_socket, &j, sizeof(float), 0) > 0) {
+                        eprintf("source value updated to %g -->\n", j);
+                        sent++;
+                    }
                     else {
                         perror("send");
-                        printf("closing send socket.\n");
+                        eprintf("closing send socket.\n");
                         close(send_socket);
                         send_socket = -1;
                     }
                 }
             }
         }
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
 
         mdev_poll(destination, 100);
         i++;
     }
+    if (send_socket != -1)
+        close(send_socket);
 }
 
 void ctrlc(int sig)
@@ -355,20 +380,46 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testcustomtransport.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
@@ -377,8 +428,14 @@ int main()
 
     loop();
 
+    if (autoconnect && received != sent) {
+        eprintf("sent: %d, recvd: %d\n", sent, received);
+        result = 1;
+    }
+
   done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testdb.c b/test/testdb.c
index 1bab1be..150dc81 100644
--- a/test/testdb.c
+++ b/test/testdb.c
@@ -1,39 +1,92 @@
 
 #include <stdio.h>
 #include <string.h>
-
 #include <lo/lo_lowlevel.h>
-
 #include "../src/types_internal.h"
 #include "../src/mapper_internal.h"
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+
 void printsignal(mapper_db_signal sig)
 {
-    printf("  name=%s%s, type=%c, length=%d",
-           sig->device_name, sig->name, sig->type, sig->length);
+    int i;
+    eprintf("  name=%s%s, type=%c, length=%d",
+            sig->device_name, sig->name, sig->type, sig->length);
     if (sig->unit)
-        printf(", unit=%s", sig->unit);
+        eprintf(", unit=%s", sig->unit);
     if (sig->minimum) {
-        if (sig->type == 'i')
-            printf(", minimum=%d", sig->minimum->i32);
-        else if (sig->type == 'f')
-            printf(", minimum=%g", sig->minimum->f);
+        if (sig->type == 'i') {
+            int *vals = (int*)sig->minimum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", minimum=%d", vals[i]);
+        }
+        else if (sig->type == 'f') {
+            float *vals = (float*)sig->minimum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", minimum=%g", vals[i]);
+        }
+        else if (sig->type == 'd') {
+            double *vals = (double*)sig->minimum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", minimum=%g", vals[i]);
+        }
     }
     if (sig->maximum) {
-        if (sig->type == 'i')
-            printf(", maximum=%d", sig->maximum->i32);
-        else if (sig->type == 'f')
-            printf(", maximum=%g", sig->maximum->f);
-    }
-    printf("\n");
+        if (sig->type == 'i') {
+            int *vals = (int*)sig->maximum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", maximum=%d", vals[i]);
+        }
+        else if (sig->type == 'f') {
+            float *vals = (float*)sig->maximum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", maximum=%g", vals[i]);
+        }
+        else if (sig->type == 'd') {
+            double *vals = (double*)sig->maximum;
+            for (i = 0; i < sig->length; i++)
+                eprintf(", minimum=%g", vals[i]);
+        }
+    }
+    eprintf("\n");
 }
 
-int main()
+int main(int argc, char **argv)
 {
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testdb.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
     lo_arg *args[20];
     mapper_message_t msg;
     int port=1234;
-    int zero=0, one=1;
+    int one=1, two=2;
+    float zerof=0.;
     mapper_db_t db_t, *db = &db_t;
     memset(db, 0, sizeof(db_t));
 
@@ -46,8 +99,9 @@ int main()
 
     if (mapper_msg_parse_params(&msg, "/registered", "siss", 4, args))
     {
-        printf("1: Error, parsing failed.\n");
-        return 1;
+        eprintf("1: Error, parsing failed.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_device_params(db, "/testdb.1", &msg);
@@ -65,8 +119,9 @@ int main()
     if (mapper_msg_parse_params(&msg, "/testdb.1/signal",
                                 "sc", 2, args))
     {
-        printf("2: Error, parsing failed.\n");
-        return 1;
+        eprintf("2: Error, parsing failed.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_signal_params(db, "/in1", "/testdb.1", &msg);
@@ -78,8 +133,9 @@ int main()
     if (mapper_msg_parse_params(&msg, "/testdb.1/signal",
                                 "sc", 2, args))
     {
-        printf("2: Error, parsing failed.\n");
-        return 1;
+        eprintf("2: Error, parsing failed.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_signal_params(db, "/out1", "/testdb.1", &msg);
@@ -94,8 +150,9 @@ int main()
     if (mapper_msg_parse_params(&msg, "/connected",
                                 "ssss", 4, args))
     {
-        printf("4: Error, parsing failed.\n");
-        return 1;
+        eprintf("4: Error, parsing failed.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_connection_params(db, "/testdb.1/out2",
@@ -108,18 +165,24 @@ int main()
     args[2] = (lo_arg*)"@expression";
     args[3] = (lo_arg*)"(x-10)*80";
     args[4] = (lo_arg*)"@boundMin";
-    args[5] = (lo_arg*)"none";
-    args[6] = (lo_arg*)"@range";
-    args[7] = (lo_arg*)&zero;
-    args[8] = (lo_arg*)&one;
-    args[9] = (lo_arg*)&zero;
-    args[10] = (lo_arg*)&one;
+    args[5] = (lo_arg*)"clamp";
+    args[6] = (lo_arg*)"@srcLength";
+    args[7] = (lo_arg*)&two;
+    args[8] = (lo_arg*)"@srcType";
+    args[9] = (lo_arg*)"f";
+    args[10] = (lo_arg*)"@srcMin";
+    args[11] = (lo_arg*)&zerof;
+    args[12] = (lo_arg*)&one;
+    args[13] = (lo_arg*)"@srcMax";
+    args[14] = (lo_arg*)&one;
+    args[15] = (lo_arg*)&two;
 
     if (mapper_msg_parse_params(&msg, "/connected",
-                                "sssssssiiii", 11, args))
+                                "sssssssisssfisii", 16, args))
     {
-        printf("5: Error, parsing failed.\n");
-        return 1;
+        eprintf("5: Error, parsing failed.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_connection_params(db, "/testdb.1/out1",
@@ -132,8 +195,9 @@ int main()
     if (mapper_msg_parse_params(&msg, "/linked",
                                 "", 0, args))
     {
-        printf("6: Error, parsing failed (on no args!)\n");
-        return 1;
+        eprintf("6: Error, parsing failed (on no args!)\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_add_or_update_link_params(db, "/testdb.1", "/testdb__.2", &msg);
@@ -144,109 +208,121 @@ int main()
 
     /*********/
 
-    trace("Dump:\n");
-    mapper_db_dump(db);
+    if (verbose) {
+        eprintf("Dump:\n");
+        mapper_db_dump(db);
+    }
 
     /*********/
 
-    printf("\n--- Devices ---\n");
+    eprintf("\n--- Devices ---\n");
 
-    printf("\nWalk the whole database:\n");
+    eprintf("\nWalk the whole database:\n");
     mapper_db_device *pdev = mapper_db_get_all_devices(db);
     int count=0;
     if (!pdev) {
-        printf("mapper_db_get_all_devices() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_all_devices() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pdev) {
-        printf("mapper_db_get_all_devices() returned something "
+        eprintf("mapper_db_get_all_devices() returned something "
                "which pointed to 0.\n");
-        return 1;
+        result = 1;
+        goto done;
     }
 
     while (pdev) {
         count ++;
-        printf("  name=%s, host=%s, port=%d\n",
+        eprintf("  name=%s, host=%s, port=%d\n",
                (*pdev)->name, (*pdev)->host, (*pdev)->port);
         pdev = mapper_db_device_next(pdev);
     }
 
     if (count != 4) {
-        printf("Expected 4 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 4 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind /testdb.3:\n");
+    eprintf("\nFind /testdb.3:\n");
 
     mapper_db_device dev = mapper_db_get_device_by_name(db, "/testdb.3");
     if (!dev) {
-        printf("Not found.\n");
-        return 1;
+        eprintf("Not found.\n");
+        result = 1;
+        goto done;
     }
 
-    printf("  name=%s, host=%s, port=%d\n",
-           dev->name, dev->host, dev->port);
+    eprintf("  name=%s, host=%s, port=%d\n",
+            dev->name, dev->host, dev->port);
 
     /*********/
 
-    printf("\nFind /dummy:\n");
+    eprintf("\nFind /dummy:\n");
 
     dev = mapper_db_get_device_by_name(db, "/dummy");
     if (dev) {
-        printf("unexpected found /dummy: %p\n", dev);
-        return 1;
+        eprintf("unexpected found /dummy: %p\n", dev);
+        result = 1;
+        goto done;
     }
-    printf("  not found, good.\n");
+    eprintf("  not found, good.\n");
 
     /*********/
 
-    printf("\nFind matching '__':\n");
+    eprintf("\nFind matching '__':\n");
 
     pdev = mapper_db_match_devices_by_name(db, "__");
 
     count=0;
     if (!pdev) {
-        printf("mapper_db_match_device_by_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_device_by_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pdev) {
-        printf("mapper_db_match_device_by_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_match_device_by_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pdev) {
         count ++;
-        printf("  name=%s, host=%s, port=%d\n",
-               (*pdev)->name, (*pdev)->host, (*pdev)->port);
+        eprintf("  name=%s, host=%s, port=%d\n",
+                (*pdev)->name, (*pdev)->host, (*pdev)->port);
         pdev = mapper_db_device_next(pdev);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\n--- Signals ---\n");
+    eprintf("\n--- Signals ---\n");
 
-    printf("\nFind all inputs for device '/testdb.1':\n");
+    eprintf("\nFind all inputs for device '/testdb.1':\n");
 
     mapper_db_signal *psig =
         mapper_db_get_inputs_by_device_name(db, "/testdb.1");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_get_inputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_inputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_get_inputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_inputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -256,25 +332,28 @@ int main()
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind all outputs for device '/testdb.1':\n");
+    eprintf("\nFind all outputs for device '/testdb.1':\n");
 
     psig = mapper_db_get_outputs_by_device_name(db, "/testdb.1");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_get_outputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_outputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_get_outputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_outputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -284,41 +363,45 @@ int main()
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind all inputs for device '/testdb__.2':\n");
+    eprintf("\nFind all inputs for device '/testdb__.2':\n");
 
     psig = mapper_db_get_inputs_by_device_name(db, "/testdb__.2");
 
     count=0;
     if (psig) {
-        printf("mapper_db_get_inputs_by_device_name() "
-               "incorrectly found something.\n");
+        eprintf("mapper_db_get_inputs_by_device_name() "
+                "incorrectly found something.\n");
         printsignal(*psig);
-        return 1;
+        result = 1;
+        goto done;
     }
     else
-        printf("  correctly returned 0.\n");
+        eprintf("  correctly returned 0.\n");
 
     /*********/
 
-    printf("\nFind all outputs for device '/testdb__.2':\n");
+    eprintf("\nFind all outputs for device '/testdb__.2':\n");
 
     psig = mapper_db_get_outputs_by_device_name(db, "/testdb__.2");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_get_outputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_outputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_get_outputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_outputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -328,25 +411,28 @@ int main()
     }
 
     if (count != 1) {
-        printf("Expected 1 record, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 1 record, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind matching input 'in' for device '/testdb.1':\n");
+    eprintf("\nFind matching input 'in' for device '/testdb.1':\n");
 
     psig = mapper_db_match_inputs_by_device_name(db, "/testdb.1", "in");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_match_inputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_inputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_match_inputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_match_inputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -356,25 +442,28 @@ int main()
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind matching output 'out' for device '/testdb.1':\n");
+    eprintf("\nFind matching output 'out' for device '/testdb.1':\n");
 
     psig = mapper_db_match_outputs_by_device_name(db, "/testdb.1", "out");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_match_outputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_outputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_match_outputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_match_outputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -384,25 +473,28 @@ int main()
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind matching output 'out' for device '/testdb__.2':\n");
+    eprintf("\nFind matching output 'out' for device '/testdb__.2':\n");
 
     psig = mapper_db_match_outputs_by_device_name(db, "/testdb__.2", "out");
 
     count=0;
     if (!psig) {
-        printf("mapper_db_match_outputs_by_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_outputs_by_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*psig) {
-        printf("mapper_db_match_outputs_by_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_match_outputs_by_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (psig) {
@@ -412,107 +504,117 @@ int main()
     }
 
     if (count != 1) {
-        printf("Expected 1 record, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 1 record, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\n--- connections ---\n");
+    eprintf("\n--- connections ---\n");
 
-    printf("\nFind connections with source 'out1':\n");
+    eprintf("\nFind connections with source 'out1':\n");
 
     mapper_db_connection* pcon =
         mapper_db_get_connections_by_src_signal_name(db, "out1");
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_src_signal_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_src_signal_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_src_signal_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_src_signal_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 3) {
-        printf("Expected 3 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 3 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind connections for device 'testdb.1', "
-           "source 'out1':\n");
+    eprintf("\nFind connections for device 'testdb.1', "
+            "source 'out1':\n");
 
     pcon = mapper_db_get_connections_by_src_device_and_signal_names(db, "testdb.1",
                                                                     "/out1");
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_src_device_and_signal_names() "
-               "returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_src_device_and_signal_names() "
+                "returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_src_device_and_signal_names() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_src_device_and_signal_names() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind connections with destination 'in2':\n");
+    eprintf("\nFind connections with destination 'in2':\n");
 
     pcon = mapper_db_get_connections_by_dest_signal_name(db, "in2");
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_dest_signal_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_dest_signal_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_dest_signal_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_dest_signal_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind connections for device 'testdb__.2', "
-           "destination 'in1':\n");
+    eprintf("\nFind connections for device 'testdb__.2', "
+            "destination 'in1':\n");
 
     pcon = mapper_db_get_connections_by_dest_device_and_signal_names(db,
                                                                      "testdb__.2",
@@ -520,65 +622,71 @@ int main()
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_dest_device_and_signal_names() "
-               "returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_dest_device_and_signal_names() "
+                "returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_dest_device_and_signal_names() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_dest_device_and_signal_names() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind connections for input device 'testdb__.2', signal 'out1',"
-           "\n                 and output device 'testdb.1', signal 'in1':\n");
+    eprintf("\nFind connections for input device 'testdb__.2', signal 'out1',"
+            "\n                 and output device 'testdb.1', signal 'in1':\n");
 
     pcon = mapper_db_get_connections_by_device_and_signal_names(
         db, "testdb__.2", "out1", "testdb.1", "in1");
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_device_and_signal_names() "
-               "returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_device_and_signal_names() "
+                "returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_device_and_signal_names() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_device_and_signal_names() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 1) {
-        printf("Expected 1 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 1 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind connections for input device 'testdb__.2', signals "
-           "matching 'out',"
-           "\n                 and output device 'testdb.1', all signals:\n");
+    eprintf("\nFind connections for input device 'testdb__.2', signals "
+            "matching 'out',"
+            "\n                 and output device 'testdb.1', all signals:\n");
 
     pcon = mapper_db_get_connections_by_signal_queries(db,
         mapper_db_match_outputs_by_device_name(db, "/testdb__.2", "out"),
@@ -586,178 +694,201 @@ int main()
 
     count=0;
     if (!pcon) {
-        printf("mapper_db_get_connections_by_signal_queries() "
-               "returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_signal_queries() "
+                "returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*pcon) {
-        printf("mapper_db_get_connections_by_signal_queries() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_connections_by_signal_queries() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (pcon) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*pcon)->src_name, (*pcon)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*pcon)->src_name, (*pcon)->dest_name);
         pcon = mapper_db_connection_next(pcon);
     }
 
     if (count != 1) {
-        printf("Expected 1 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 1 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\n--- Links ---\n");
+    eprintf("\n--- Links ---\n");
 
-    printf("\nFind matching links with source '/testdb__.2':\n");
+    eprintf("\nFind matching links with source '/testdb__.2':\n");
 
     mapper_db_link* plink =
         mapper_db_get_links_by_src_device_name(db, "/testdb__.2");
 
     count=0;
     if (!plink) {
-        printf("mapper_db_get_links_by_src_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*plink) {
-        printf("mapper_db_get_links_by_src_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (plink) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*plink)->src_name, (*plink)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*plink)->src_name, (*plink)->dest_name);
         plink = mapper_db_link_next(plink);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind matching links with destination '/testdb__.4':\n");
+    eprintf("\nFind matching links with destination '/testdb__.4':\n");
 
     plink = mapper_db_get_links_by_dest_device_name(db, "/testdb__.4");
 
     count=0;
     if (!plink) {
-        printf("mapper_db_get_links_by_dest_device_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_dest_device_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*plink) {
-        printf("mapper_db_get_links_by_dest_device_name() returned something "
-               "which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_dest_device_name() returned something "
+                "which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (plink) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*plink)->src_name, (*plink)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*plink)->src_name, (*plink)->dest_name);
         plink = mapper_db_link_next(plink);
     }
 
     if (count != 1) {
-        printf("Expected 1 record, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 1 record, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind links with source matching 'db' and "
-           "destination matching '__':\n");
+    eprintf("\nFind links with source matching 'db' and "
+            "destination matching '__':\n");
 
     pdev = mapper_db_match_devices_by_name(db, "db");
 
     if (!pdev) {
-        printf("mapper_db_match_device_by_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_device_by_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
 
     mapper_db_device_t **pdev2 = mapper_db_match_devices_by_name(db, "__");
 
     if (!pdev2) {
-        printf("mapper_db_match_device_by_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_device_by_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
 
     plink = mapper_db_get_links_by_src_dest_devices(db, pdev, pdev2);
 
     count=0;
     if (!plink) {
-        printf("mapper_db_get_links_by_src_dest_devices() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_dest_devices() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*plink) {
-        printf("mapper_db_get_links_by_src_dest_devices() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_dest_devices() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (plink) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*plink)->src_name, (*plink)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*plink)->src_name, (*plink)->dest_name);
         plink = mapper_db_link_next(plink);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
 
-    printf("\nFind any links with source matching '2':\n");
+    eprintf("\nFind any links with source matching '2':\n");
 
     pdev = mapper_db_match_devices_by_name(db, "2");
 
     if (!pdev) {
-        printf("mapper_db_match_device_by_name() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_match_device_by_name() returned 0.\n");
+        result = 1;
+        goto done;
     }
 
     pdev2 = mapper_db_get_all_devices(db);
 
     if (!pdev2) {
-        printf("mapper_db_get_all_devices() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_all_devices() returned 0.\n");
+        result = 1;
+        goto done;
     }
 
     plink = mapper_db_get_links_by_src_dest_devices(db, pdev, pdev2);
 
     count=0;
     if (!plink) {
-        printf("mapper_db_get_links_by_src_dest_devices() returned 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_dest_devices() returned 0.\n");
+        result = 1;
+        goto done;
     }
     if (!*plink) {
-        printf("mapper_db_get_links_by_src_dest_devices() "
-               "returned something which pointed to 0.\n");
-        return 1;
+        eprintf("mapper_db_get_links_by_src_dest_devices() "
+                "returned something which pointed to 0.\n");
+        result = 1;
+        goto done;
     }
 
     while (plink) {
         count ++;
-        printf("  source=%s, dest=%s\n",
-               (*plink)->src_name, (*plink)->dest_name);
+        eprintf("  source=%s, dest=%s\n",
+                (*plink)->src_name, (*plink)->dest_name);
         plink = mapper_db_link_next(plink);
     }
 
     if (count != 2) {
-        printf("Expected 2 records, but counted %d.\n", count);
-        return 1;
+        eprintf("Expected 2 records, but counted %d.\n", count);
+        result = 1;
+        goto done;
     }
 
     /*********/
-
-    printf("\nTest PASSED.\n");
-    return 0;
+done:
+    while (db->registered_devices)
+        mapper_db_remove_device_by_name(db, db->registered_devices->name);
+    if (!verbose)
+        printf("..................................................");
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
 }
diff --git a/test/testexpression.c b/test/testexpression.c
index 971d22b..6850b50 100644
--- a/test/testexpression.c
+++ b/test/testexpression.c
@@ -1,16 +1,26 @@
 
 #include "../src/mapper_internal.h"
-
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
+#include <string.h>
 #include <unistd.h>
+#include <signal.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
+
 mapper_device source = 0;
 mapper_device destination = 0;
 mapper_router router = 0;
@@ -25,13 +35,13 @@ int setup_source()
     source = mdev_new("testsend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=1;
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', 0, &mn, &mx);
 
-    printf("Output signal /outsig registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal /outsig registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
     return 0;
 
   error:
@@ -42,15 +52,15 @@ void cleanup_source()
 {
     if (source) {
         if (router) {
-            printf("Removing router.. ");
+            eprintf("Removing router.. ");
             fflush(stdout);
             mdev_remove_router(source, router);
-            printf("ok\n");
+            eprintf("ok\n");
         }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -59,7 +69,7 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("handler: Got %f\n", (*(float*)value));
+        eprintf("handler: Got %f\n", (*(float*)value));
     }
     received++;
 }
@@ -69,14 +79,14 @@ int setup_destination()
     destination = mdev_new("testrecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
     recvsig = mdev_add_input(destination, "/insig", 1, 'f', 0,
                              &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
     return 0;
 
   error:
@@ -86,21 +96,21 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
-int setup_router()
+int setup_connection()
 {
     mapper_monitor mon = mapper_monitor_new(source->admin, 0);
-    
+
     char src_name[1024], dest_name[1024];
     mapper_monitor_link(mon, mdev_name(source),
                         mdev_name(destination), 0, 0);
-    
+
     msig_full_name(sendsig, src_name, 1024);
     msig_full_name(recvsig, dest_name, 1024);
     mapper_db_connection_t props;
@@ -109,14 +119,14 @@ int setup_router()
     mapper_monitor_connect(mon, src_name, dest_name, &props,
                            CONNECTION_MODE | CONNECTION_EXPRESSION);
 
-    mapper_monitor_free(mon);
-
-    int i = 0;
-    while (i++ < 10) {
-        mdev_poll(source, 0);
-        mdev_poll(destination, 0);
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
     }
 
+    mapper_monitor_free(mon);
+
     return 0;
 }
 
@@ -131,38 +141,77 @@ void wait_ready()
 
 void loop()
 {
-    printf("Polling device..\n");
-    int i;
-    for (i = 0; i < 10; i++) {
+    eprintf("Polling device..\n");
+    int i = 0;
+    while ((!terminate || i < 50) && !done) {
         mdev_poll(source, 0);
-        printf("Updating signal %s to %f\n",
-               sendsig->props.name, (i * 1.0f));
+        eprintf("Updating signal %s to %f\n",
+                sendsig->props.name, (i * 1.0f));
         msig_update_float(sendsig, (i * 1.0f));
         sent++;
-        mdev_poll(destination, 250);
+        mdev_poll(destination, 100);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
-int main()
+void ctrlc(int sig)
 {
-    int result = 0;
+    done = 1;
+}
+
+int main(int argc, char **argv)
+{
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testexpression.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_ready();
 
-    if (setup_router()) {
-        printf("Error initializing router.\n");
+    if (autoconnect && setup_connection()) {
+        eprintf("Error setting connection.\n");
         result = 1;
         goto done;
     }
@@ -170,9 +219,9 @@ int main()
     loop();
 
     if (sent != received) {
-        printf("Not all sent messages were received.\n");
-        printf("Updated value %d time%s, but received %d of them.\n",
-               sent, sent == 1 ? "" : "s", received);
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
         result = 1;
     }
 
diff --git a/test/testinstance.c b/test/testinstance.c
index 374b94d..2de186b 100644
--- a/test/testinstance.c
+++ b/test/testinstance.c
@@ -4,22 +4,29 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int iterations = 100;
+int autoconnect = 1;
+
 int automate = 1;
 
 mapper_device source = 0;
 mapper_device destination = 0;
 mapper_signal sendsig = 0;
 mapper_signal recvsig = 0;
-int sendinst[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-int nextid = 1;
 
 int sent = 0;
 int received = 0;
@@ -31,17 +38,17 @@ int setup_source()
     source = mdev_new("testInstanceSend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=10;
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', 0, &mn, &mx);
     if (!sendsig)
         goto error;
-    msig_reserve_instances(sendsig, 9);
+    msig_reserve_instances(sendsig, 9, 0, 0);
 
-    printf("Output signal registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
 
     return 0;
 
@@ -52,10 +59,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -64,13 +71,13 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination %s instance %ld got %f\n",
-               props->name, (long)instance_id, (*(float*)value));
+        eprintf("--> destination %s instance %ld got %f\n",
+                props->name, (long)instance_id, (*(float*)value));
         received++;
     }
     else {
-        printf("--> destination %s instance %ld got NULL\n",
-               props->name, (long)instance_id);
+        eprintf("--> destination %s instance %ld got NULL\n",
+                props->name, (long)instance_id);
         msig_release_instance(sig, instance_id, MAPPER_NOW);
     }
 }
@@ -80,11 +87,11 @@ void more_handler(mapper_signal sig, mapper_db_signal props,
                   mapper_timetag_t *timetag)
 {
     if (event & IN_OVERFLOW) {
-        printf("OVERFLOW!! ALLOCATING ANOTHER INSTANCE.\n");
-        msig_reserve_instances(sig, 1);
+        eprintf("OVERFLOW!! ALLOCATING ANOTHER INSTANCE.\n");
+        msig_reserve_instances(sig, 1, 0, 0);
     }
     else if (event & IN_UPSTREAM_RELEASE) {
-        printf("UPSTREAM RELEASE!! RELEASING LOCAL INSTANCE.\n");
+        eprintf("UPSTREAM RELEASE!! RELEASING LOCAL INSTANCE.\n");
         msig_release_instance(sig, instance_id, MAPPER_NOW);
     }
 }
@@ -95,7 +102,7 @@ int setup_destination()
     destination = mdev_new("testInstanceRecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0;//, mx=1;
 
@@ -103,10 +110,16 @@ int setup_destination()
                              0, &mn, 0, insig_handler, 0);
     if (!recvsig)
         goto error;
-    msig_reserve_instances(recvsig, 4);
 
-    printf("Input signal registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    // remove the default instance "0"
+    msig_remove_instance(recvsig, 0);
+    int i;
+    for (i=100; i<104; i++) {
+        msig_reserve_instances(recvsig, 1, &i, 0);
+    }
+
+    eprintf("Input signal registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
 
     return 0;
 
@@ -117,10 +130,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -137,96 +150,70 @@ void wait_local_devices()
 void print_instance_ids(mapper_signal sig)
 {
     int i, n = msig_num_active_instances(sig);
-    printf("active %s: [", sig->props.name);
+    eprintf("active %s: [", sig->props.name);
     for (i=0; i<n; i++)
-        printf(" %ld", (long)msig_active_instance_id(sig, i));
-    printf(" ]   ");
+        eprintf(" %ld", (long)msig_active_instance_id(sig, i));
+    eprintf(" ]   ");
 }
 
 void connect_signals()
 {
-    char source_name[1024], destination_name[1024];
-
-    printf("%s\n", mdev_name(source));
-    printf("%s\n", mdev_name(destination));
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
 
-    lo_address a = lo_address_new_from_url("osc.udp://224.0.1.3:7570");
-    lo_address_set_ttl(a, 1);
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
 
-    lo_send(a, "/link", "ss", mdev_name(source), mdev_name(destination));
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
 
-    int j = 50;
-    while (j >= 0) {
-        mdev_poll(source, 10);
-        mdev_poll(destination, 10);
-        j--;
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
     }
 
-    msig_full_name(sendsig, source_name, 1024);
-    msig_full_name(recvsig, destination_name, 1024);
-
-    lo_send(a, "/connect", "ss", source_name, destination_name);
-
-    lo_address_free(a);
+    mapper_monitor_free(mon);
 }
 
-void loop(int iterations)
+void loop()
 {
-    printf("-------------------- GO ! --------------------\n");
+    eprintf("-------------------- GO ! --------------------\n");
     int i = 0, j = 0;
     float value = 0;
 
-    while (i >= 0 && iterations-- >= 0 && !done) {
+    while (i < iterations && !done) {
         // here we should create, update and destroy some instances
         switch (rand() % 5) {
             case 0:
-                // try to create a new instance
-                for (j = 0; j < 10; j++) {
-                    if (!sendinst[j]) {
-                        sendinst[j] = nextid++;
-                        printf("--> Created new sender instance: %d\n",
-                               sendinst[j]);
-                        break;
-                    }
-                }
-                break;
-            case 1:
                 // try to destroy an instance
                 j = rand() % 10;
-                if (sendinst[j]) {
-                    printf("--> Retiring sender instance %ld\n",
-                           (long)sendinst[j]);
-                    msig_release_instance(sendsig,
-                                          sendinst[j],
-                                          MAPPER_NOW);
-                    sendinst[j] = 0;
-                    break;
-                }
+                eprintf("--> Retiring sender instance %i\n", j);
+                msig_release_instance(sendsig, j, MAPPER_NOW);
                 break;
             default:
                 j = rand() % 10;
-                if (sendinst[j]) {
-                    // try to update an instance
-                    value = (rand() % 10) * 1.0f;
-                    msig_update_instance(sendsig,
-                                         sendinst[j],
-                                         &value, 0,
-                                         MAPPER_NOW);
-                    printf("--> sender instance %d updated to %f\n",
-                           sendinst[j], value);
-                    sent++;
-                }
+                // try to update an instance
+                value = (rand() % 10) * 1.0f;
+                msig_update_instance(sendsig, j, &value, 0, MAPPER_NOW);
+                eprintf("--> sender instance %d updated to %f\n", j, value);
+                sent++;
                 break;
         }
 
         print_instance_ids(sendsig);
         print_instance_ids(recvsig);
-        printf("\n");
+        eprintf("\n");
 
         mdev_poll(destination, 100);
         mdev_poll(source, 0);
         i++;
-        //usleep(1 * 1000);
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
@@ -235,21 +222,42 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
-    int stats[6], i;
+    int i, j, result = 0, stats[6];
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testinstance.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
@@ -259,42 +267,49 @@ int main()
     if (automate)
         connect_signals();
 
-    printf("\n**********************************************\n");
-    printf("************ NO INSTANCE STEALING ************\n");
-    loop(100);
+    eprintf("\n**********************************************\n");
+    eprintf("************ NO INSTANCE STEALING ************\n");
+    loop();
 
     stats[0] = sent;
     stats[1] = received;
 
     for (i=0; i<10; i++)
-        msig_release_instance(sendsig, sendinst[i], MAPPER_NOW);
+        msig_release_instance(sendsig, i, MAPPER_NOW);
     sent = received = 0;
 
     msig_set_instance_allocation_mode(recvsig, IN_STEAL_OLDEST);
-    printf("\n**********************************************\n");
-    printf("*************** IN_STEAL_OLDEST **************\n");
-    loop(100);
+    eprintf("\n**********************************************\n");
+    eprintf("************ STEAL OLDEST INSTANCE ***********\n");
+    if (!verbose)
+        printf("\n");
+    loop();
 
     stats[2] = sent;
     stats[3] = received;
     sent = received = 0;
 
     for (i=0; i<10; i++)
-        msig_release_instance(sendsig, sendinst[i], MAPPER_NOW);
+        msig_release_instance(sendsig, i, MAPPER_NOW);
     sent = received = 0;
 
     msig_set_instance_event_callback(recvsig, more_handler,
                                      IN_OVERFLOW | IN_UPSTREAM_RELEASE, 0);
-    printf("\n**********************************************\n");
-    printf("*********** CALLBACK > ADD INSTANCE **********\n");
-    loop(100);
+    eprintf("\n**********************************************\n");
+    eprintf("*********** CALLBACK -> ADD INSTANCE *********\n");
+    if (!verbose)
+        printf("\n");
+    loop();
 
     stats[4] = sent;
     stats[5] = received;
 
-    printf("NO STEALING: sent %i updates, received %i updates (mismatch is OK).\n", stats[0], stats[1]);
-    printf("STEAL OLDEST: sent %i updates, received %i updates (mismatch is OK).\n", stats[2], stats[3]);
-    printf("ADD INSTANCE: sent %i updates, received %i updates.\n", stats[4], stats[5]);
+    eprintf("NO STEALING: sent %i updates, received %i updates (mismatch is OK).\n",
+            stats[0], stats[1]);
+    eprintf("STEAL OLDEST: sent %i updates, received %i updates (mismatch is OK).\n",
+            stats[2], stats[3]);
+    eprintf("ADD INSTANCE: sent %i updates, received %i updates.\n",
+            stats[4], stats[5]);
 
     result = (stats[4] != stats[5]);
 
diff --git a/test/testlinear.c b/test/testlinear.c
index 304083a..d8c06d3 100644
--- a/test/testlinear.c
+++ b/test/testlinear.c
@@ -3,16 +3,26 @@
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
 #include <unistd.h>
+#include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
+
 mapper_device source = 0;
 mapper_device destination = 0;
-mapper_router router = 0;
 mapper_signal sendsig = 0;
 mapper_signal recvsig = 0;
 
@@ -24,14 +34,14 @@ int setup_source()
     source = mdev_new("testsend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=1;
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', 0, &mn, &mx);
 
-    printf("Output signal /outsig registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal /outsig registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
     return 0;
 
   error:
@@ -41,16 +51,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        if (router) {
-            printf("Removing router.. ");
-            fflush(stdout);
-            mdev_remove_router(source, router);
-            printf("ok\n");
-        }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -59,7 +63,7 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("handler: Got %f\n", (*(float*)value));
+        eprintf("handler: Got %f\n", (*(float*)value));
     }
     received++;
 }
@@ -69,15 +73,15 @@ int setup_destination()
     destination = mdev_new("testrecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
     recvsig = mdev_add_input(destination, "/insig", 1, 'f', 0,
                              &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
     return 0;
 
   error:
@@ -87,45 +91,51 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
-int setup_router()
+int setup_connection()
 {
-    const char *host = "localhost";
-    router = mapper_router_new(source, host, destination->admin->port,
-                               mdev_name(destination), 0);
-    mdev_add_router(source, router);
-    printf("Router to %s:%d added.\n", host, destination->admin->port);
-
-    char signame_in[1024];
-    if (!msig_full_name(recvsig, signame_in, 1024)) {
-        printf("Could not get destination signal name.\n");
-        return 1;
+    float src_min = 0., src_max = 1., dest_min = -10., dest_max = 10.;
+
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
+
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+
+    mapper_db_connection_t props;
+    props.src_min = &src_min;
+    props.src_max = &src_max;
+    props.dest_min = &dest_min;
+    props.dest_max = &dest_max;
+    props.range_known = CONNECTION_RANGE_KNOWN;
+    props.src_length = 1;
+    props.dest_length = 1;
+    props.src_type = 'f';
+    props.dest_type = 'f';
+    props.mode = MO_LINEAR;
+
+    mapper_monitor_connect(mon, src_name, dest_name, &props,
+                           CONNECTION_RANGE_KNOWN | CONNECTION_MODE |
+                           CONNECTION_SRC_TYPE | CONNECTION_SRC_LENGTH |
+                           CONNECTION_DEST_TYPE | CONNECTION_DEST_LENGTH);
+
+    // poll devices for a bit to allow time for connection
+    int i = 0;
+    while (i++ < 10) {
+        mdev_poll(destination, 10);
+        mdev_poll(source, 10);
     }
 
-    char signame_out[1024];
-    if (!msig_full_name(sendsig, signame_out, 1024)) {
-        printf("Could not get source signal name.\n");
-        return 1;
-    }
-
-    printf("Connecting signal %s -> %s\n", signame_out, signame_in);
-    mapper_connection c = mapper_router_add_connection(router, sendsig,
-                                                       recvsig->props.name,
-                                                       'f', 1);
-    mapper_connection_range_t range;
-    range.src_min = 0;
-    range.src_max = 1;
-    range.dest_min = -10;
-    range.dest_max = 10;
-    range.known = CONNECTION_RANGE_KNOWN;
-    
-    mapper_connection_set_linear_range(c, &range);
+    mapper_monitor_free(mon);
 
     return 0;
 }
@@ -141,39 +151,77 @@ void wait_ready()
 
 void loop()
 {
-    printf("Polling device..\n");
-    int i;
-    for (i = 0; i < 10; i++) {
+    eprintf("Polling device..\n");
+    int i = 0;
+    while ((!terminate || i < 50) && !done) {
         mdev_poll(source, 0);
-        printf("Updating signal %s to %f\n",
+        eprintf("Updating signal %s to %f\n",
                sendsig->props.name, (i * 1.0f));
         msig_update_float(sendsig, (i * 1.0f));
         sent++;
-        usleep(250 * 1000);
-        mdev_poll(destination, 0);
+        mdev_poll(destination, 100);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
-int main()
+void ctrlc(int signal)
+{
+    done = 1;
+}
+
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testlinear.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_ready();
 
-    if (setup_router()) {
-        printf("Error initializing router.\n");
+    if (autoconnect && setup_connection()) {
+        eprintf("Error initializing router.\n");
         result = 1;
         goto done;
     }
@@ -181,9 +229,9 @@ int main()
     loop();
 
     if (sent != received) {
-        printf("Not all sent messages were received.\n");
-        printf("Updated value %d time%s, but received %d of them.\n",
-               sent, sent == 1 ? "" : "s", received);
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
         result = 1;
     }
 
diff --git a/test/testmany.c b/test/testmany.c
index 41554d7..3ed6a33 100644
--- a/test/testmany.c
+++ b/test/testmany.c
@@ -8,7 +8,6 @@
 #include <sys/time.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
 
@@ -16,17 +15,19 @@
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int num_sources = 5;
-int num_dests = 5;
-int max_num_signals = 4;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
 
-mapper_device *source_device_list = 0;
-mapper_device *dest_device_list = 0;
-int *num_signals = 0;
+int verbose = 1;
+int terminate = 0;
+int done = 0;
 
+int num_devices = 5;
+mapper_device *device_list = 0;
 int sent = 0;
 int received = 0;
-int done = 0;
 
 /*! Internal function to get the current time. */
 static double get_current_time()
@@ -36,270 +37,156 @@ static double get_current_time()
     return (double) tv.tv_sec + tv.tv_usec / 1000000.0; 
 }
 
-int setup_sources() {
-
-	char str[20];
-	int number;
-
-	for ( int i=0; i<num_sources; i++ ) {
-		
-		source_device_list[i] = mdev_new("source", 0, 0);
-		number = num_signals[i+num_dests];
-
-		for ( int j=0; j<number; j++ ) {
-
-			sprintf( str, "/outsig%d", j );
-            float mn=0, mx=1;
-			mdev_add_output(source_device_list[i], str, 1, 'f',
-                            0, &mn, &mx);
-
-		}
-
-		if ( !source_device_list[i] ) {
-
-			goto error;
-
-		}
-
-	}
-
-    return 0;
-
-  error:
-    return 1;
-
-}
-
-void cleanup_sources() {
-	
-	mapper_device source;
-
-	for ( int i=0; i<num_sources; i++ ) {
-
-		source = source_device_list[i];
-
-		if (source) {
-			if (source->routers) {
-				printf("Removing router.. ");
-				fflush(stdout);
-				mdev_remove_router(source, source->routers);
-				printf("ok\n");
-			}
-			printf("Freeing source.. ");
-			fflush(stdout);
-			mdev_free(source);
-			printf("ok\n");
-		}
-	}
-
-}
-
 void insig_handler(mapper_signal sig, mapper_db_signal props,
                    int instance_id, void *value, int count,
                    mapper_timetag_t timetag)
 {
     if (value) {
-        printf("handler: Got %f\n", (*(float*)value));
+        eprintf("handler: Got %f\n", (*(float*)value));
     }
     received++;
-
 }
 
-int setup_destinations() {
-
+int setup_devices() {
 	char str[20];
-	int number;
 	float mn=0, mx=1;
 
-	for ( int i=0; i<num_dests; i++ ) {
-		
-		dest_device_list[i] = mdev_new("dest", 0, 0);
-		number = num_signals[i];
-
-		for ( int j=0; j<number; j++ ) {
-
-			sprintf( str, "/insig%d", j );
-			mdev_add_input(dest_device_list[i], str, 1, 'f',
-                           0, &mn, &mx, 0, 0);
-
-		}
-
-		if ( !dest_device_list[i] ) {
-
+	for (int i = 0; i < num_devices; i++) {
+		device_list[i] = mdev_new("device", 0, 0);
+        if (!device_list[i])
 			goto error;
 
+        // give each device 10 inputs and 10 outputs
+		for (int j = 0; j < 10; j++) {
+			sprintf(str, "/sig%d", j);
+			mdev_add_input(device_list[i], str, 1, 'f', 0, &mn, &mx, 0, 0);
+            mdev_add_output(device_list[i], str, 1, 'f', 0, &mn, &mx);
 		}
-
 	}
-
     return 0;
 
   error:
     return 1;
-
 }
 
-void cleanup_destinations() {
-	
+void cleanup_devices() {
 	mapper_device dest;
 
-	for ( int i=0; i<num_dests; i++ ) {
-
-		dest = dest_device_list[i];
+    eprintf("Freeing devices");
+	for (int i = 0; i < num_devices; i++) {
+		dest = device_list[i];
 
-		if ( dest ) {
-			if ( dest->routers ) {
-				printf("Removing router.. ");
-				fflush(stdout);
-				mdev_remove_router(dest, dest->routers);
-				printf("ok\n");
-			}
-			printf("Freeing dests.. ");
-			fflush(stdout);
-			mdev_free( dest );
-			printf("ok\n");
+		if (dest) {
+			mdev_free(dest);
+			eprintf(".");
 		}
 	}
-
+    eprintf("\n");
 }
 
 void wait_local_devices(int *cancel) {
-
-	int keep_waiting = 1;
+	int i, j = 0, keep_waiting = 1;
 
 	while ( keep_waiting && !*cancel ) {
-
 		keep_waiting = 0;
 
-		for ( int i=0; i<num_sources; i++ ) {
-
-			mdev_poll( source_device_list[i], 0 );
-			if ( !mdev_ready(source_device_list[i]) ) {
-
+		for (i = 0; i < num_devices; i++) {
+			mdev_poll(device_list[i], 50);
+			if (!mdev_ready(device_list[i])) {
 				keep_waiting = 1;
-
 			}
-
+            printf(".");
+            fflush(stdout);
+            if (j++ >= 50) {
+                while (--j)
+                    printf("\b \b");
+            }
 		}
-
-		for ( int i=0; i<num_dests; i++ ) {
-
-			mdev_poll( dest_device_list[i], 0 );
-			if ( !mdev_ready(dest_device_list[i]) ) {
-
-				keep_waiting = 1;
-
-			}
-
-		}
-
 	}
-
-    //mapper_db_dump();
-
+    eprintf("\nRegistered devices:\n");
+    for ( i=0; i<num_devices; i++)
+        eprintf("  %s\n", mdev_name(device_list[i]));
 }
 
 void loop() {
-
-    printf("-------------------- GO ! --------------------\n");
+    eprintf("-------------------- GO ! --------------------\n");
     int i = 0;
 
-    while ( i >= 0 && !done ) {
-
-		for ( int i=0; i<num_sources; i++ ) {
-
-			mdev_poll( source_device_list[i], 0 );
-
-		}
-		for ( int i=0; i<num_dests; i++ ) {
-
-			mdev_poll( dest_device_list[i], 0 );
-
+    while (i >= 0 && !done) {
+		for (int i = 0; i < num_devices; i++) {
+			mdev_poll(device_list[i], 0);
 		}
 
         usleep(50 * 1000);
-
         i++;
-
     }
-
 }
 
 void ctrlc(int sig) {
-
     done = 1;
-
 }
 
 int main(int argc, char *argv[])
 {
     double now = get_current_time();
-    int result = 0;
-    int do_loop = 1;
-
-    if (argc > 1) {
-        if (strcmp(argv[1], "-h")==0
-            || strcmp(argv[1], "--help")==0)
-        {
-            printf("Usage: testmany [num_sources=5] [num_dests=5] "
-                   "[max_num_signals=4] [loop=1]\n");
-            exit(0);
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testlinear.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help, "
+                               "--devices number of devices\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    case '-':
+                        if (strcmp(argv[i], "--devices")==0 && argc>i+1) {
+                            i++;
+                            num_devices = atoi(argv[i]);
+                            j = 1;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+            }
         }
-        else
-            num_sources = atoi(argv[1]);
     }
 
-    if (argc > 2)
-        num_dests = atoi(argv[2]);
-
-    if (argc > 3)
-        max_num_signals = atoi(argv[3]);
-
-    if (argc > 4)
-        do_loop = atoi(argv[4]);
-
-    source_device_list = (mapper_device*)malloc(
-        sizeof(mapper_device)*num_sources);
-
-    dest_device_list = (mapper_device*)malloc(
-        sizeof(mapper_device)*num_dests);
-
-    num_signals = (int*)malloc(sizeof(int)*(num_sources + num_dests));
+    device_list = (mapper_device*)malloc(sizeof(mapper_device)*num_devices);
 
     signal(SIGINT, ctrlc);
 	srand( time(NULL) );
 
-	for (int i=0; i<num_sources+num_dests; i++) {
-
-		num_signals[i] = (rand() % max_num_signals) + 1;
-
-	}
-
-    if (setup_sources()) {
-        printf("Error initializing sources.\n");
-        result = 1;
-        goto done;
-    }
-    if (setup_destinations()) {
-        printf("Error initializing destinations.\n");
+    if (setup_devices()) {
+        eprintf("Error initializing devices.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices(&done);
     now = get_current_time() - now;
-    printf("Allocated %d devices in %f seconds.\n", num_sources + num_dests, now);
+    eprintf("Allocated %d devices in %f seconds.\n", num_devices, now);
 
-    if (do_loop)
+    if (!terminate)
         loop();
 
   done:
-    cleanup_destinations();
-    cleanup_sources();
-
-    free(source_device_list);
-    free(dest_device_list);
-    free(num_signals);
+    cleanup_devices();
 
+    free(device_list);
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testmonitor.c b/test/testmonitor.c
index 4f1b7e9..286f7f5 100644
--- a/test/testmonitor.c
+++ b/test/testmonitor.c
@@ -16,12 +16,32 @@
 mapper_monitor mon = 0;
 mapper_db db = 0;
 
-int port = 9000;
+int verbose = 1;
+int terminate = 0;
 int done = 0;
 int update = 0;
 
 const int polltime_ms = 100;
 
+const char *mode_strings[] =
+{
+    "undefined",
+    "bypass",
+    "linear",
+    "expression",
+    "calibrate",
+    "reverse"
+};
+
+const char *bound_strings[] =
+{
+    "none",
+    "mute",
+    "clamp",
+    "fold",
+    "wrap"
+};
+
 void dbpause()
 {
     // Don't pause normally, but this is left here to be easily
@@ -30,6 +50,42 @@ void dbpause()
     // sleep(1);
 }
 
+void printdevice(mapper_db_device dev)
+{
+    printf("  %s", dev->name);
+
+    int i=0;
+    const char *key;
+    char type;
+    const void *val;
+    int length;
+    while(!mapper_db_device_property_index(dev, i++, &key, &type,
+                                           &val, &length))
+    {
+        die_unless(val!=0, "returned zero value\n");
+
+        // already printed this
+        if (strcmp(key, "name")==0)
+            continue;
+        if (strcmp(key, "synced")==0) {
+            // check current time
+            mapper_timetag_t now;
+            mapper_monitor_now(mon, &now);
+            mapper_timetag_t *tt = (mapper_timetag_t *)val;
+            if (tt->sec == 0)
+                printf(", seconds_since_sync=unknown");
+            else
+                printf(", seconds_since_sync=%f",
+                       mapper_timetag_difference(now, *tt));
+        }
+        else if (length) {
+            printf(", %s=", key);
+            mapper_prop_pp(type, length, val);
+        }
+    }
+    printf("\n");
+}
+
 void printsignal(mapper_db_signal sig)
 {
     printf("  %s name=%s%s",
@@ -38,10 +94,11 @@ void printsignal(mapper_db_signal sig)
 
     int i=0;
     const char *key;
-    lo_type type;
-    const lo_arg *val;
-    while(!mapper_db_signal_property_index(
-              sig, i++, &key, &type, &val))
+    char type;
+    const void *val;
+    int length;
+    while(!mapper_db_signal_property_index(sig, i++, &key, &type,
+                                           &val, &length))
     {
         die_unless(val!=0, "returned zero value\n");
 
@@ -51,8 +108,69 @@ void printsignal(mapper_db_signal sig)
             || strcmp(key, "direction")==0)
             continue;
 
-        printf(", %s=", key);
-        lo_arg_pp(type, (lo_arg*)val);
+        if (length) {
+            printf(", %s=", key);
+            mapper_prop_pp(type, length, val);
+        }
+    }
+    printf("\n");
+}
+
+void printlink(mapper_db_link link)
+{
+    printf("  %s -> %s", link->src_name, link->dest_name);
+
+    int i=0;
+    const char *key;
+    char type;
+    const void *val;
+    int length;
+    while(!mapper_db_link_property_index(link, i++, &key, &type,
+                                         &val, &length))
+    {
+        die_unless(val!=0, "returned zero value\n");
+
+        // already printed these
+        if (strcmp(key, "src_name")==0
+            || strcmp(key, "dest_name")==0)
+            continue;
+
+        if (length) {
+            printf(", %s=", key);
+            mapper_prop_pp(type, length, val);
+        }
+    }
+    printf("\n");
+}
+
+void printconnection(mapper_db_connection con)
+{
+    printf("  %s -> %s", con->src_name, con->dest_name);
+
+    int i=0;
+    const char *key;
+    char type;
+    const void *val;
+    int length;
+    while(!mapper_db_connection_property_index(con, i++, &key, &type,
+                                               &val, &length))
+    {
+        die_unless(val!=0, "returned zero value\n");
+
+        // already printed these
+        if (strcmp(key, "src_name")==0
+            || strcmp(key, "dest_name")==0)
+            continue;
+
+        if (length) {
+            printf(", %s=", key);
+            if (strcmp(key, "mode")==0)
+                printf("%s", mode_strings[*((int*)val)]);
+            else if (strncmp(key, "bound", 5)==0)
+                printf("%s", bound_strings[*((int*)val)]);
+            else
+                mapper_prop_pp(type, length, val);
+        }
     }
     printf("\n");
 }
@@ -60,7 +178,7 @@ void printsignal(mapper_db_signal sig)
 /*! Creation of a local dummy device. */
 int setup_monitor()
 {
-    mon = mapper_monitor_new(0, 1);
+    mon = mapper_monitor_new(0, AUTOREQ_ALL);
     if (!mon)
         goto error;
     printf("Monitor created.\n");
@@ -85,7 +203,8 @@ void cleanup_monitor()
 
 void loop()
 {
-    while (!done)
+    int i = 0;
+    while ((!terminate || i++ < 200) && !done)
     {
         mapper_monitor_poll(mon, 0);
         usleep(polltime_ms * 1000);
@@ -101,18 +220,7 @@ void loop()
         printf("Registered devices:\n");
         mapper_db_device *pdev = mapper_db_get_all_devices(db);
         while (pdev) {
-            int i=0;
-            const char *key;
-            lo_type type;
-            const lo_arg *val;
-            printf("  device");
-            while (!mapper_db_device_property_index(
-                       *pdev, i++, &key, &type, &val))
-            {
-                printf(", %s=", key);
-                lo_arg_pp(type, (lo_arg*)val);
-            }
-            printf("\n");
+            printdevice(*pdev);
             pdev = mapper_db_device_next(pdev);
         }
 
@@ -133,25 +241,23 @@ void loop()
 
         printf("------------------------------\n");
 
-        printf("Registered connections:\n");
-        mapper_db_connection *pcon = mapper_db_get_all_connections(db);
-        while (pcon) {
-            printf("  %s -> %s\n",
-                   (*pcon)->src_name, (*pcon)->dest_name);
-            pcon = mapper_db_connection_next(pcon);
-        }
-
-        printf("------------------------------\n");
-
         printf("Registered links:\n");
         mapper_db_link *plink = mapper_db_get_all_links(db);
         while (plink) {
-            printf("  %s -> %s\n",
-                   (*plink)->src_name, (*plink)->dest_name);
+            printlink(*plink);
             plink = mapper_db_link_next(plink);
         }
 
         printf("------------------------------\n");
+
+        printf("Registered connections:\n");
+        mapper_db_connection *pcon = mapper_db_get_all_connections(db);
+        while (pcon) {
+            printconnection(*pcon);
+            pcon = mapper_db_connection_next(pcon);
+        }
+
+        printf("------------------------------\n");
     }
 }
 
@@ -232,9 +338,35 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testmonitor.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
diff --git a/test/testparams.c b/test/testparams.c
index 7a255cd..1d13238 100644
--- a/test/testparams.c
+++ b/test/testparams.c
@@ -1,124 +1,146 @@
 
 #include <stdio.h>
 #include <string.h>
-
 #include <lo/lo_lowlevel.h>
-
 #include "../src/types_internal.h"
 #include "../src/mapper_internal.h"
 
-int main()
+int verbose = 1;
+
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int main(int argc, char **argv)
 {
     lo_arg *args[20], **a;
     mapper_message_t msg;
-    int port=1234, i;
+    int port=1234, src_length=4;
     float r[4] = {1.0, 2.0, -15.0, 25.0};
-    int result = 0;
-
-    printf("1: expected success\n");
-
-    args[0] = (lo_arg*)"@IP";
-    args[1] = (lo_arg*)"127.0.0.1";
-    args[2] = (lo_arg*)"@range";
-    args[3] = (lo_arg*)&r[0];
-    args[4] = (lo_arg*)&r[1];
-    args[5] = (lo_arg*)&r[2];
-    args[6] = (lo_arg*)&r[3];
-    args[7] = (lo_arg*)"@port";
-    args[8] = (lo_arg*)&port;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testdb.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
-    int rc = mapper_msg_parse_params(&msg, "/test", "sssffffsi", 9, args);
+    eprintf("1: expected success\n");
+
+    args[0]  = (lo_arg*)"@IP";
+    args[1]  = (lo_arg*)"127.0.0.1";
+    args[2]  = (lo_arg*)"@srcMin";
+    args[3]  = (lo_arg*)&r[0];
+    args[4]  = (lo_arg*)&r[1];
+    args[5]  = (lo_arg*)&r[2];
+    args[6]  = (lo_arg*)&r[3];
+    args[7]  = (lo_arg*)"@port";
+    args[8]  = (lo_arg*)&port;
+    args[9]  = (lo_arg*)"@srcType";
+    args[10] = (lo_arg*)"f";
+    args[11] = (lo_arg*)"@srcLength";
+    args[12] = (lo_arg*)&src_length;
+
+    int rc = mapper_msg_parse_params(&msg, "/test", "sssffffsiscsi", 13, args);
     if (rc) {
-        printf("1: Error parsing.\n");
-        return 1;
+        eprintf("1: Error parsing.\n");
+        result = 1;
+        goto done;
     }
 
     a = mapper_msg_get_param(&msg, AT_IP);
     if (!a) {
-        printf("1: Could not get @IP param.\n");
-        return 1;
+        eprintf("1: Could not get @IP param.\n");
+        result = 1;
+        goto done;
     }
     if (strcmp(&(*a)->s, "127.0.0.1")!=0)
         result |= 1;
-    printf("1: @IP = \"%s\" %s\n", &(*a)->s,
-           result ? "WRONG" : "(correct)");
-    if (result) return result;
+    eprintf("1: @IP = \"%s\" %s\n", &(*a)->s, result ? "WRONG" : "(correct)");
+    if (result)
+        goto done;
 
     a = mapper_msg_get_param(&msg, AT_PORT);
     if (!a) {
-        printf("1: Could not get @port param.\n");
-        return 1;
+        eprintf("1: Could not get @port param.\n");
+        result = 1;
+        goto done;
     }
     if ((*a)->i!=1234)
         result |= 1;
-    printf("1: @port = %d %s\n", (*a)->i,
-           result ? "WRONG" : "(correct)");
-    if (result) return result;
+    eprintf("1: @port = %d %s\n", (*a)->i, result ? "WRONG" : "(correct)");
+    if (result)
+        goto done;
 
-    a = mapper_msg_get_param(&msg, AT_RANGE);
+    a = mapper_msg_get_param(&msg, AT_SRC_MIN);
+    int count = mapper_msg_get_length(&msg, AT_SRC_MIN);
     if (!a) {
-        printf("1: Could not get @range param.\n");
-        return 1;
+        eprintf("1: Could not get @src_min param.\n");
+        result = 1;
+        goto done;
+    }
+    if (count != 4) {
+        eprintf("1: Wrong count returned for @scr_min param.\n");
     }
-    for (i=0; i<4; i++) {
-        if ((*a)->f!=r[i])
-            result |= 1;
-        printf("1: @range[%d] = %f %s\n", i, (*a++)->f,
-               result ? "WRONG" : "(correct)");
-        if (result) return result;
+    for (i=0; i<count; i++) {
+        if (a[i]->f!=r[i])
+            result = 1;
+        eprintf("1: @src_min[%d] = %f %s\n", i, a[i]->f,
+                result ? "WRONG" : "(correct)");
+        if (result)
+            goto done;
     }
 
     /*****/
 
-    printf("2: expected failure\n");
+    eprintf("2: deliberately malformed message\n");
 
     args[0] = (lo_arg*)"@port";
     args[1] = (lo_arg*)&port;
     args[2] = (lo_arg*)"@IP";
 
-    rc = mapper_msg_parse_params(&msg, "/test", "sss", 3, args);
-    if (!rc) {
-        printf("2: Error, unexpected parsing success.\n");
-        return 1;
+    rc = mapper_msg_parse_params(&msg, "/test", "sis", 3, args);
+    if (rc) {
+        eprintf("2: Error parsing.\n");
+        result = 1;
+        goto done;
     }
 
-    /*****/
-
-    printf("3: expected failure\n");
-
-    args[0] = (lo_arg*)"@port";
-    args[1] = (lo_arg*)&port;
-    args[2] = (lo_arg*)"@range";
-    args[3] = (lo_arg*)&r[0];
-    args[4] = (lo_arg*)&r[1];
-    args[5] = (lo_arg*)&r[2];
-
-    rc = mapper_msg_parse_params(&msg, "/test", "sssfff", 6, args);
-    if (!rc) {
-        printf("3: Error, unexpected parsing success.\n");
-        return 1;
+    a = mapper_msg_get_param(&msg, AT_PORT);
+    if (!a) {
+        eprintf("2: Could not get @port param.\n");
+        result = 1;
+        goto done;
     }
 
-    /*****/
-
-    printf("4: expected failure\n");
-
-    args[0] = (lo_arg*)"@port";
-    args[1] = (lo_arg*)&port;
-    args[2] = (lo_arg*)"@range";
-    args[3] = (lo_arg*)&r[0];
-    args[4] = (lo_arg*)&r[1];
-    args[5] = (lo_arg*)"blah";
-    args[6] = (lo_arg*)&r[2];
-
-    rc = mapper_msg_parse_params(&msg, "/test", "sssffsf", 7, args);
-    if (!rc) {
-        printf("4: Error, unexpected parsing success.\n");
-        return 1;
+    a = mapper_msg_get_param(&msg, AT_IP);
+    if (a) {
+        eprintf("2: Error, should not have been able to retrieve @IP param.\n");
+        result = 1;
+        goto done;
     }
 
     /*****/
-
-    printf("Test PASSED.\n");
-    return 0;
+done:
+    if (!verbose)
+        printf("..................................................");
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
 }
diff --git a/test/testparser.c b/test/testparser.c
index c98a9df..0df1143 100644
--- a/test/testparser.c
+++ b/test/testparser.c
@@ -5,6 +5,28 @@
 #include <stdlib.h>
 #include <time.h>
 #include <sys/time.h>
+#include <string.h>
+
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+char str[256];
+mapper_expr e;
+int result = 0;
+int iterations = 1000000;
+
+int src_int[] = {1, 2, 3}, dest_int[3];
+float src_float[] = {1.0f, 2.0f, 3.0f}, dest_float[3];
+double src_double[] = {1.0, 2.0, 3.0}, dest_double[3];
+double then, now;
+
+mapper_timetag_t tt_in = {0, 0}, tt_out = {0, 0};
+
+// signal_history structures
+mapper_signal_history_t inh, outh;
 
 /*! Internal function to get the current time. */
 static double get_current_time()
@@ -14,52 +36,262 @@ static double get_current_time()
     return (double) tv.tv_sec + tv.tv_usec / 1000000.0;
 }
 
-int main()
-{
-    const char str[] = "y=26*2/2+log10(pi)+2.*pow(2,1*(3+7*.1)*1.1+x{-6*2+12}[0])*3*4+cos(2.)";
-    int input_history_size, output_history_size;
-    mapper_expr e = mapper_expr_new_from_string(str, 1, 1, 1, &input_history_size, &output_history_size);
-    printf("Parsing %s\n", str);
-    if (!e) { printf("Test FAILED.\n"); return 1; }
-#ifdef DEBUG
-    printexpr("Parser returned: ", e);
-#endif
-    printf("\n");
-
-    float inp = 3.0, outp;
+/* Examples:
+ unit-delay indexing
+ vector length mismatches
+ multiplication by 0
+ addition/subtraction of 0
+ division by 0?
+ */
 
-    // create signal_history structures
-    mapper_signal_history_t inh, outh;
-    inh.type = 'f';
-    inh.size = 1;
-    inh.length = 1;
-    inh.value = &inp;
-    inh.timetag = calloc(1, sizeof(mapper_timetag_t));
+void setup_test(char in_type, int in_size, int in_length, void *in_value,
+                char out_type, int out_size, int out_length, void *out_value)
+{
+    inh.type = in_type;
+    inh.size = in_size;
+    inh.length = in_length;
+    inh.value = in_value;
     inh.position = 0;
+    inh.timetag = &tt_in;
 
-    outh.type = 'f';
-    outh.size = 1;
-    outh.length = 1;
-    outh.value = &outp;
-    outh.timetag = calloc(1, sizeof(mapper_timetag_t));
+    outh.type = out_type;
+    outh.size = out_size;
+    outh.length = out_length;
+    outh.value = out_value;
     outh.position = -1;
+    outh.timetag = &tt_out;
+}
+
+int parse_and_eval()
+{
+    eprintf("**********************************\n");
+    eprintf("Parsing string '%s'\n", str);
+    if (!(e = mapper_expr_new_from_string(str, inh.type, outh.type,
+                                          inh.length, outh.length,
+                                          &inh.size, &outh.size))) {
+        eprintf("Parser FAILED.\n");
+        return 1;
+    }
+
+#ifdef DEBUG
+    if (verbose)
+        printexpr("Parser returned:", e);
+#endif
 
-    int iterations = 1000000;
-    double then = get_current_time();
-    printf("Calculate expression %i times... ", iterations);
-    while (iterations--) {
+    if (!mapper_expr_evaluate(e, &inh, &outh)) {
+        eprintf("Evaluation FAILED.\n");
+        return 1;
+    }
+
+    then = get_current_time();
+    eprintf("Calculate expression %i times... ", iterations);
+    int i = iterations;
+    while (i--) {
         mapper_expr_evaluate(e, &inh, &outh);
     }
-    double now = get_current_time();
-    printf("%f seconds.\n", now-then);
+    now = get_current_time();
+    eprintf("%f seconds.\n", now-then);
 
-    printf("Evaluate with x=%f: %f (expected: %f)\n",
-           inp, outp,
-           26*2/2+log10f(M_PI)+2.f*powf(2,1*(3+7*.1f)*1.1f+inp)*3*4+cosf(2.0f));
+    eprintf("Got:      ");
+    if (verbose)
+        mapper_prop_pp(outh.type, outh.length, outh.value);
+    eprintf(" \n");
 
     mapper_expr_free(e);
-    free(inh.timetag);
-    free(outh.timetag);
 
+    if (!verbose)
+        printf(".");
     return 0;
 }
+
+int run_tests()
+{
+    int result = 0;
+
+    /* Complex string */
+    snprintf(str, 256, "y=26*2/2+log10(pi)+2.*pow(2,1*(3+7*.1)*1.1+x{0}[0])*3*4+cos(2.)");
+    setup_test('f', 1, 1, src_float, 'f', 1, 1, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: %f\n", 26*2/2+log10f(M_PI)+2.f*powf(2,1*(3+7*.1f)*1.1f+src_float[0])*3*4+cosf(2.0f));
+
+    /* Building vectors, conditionals */
+    snprintf(str, 256, "y=(x>1)?[1,2,3]:[2,4,6]");
+    setup_test('f', 1, 3, src_float, 'i', 1, 3, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: [%i, %i, %i]\n", src_float[0]>1?1:2, src_float[1]>1?2:4,
+           src_float[2]>1?3:6);
+
+    /* Conditionals with shortened syntax */
+    snprintf(str, 256, "y=x?:123");
+    setup_test('f', 1, 1, src_float, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n", (int)src_float[0]?:123);
+
+    /* Building vectors with variables, operations inside vector-builder */
+    snprintf(str, 256, "y=[x*-2+1,0]");
+    setup_test('i', 1, 2, src_int, 'd', 1, 3, dest_double);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f, %f]\n", (double)src_int[0]*-2+1,
+           (double)src_int[1]*-2+1, 0.0);
+
+    /* Building vectors with variables, operations inside vector-builder */
+    snprintf(str, 256, "y=[-99.4, -x*1.1+x]");
+    setup_test('i', 1, 2, src_int, 'd', 1, 3, dest_double);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f, %f]\n", -99.4,
+           (double)(-src_int[0]*1.1+src_int[0]),
+           (double)(-src_int[1]*1.1+src_int[1]));
+
+    /* Indexing vectors by range */
+    snprintf(str, 256, "y=x[1:2]+100");
+    setup_test('d', 1, 3, src_double, 'f', 1, 2, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f]\n", (float)src_double[1]+100,
+           (float)src_double[2]+100);
+
+    /* Typical linear scaling expression with vectors */
+    snprintf(str, 256, "y=x*[0.1,3.7,-.1112]+[2,1.3,9000]");
+    setup_test('f', 1, 3, src_float, 'f', 1, 3, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f, %f]\n", src_float[0]*0.1f+2.f,
+           src_float[1]*3.7f+1.3f, src_float[2]*-.1112f+9000.f);
+
+    /* Check type and vector length promotion of operation sequences */
+    snprintf(str, 256, "y=1+2*3-4*x");
+    setup_test('f', 1, 2, src_float, 'f', 1, 2, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f]\n", 1.f+2.f*3.f-4.f*src_float[0],
+           1.f+2.f*3.f-4.f*src_float[1]);
+
+    /* Swizzling, more pre-computation */
+    snprintf(str, 256, "y=[x[2],x[0]]*0+1+12");
+    setup_test('f', 1, 3, src_float, 'f', 1, 2, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: [%f, %f]\n", src_float[2]*0.f+1.f+12.f,
+           src_float[0]*0.f+1.f+12.f);
+
+    /* Logical negation */
+    snprintf(str, 256, "y=!(x[1]*0)");
+    setup_test('d', 1, 3, src_double, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n", (int)!(src_double[1]*0));
+
+    /* any() */
+    snprintf(str, 256, "y=any(x-1)");
+    setup_test('d', 1, 3, src_double, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n", ((int)src_double[0]-1)?1:0
+           | ((int)src_double[1]-1)?1:0
+           | ((int)src_double[2]-1)?1:0);
+
+    /* all() */
+    snprintf(str, 256, "y=x[1:2]*all(x-1)");
+    setup_test('d', 1, 3, src_double, 'i', 1, 2, dest_int);
+    result += parse_and_eval();
+    int temp = ((int)src_double[0]-1)?1:0 & ((int)src_double[1]-1)?1:0
+                & ((int)src_double[2]-1)?1:0;
+    eprintf("Expected: [%i, %i]\n", (int)src_double[1] * temp,
+           (int)src_double[2] * temp);
+
+    /* pi and e, extra spaces */
+    snprintf(str, 256, "y=x + pi -     e");
+    setup_test('d', 1, 1, src_double, 'f', 1, 1, dest_float);
+    result += parse_and_eval();
+    eprintf("Expected: %f\n", (float)(src_double[0]+M_PI-M_E));
+
+    /* bad vector notation */
+    snprintf(str, 256, "y=(x-2)[1]");
+    setup_test('i', 1, 1, src_int, 'i', 1, 1, dest_int);
+    result += !parse_and_eval();
+    eprintf("Expected: FAILURE\n");
+
+    /* vector index outside bounds */
+    snprintf(str, 256, "y=x[3]");
+    setup_test('i', 1, 3, src_int, 'i', 1, 1, dest_int);
+    result += !parse_and_eval();
+    eprintf("Expected: FAILURE\n");
+
+    /* vector length mismatch */
+    snprintf(str, 256, "y=x[1:2]");
+    setup_test('i', 1, 3, src_int, 'i', 1, 1, dest_int);
+    result += !parse_and_eval();
+    eprintf("Expected: FAILURE\n");
+
+    /* unnecessary vector notation */
+    snprintf(str, 256, "y=x+[1]");
+    setup_test('i', 1, 1, src_int, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n", src_int[0]+1);
+
+    /* invalid history index */
+    snprintf(str, 256, "y=x{-101}");
+    setup_test('i', 1, 1, src_int, 'i', 1, 1, dest_int);
+    result += !parse_and_eval();
+    eprintf("Expected: FAILURE\n");
+
+    /* invalid history index */
+    snprintf(str, 256, "y=x-y{-101}");
+    setup_test('i', 1, 1, src_int, 'i', 1, 1, dest_int);
+    result += !parse_and_eval();
+    eprintf("Expected: FAILURE\n");
+
+    /* Initialize filters */
+//    snprintf(str, 256, "y=x+y{-1}, y{-1}=100");
+//    setup_test('i', 1, 1, src_int, 'i', 1, 1, dest_int);
+//    result += parse_and_eval();
+//    eprintf("Expected: %i\n", src_int[0]*iterations + 100);
+
+    /* TODO: scientific notation */
+
+    /* Vector functions mean() and sum() */
+    snprintf(str, 256, "y=mean(x)==(sum(x)/3)");
+    setup_test('f', 1, 3, src_float, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n", 1);
+
+    /* Vector function vmax() and vmin() */
+    snprintf(str, 256, "y=vmax(x)-vmin(x)");
+    setup_test('f', 1, 3, src_float, 'i', 1, 1, dest_int);
+    result += parse_and_eval();
+    eprintf("Expected: %i\n",
+            ((src_float[0]>src_float[1])?
+             (src_float[0]>src_float[2]?(int)src_float[0]:(int)src_float[2]):
+             (src_float[1]>src_float[2]?(int)src_float[1]:(int)src_float[2])) -
+            ((src_float[0]<src_float[1])?
+             (src_float[0]<src_float[2]?(int)src_float[0]:(int)src_float[2]):
+             (src_float[1]<src_float[2]?(int)src_float[1]:(int)src_float[2])));
+
+    printf("**********************************\n");
+    printf("Failed %d tests\n", result);
+
+    return result;
+}
+
+int main(int argc, char **argv)
+{
+    int i, j, result = 0;
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testparser.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    result = run_tests();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+}
diff --git a/test/testprops.c b/test/testprops.c
index 7b0361e..cb1dfaf 100644
--- a/test/testprops.c
+++ b/test/testprops.c
@@ -21,6 +21,13 @@
 #define SEEN_Y        0x0200
 #define SEEN_TEST     0x0400
 
+int verbose = 1;
+
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
 /* Code to return a key's "seen" code, to mark whether we've seen a
  * value. */
 int seen_code(const char *key)
@@ -49,232 +56,535 @@ int seen_code(const char *key)
 int check_keys(mapper_db_signal sigprop)
 {
     const char *key;
-    const lo_arg *val;
-    lo_type type;
-    int i=0, seen=0;
-    while (!mapper_db_signal_property_index(sigprop, i++,
-                                            &key, &type, &val))
+    const void *val;
+    char type;
+    int i=0, seen=0, length;
+    while (!mapper_db_signal_property_index(sigprop, i++, &key,
+                                            &type, &val, &length))
     {
         seen |= seen_code(key);
     }
     return seen;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int seen, rc=0;
+    int i, j, seen, result = 0;
+
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testdb.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
     mapper_signal sig = msig_new("/test", 1, 'f', 1, "Hz", 0, 0, 0, 0);
     mapper_db_signal sigprop = msig_properties(sig);
 
     /* Test that default parameters are all listed. */
-
+    eprintf("Test 1:  checking default parameters... ");
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
                  | SEEN_TYPE | SEEN_UNIT))
     {
-        printf("1: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
     /* Test that adding maximum causes it to be listed. */
-
     float mx = 35.0;
     msig_set_maximum(sig, &mx);
-
+    eprintf("Test 2:  adding static property 'maximum'... ");
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
                  | SEEN_TYPE | SEEN_UNIT | SEEN_MAX))
     {
-        printf("2: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
     /* Test that adding an extra parameter causes the extra parameter
      * to be listed. */
-
-    msig_set_property(sig, "test", 's', (lo_arg*)"test_value");
-
+    char *str = "test_value";
+    msig_set_property(sig, "test", 's', &str, 1);
+    eprintf("Test 3:  adding extra string property 'test'... ");
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
                  | SEEN_TYPE | SEEN_UNIT | SEEN_MAX | SEEN_TEST))
     {
-        printf("3: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("Test 4:  retrieving property 'test'... ");
+    char type;
+    const void *val;
+    int length;
+    if (mapper_db_signal_property_lookup(sigprop, "test", &type, &val, &length)) {
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    eprintf("OK\n");
+
+    eprintf("\t checking type: %c ... ", type);
+    if (type != 's') {
+        eprintf("ERROR (expected %c)\n", 's');
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking value: '%s' ... ", (char*)val);
+    if (strcmp((char*)val, str)) {
+        eprintf("ERROR (expected '%s')\n", str);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
 
     /* Test that removing an extra parameter causes the extra
      * parameter to _not_ be listed. */
-
     msig_remove_property(sig, "test");
-
+    eprintf("Test 5:  removing extra property 'test'... ");
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
                  | SEEN_TYPE | SEEN_UNIT | SEEN_MAX))
     {
-        printf("4: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
     /* Test that adding two more properties works as expected. */
-
     int x = 123;
-    msig_set_property(sig, "x", 'i', (lo_arg*)&x);
-
+    msig_set_property(sig, "x", 'i', &x, 1);
     int y = 234;
-    msig_set_property(sig, "y", 'i', (lo_arg*)&y);
-
+    msig_set_property(sig, "y", 'i', &y, 1);
+    eprintf("Test 6:  adding extra integer properties 'x' and 'y'... ");
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
                  | SEEN_TYPE | SEEN_UNIT
                  | SEEN_MAX | SEEN_X | SEEN_Y))
     {
-        printf("5: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
     /* Test the type and value associated with "x". */
-
-    lo_type type;
-    const lo_arg *val;
-    if (mapper_db_signal_property_lookup(sigprop, "x", &type, &val)) {
-        printf("6: mapper_db_signal_property_lookup() did not "
-               "find a value for `x'.\n");
-        rc=1;
+    eprintf("Test 7:  retrieving property 'x'...");
+    if (mapper_db_signal_property_lookup(sigprop, "x", &type, &val, &length)) {
+        eprintf("ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    eprintf("OK\n");
 
-    printf("x: "); lo_arg_pp(type, (lo_arg*)val); printf("\n");
-
+    eprintf("\t checking type: %c ... ", type);
     if (type != 'i') {
-        printf("6: mapper_db_signal_property_lookup() returned "
-               "type %c, expected type %c.\n", type, 'i');
-        rc=1;
+        eprintf("ERROR (expected %c)\n", 'i');
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    if (val->i != 123) {
-        printf("6: mapper_db_signal_property_lookup() returned "
-               "%d, expected %d.\n", val->i, 123);
-        rc=1;
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking value: %i ... ", *(int*)val);
+    if (*(int*)val != 123) {
+        eprintf("ERROR (expected %d)\n", 123);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
 
     /* Check that there is no value associated with previously-removed
      * "test". */
-
-    if (!mapper_db_signal_property_lookup(sigprop, "test", &type, &val)) {
-        printf("7: mapper_db_signal_property_lookup() unexpectedly "
-               "found a value for removed property `test'.\n");
-        rc=1;
+    eprintf("Test 8:  retrieving removed property 'test': ");
+    if (!mapper_db_signal_property_lookup(sigprop, "test", &type,
+                                          &val, &length)) {
+        eprintf("found... ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("not found... OK\n");
 
     /* Check that there is an integer value associated with static,
      * required property "length". */
-
-    if (mapper_db_signal_property_lookup(sigprop, "length", &type, &val)) {
-        printf("8: mapper_db_signal_property_lookup() could not "
-               "find a value for static, required property `length'.\n");
-        rc=1;
+    eprintf("Test 9:  retrieving static, required property 'length'... ");
+    if (mapper_db_signal_property_lookup(sigprop, "length", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    printf("length: "); lo_arg_pp(type, (lo_arg*)val); printf("\n");
-
+    eprintf("\t checking type: %c ... ", type);
     if (type != 'i') {
-        printf("8: property `length' is type '%c', expected 'i'.\n", type);
-        rc=1;
+        eprintf("ERROR (expected %c)\n", 'i');
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    if (val->i != 1) {
-        printf("8: property `length' is %d, expected 1.\n", val->i);
-        rc=1;
+    eprintf("\t checking value: '%d' ... ", *(int*)val);
+    if (*(int*)val != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
     /* Check that there is a string value associated with static,
      * required property "name". */
-
-    if (mapper_db_signal_property_lookup(sigprop, "name", &type, &val)) {
-        printf("9: mapper_db_signal_property_lookup() could not "
-               "find a value for static, required property `name'.\n");
-        rc=1;
+    eprintf("Test 10: retrieving static, required property 'name'... ");
+    if (mapper_db_signal_property_lookup(sigprop, "name", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    printf("name: "); lo_arg_pp(type, (lo_arg*)val); printf("\n");
-
+    eprintf("\t checking type: %c ... ", type);
     if (type != 's') {
-        printf("9: property `name' is type '%c', expected 's'.\n", type);
-        rc=1;
+        eprintf("ERROR (expected %c)\n", 's');
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    if (strcmp(&val->s, "/test")) {
-        printf("9: property `name' is %s, expected `/test'.\n", &val->s);
-        rc=1;
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    /* Check that there is a string value associated with static,
-     * optional property "max". */
-
-    if (mapper_db_signal_property_lookup(sigprop, "max", &type, &val)) {
-        printf("10: mapper_db_signal_property_lookup() could not "
-               "find a value for static, optional property `maximum'.\n");
-        rc=1;
+    eprintf("\t checking value: '%s' ... ", (char*)val);
+    if (strcmp((char*)val, "/test")) {
+        eprintf("ERROR (expected '%s')\n", str);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    printf("max: "); lo_arg_pp(type, (lo_arg*)val); printf("\n");
+    /* Check that there is a float value associated with static,
+     * optional property "max". */
+    eprintf("Test 11: retrieving static, optional property 'max'... ");
+    if (mapper_db_signal_property_lookup(sigprop, "max", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
 
+    eprintf("\t checking type: %c ... ", type);
     if (type != 'f') {
-        printf("10: property `maximum' is type '%c', expected 'f'.\n", type);
-        rc=1;
+        eprintf("ERROR (expected %c)\n", 'f');
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    if (val->f != 35.0f) {
-        printf("10: property `maximum' is %f, expected 35.0.\n", val->f);
-        rc=1;
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 1) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    /* Test that removing maximum causes it to _not_ be listed. */
+    eprintf("\t checking value: '%f' ... ", *(float*)val);
+    if (*(float*)val != 35.0f) {
+        eprintf("ERROR (expected %f)\n", *(float*)val);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
 
+    /* Test that removing maximum causes it to _not_ be listed. */
     msig_set_maximum(sig, 0);
+    eprintf("Test 12: removing optional property 'max'... ");
+    seen = check_keys(sigprop);
+    if (seen & SEEN_MAX)
+    {
+        eprintf("ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("Test 13: retrieving optional property 'max': ");
+    if (!mapper_db_signal_property_lookup(sigprop, "max", &type,
+                                          &val, &length)) {
+        eprintf("found... ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("not found... OK\n");
 
+    /* Test adding and retrieving an integer vector property. */
+    eprintf("Test 14: adding an extra integer vector property 'test'... ");
+    int set_int[] = {1, 2, 3, 4, 5};
+    msig_set_property(sig, "test", 'i', &set_int, 5);
     seen = check_keys(sigprop);
     if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
-                 | SEEN_TYPE | SEEN_UNIT | SEEN_X | SEEN_Y))
+                 | SEEN_TYPE | SEEN_UNIT | SEEN_X
+                 | SEEN_Y | SEEN_TEST))
     {
-        printf("11: mapper_db_signal_property_index() did not "
-               "return the expected keys.\n");
-        rc=1;
+        eprintf("ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("Test 15: retrieving vector property 'test': ");
+    if (mapper_db_signal_property_lookup(sigprop, "test", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    if (!mapper_db_signal_property_lookup(sigprop, "max", &type, &val)) {
-        printf("11: mapper_db_signal_property_lookup() unexpectedly "
-               "found a value for `maximum' after it was removed.\n");
-        rc=1;
+    eprintf("\t checking type: %c ... ", type);
+    if (type != 'i') {
+        eprintf("ERROR (expected %c)\n", 'i');
+        result = 1;
         goto cleanup;
     }
+    else
+        eprintf("OK\n");
 
-    printf("Test SUCCESS.\n");
+    eprintf("\t checking length: %d ... ", length);
+    if (length != 5) {
+        eprintf("ERROR (expected %d)\n", 1);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    int *read_int = (int*)val;
+    int matched = 0;
+    eprintf("\t checking value: [%i,%i,%i,%i,%i] ... ", read_int[0],
+           read_int[1], read_int[2], read_int[3], read_int[4]);
+    for (i = 0; i < 5; i++) {
+        if (read_int[i] == set_int[i])
+            matched++;
+    }
+    if (matched != 5) {
+        eprintf("ERROR (expected [%i,%i,%i,%i,%i])\n", set_int[0],
+               set_int[1], set_int[2], set_int[3], set_int[4]);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    /* Test rewriting 'test' as float vector property. */
+    eprintf("Test 16: rewriting 'test' as vector float property... ");
+    float set_float[] = {10., 20., 30., 40., 50.};
+    msig_set_property(sig, "test", 'f', &set_float, 5);
+    seen = check_keys(sigprop);
+    if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
+                 | SEEN_TYPE | SEEN_UNIT | SEEN_X
+                 | SEEN_Y | SEEN_TEST))
+    {
+        eprintf("ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("Test 17: retrieving property 'test'... ");
+    if (mapper_db_signal_property_lookup(sigprop, "test", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking type: %c ... ", type);
+    if (type != 'f') {
+        eprintf("ERROR (expected '%c')\n", 'f');
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking length: %i ... ", length);
+    if (length != 5) {
+        eprintf("ERROR (expected %d)\n", length);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    float *read_float = (float*)val;
+    eprintf("\t checking value: [%f,%f,%f,%f,%f] ... ", read_float[0],
+           read_float[1], read_float[2], read_float[3], read_float[4]);
+    matched = 0;
+    for (i = 0; i < 5; i++) {
+        if (read_float[i] == set_float[i])
+            matched++;
+    }
+    if (matched != 5) {
+        eprintf("ERROR (expected [%f,%f,%f,%f,%f]\n", set_float[0],
+               set_float[1], set_float[2], set_float[3], set_float[4]);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    /* Test rewriting property 'test' as string vector property. */
+    eprintf("Test 18: rewriting 'test' as vector string property... ");
+    char *set_string[] = {"foo", "bar"};
+    msig_set_property(sig, "test", 's', &set_string, 2);
+    seen = check_keys(sigprop);
+    if (seen != (SEEN_DIR | SEEN_LENGTH | SEEN_NAME
+                 | SEEN_TYPE | SEEN_UNIT | SEEN_X
+                 | SEEN_Y | SEEN_TEST))
+    {
+        eprintf("ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("Test 19: retrieving property 'test'... ");
+    if (mapper_db_signal_property_lookup(sigprop, "test", &type,
+                                         &val, &length)) {
+        eprintf("not found... ERROR\n");
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking type: %c ... ", type);
+    if (type != 's') {
+        eprintf("ERROR (expected '%c')\n", 's');
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    eprintf("\t checking length: %d ...", length);
+    if (length != 2) {
+        eprintf("ERROR (expected %d)\n", 2);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
+
+    char **read_string = (char**)val;
+    eprintf("\t checking value: ['%s','%s'] ... ",
+           read_string[0], read_string[1]);
+    matched = 0;
+    for (i = 0; i < 2; i++) {
+        if (read_string[i] && strcmp(read_string[i], set_string[i]) == 0)
+            matched++;
+    }
+    if (matched != 2) {
+        eprintf("ERROR (expected ['%s','%s'])\n", set_string[0], set_string[1]);
+        result = 1;
+        goto cleanup;
+    }
+    else
+        eprintf("OK\n");
 
   cleanup:
     if (sig) msig_free(sig);
-    return rc;
+    if (!verbose)
+        printf("..................................................");
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
 }
diff --git a/test/testquery.c b/test/testquery.c
index ed9b3d1..b146a73 100644
--- a/test/testquery.c
+++ b/test/testquery.c
@@ -3,15 +3,22 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -27,10 +34,10 @@ void query_response_handler(mapper_signal sig, mapper_db_signal props,
                             mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> source got query response: %s %i\n", props->name, (*(int*)value));
+        eprintf("--> source got query response: %s %i\n", props->name, (*(int*)value));
     }
     else {
-        printf("--> source got empty query response: %s\n", props->name);
+        eprintf("--> source got empty query response: %s\n", props->name);
     }
 
     received++;
@@ -43,7 +50,7 @@ int setup_source()
     source = mdev_new("testquery-send", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     int mn=0, mx=10;
 
@@ -53,8 +60,8 @@ int setup_source()
         msig_set_callback(sendsig[i], query_response_handler, 0);
     }
 
-    printf("Output signals registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signals registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
 
     return 0;
 
@@ -66,15 +73,15 @@ void cleanup_source()
 {
     if (source) {
         if (source->routers) {
-            printf("Removing router.. ");
+            eprintf("Removing router.. ");
             fflush(stdout);
             mdev_remove_router(source, source->routers);
-            printf("ok\n");
+            eprintf("ok\n");
         }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -83,7 +90,7 @@ void insig_handler(mapper_signal sig,mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination got %s %f\n", props->name, (*(float*)value));
+        eprintf("--> destination got %s %f\n", props->name, (*(float*)value));
     }
     received++;
 }
@@ -95,7 +102,7 @@ int setup_destination()
     destination = mdev_new("testquery-recv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
@@ -105,8 +112,8 @@ int setup_destination()
                                     'f', 0, &mn, &mx, insig_handler, 0);
     }
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
 
     return 0;
 
@@ -117,15 +124,13 @@ error:
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
-
-
 void wait_local_devices()
 {
     while (!(mdev_ready(source) && mdev_ready(destination))) {
@@ -136,44 +141,57 @@ void wait_local_devices()
     }
 }
 
-void loop()
+int setup_connections()
 {
-    printf("-------------------- GO ! --------------------\n");
-    int i = 10, j = 0, count;
-
-    if (automate) {
-        char source_name[1024], destination_name[1024];
-
-        printf("%s\n", mdev_name(source));
-        printf("%s\n", mdev_name(destination));
+    int i;
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
 
-        lo_address a = lo_address_new_from_url("osc.udp://224.0.1.3:7570");
-        lo_address_set_ttl(a, 1);
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
 
-        lo_send(a, "/link", "ss", mdev_name(source), mdev_name(destination));
+    for (i = 0; i < 4; i++) {
+        msig_full_name(sendsig[i], src_name, 1024);
+        msig_full_name(recvsig[i], dest_name, 1024);
+        mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+    }
 
-        for (int i = 0; i < 4; i++) {
-            msig_full_name(sendsig[i], source_name, 1024);
-            msig_full_name(recvsig[i], destination_name, 1024);
+    // wait until connection has been established
+    i = 0;
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 10);
+        mdev_poll(destination, 10);
+        if (i++ > 100)
+            return 1;
+    }
 
-            lo_send(a, "/connect", "ss", source_name, destination_name);
-        }
+    mapper_monitor_free(mon);
+    return 0;
+}
 
-        lo_address_free(a);
-    }
+void loop()
+{
+    eprintf("-------------------- GO ! --------------------\n");
+    int i = 0, j = 0, count;
 
-    while (i >= 0 && !done) {
+    while ((!terminate || i < 50) && !done) {
         for (j = 0; j < 2; j++) {
             msig_update_float(recvsig[j], ((i % 10) * 1.0f));
         }
-        printf("\ndestination values updated to %f -->\n", (i % 10) * 1.0f);
+        eprintf("\ndestination values updated to %f -->\n", (i % 10) * 1.0f);
         for (j = 0; j < 4; j++) {
             count = msig_query_remotes(sendsig[j], MAPPER_NOW);
-            printf("Sent %i queries for sendsig[%i]\n", count, j);
+            eprintf("Sent %i queries for sendsig[%i]\n", count, j);
+            sent += count;
+        }
+        mdev_poll(destination, 50);
+        mdev_poll(source, 50);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
         }
-        mdev_poll(destination, 200);
-        mdev_poll(source, 200);
-        i--;
     }
 }
 
@@ -182,30 +200,70 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testquery.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices();
 
+    if (autoconnect && setup_connections()) {
+        eprintf("Error connecting signals.\n");
+        result = 1;
+        goto done;
+    }
+
     loop();
 
+    if (sent != received) {
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
+        result = 1;
+    }
+
 done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testqueue.c b/test/testqueue.c
index ef59018..9fcdaac 100644
--- a/test/testqueue.c
+++ b/test/testqueue.c
@@ -5,11 +5,23 @@
 #include <math.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <string.h>
+#include <signal.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
+
 mapper_device source = 0;
 mapper_device destination = 0;
 mapper_router router = 0;
@@ -29,15 +41,15 @@ int setup_source()
     source = mdev_new("testsend", port, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=1;
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', 0, &mn, &mx);
     sendsig1= mdev_add_output(source, "/outsig1", 1, 'f', 0, &mn, &mx);
 
-	printf("Output signal /outsig registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal /outsig registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
     return 0;
 
   error:
@@ -48,15 +60,15 @@ void cleanup_source()
 {
     if (source) {
         if (router) {
-            printf("Removing router.. ");
+            eprintf("Removing router.. ");
             fflush(stdout);
             mdev_remove_router(source, router);
-            printf("ok\n");
+            eprintf("ok\n");
         }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -65,7 +77,7 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("handler: Got %f\n", (*(float*)value));
+        eprintf("handler: Got %f\n", (*(float*)value));
     }
     received++;
 }
@@ -75,7 +87,7 @@ int setup_destination()
     destination = mdev_new("testrecv", port, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
@@ -84,8 +96,8 @@ int setup_destination()
 	recvsig1= mdev_add_input(destination, "/insig1", 1, 'f', 0,
                              &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
     return 0;
 
   error:
@@ -95,10 +107,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -118,14 +130,14 @@ int create_connections()
     msig_full_name(recvsig1, dest_name, 1024);
     mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
 
-    mapper_monitor_free(mon);
-
-    int i = 0;
-    while (i++ < 10) {
-        mdev_poll(source, 0);
-        mdev_poll(destination, 0);
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
     }
 
+    mapper_monitor_free(mon);
+
     return 0;
 }
 
@@ -140,45 +152,84 @@ void wait_ready()
 
 void loop()
 {
-    printf("Polling device..\n");
-	int i;
+    eprintf("Polling device..\n");
+	int i = 0;
 	float j=1;
-	for (i = 0; i < 10; i++) {
+	while ((!terminate || i < 50) && !done) {
         j=i;
         mapper_timetag_t now;
-        mdev_timetag_now(source, &now);
+        mdev_now(source, &now);
         mdev_start_queue(source, now);
 		mdev_poll(source, 0);
-        printf("Updating signal %s to %f\n",
-               sendsig->props.name, j);
+        eprintf("Updating signal %s to %f\n",
+                sendsig->props.name, j);
         msig_update(sendsig, &j, 0, now);
 		msig_update(sendsig1, &j, 0, now);
 		mdev_send_queue(sendsig->device, now);
 		sent = sent+2;
-        mdev_poll(destination, 250);
+        mdev_poll(destination, 100);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
+}
 
+void ctrlc(int sig)
+{
+    done = 1;
 }
-int main()
+
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testqueue.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_ready();
 
-    if (create_connections()) {
-        printf("Error creating connections.\n");
+    if (autoconnect && create_connections()) {
+        eprintf("Error creating connections.\n");
         result = 1;
         goto done;
     }
@@ -186,9 +237,9 @@ int main()
     loop();
 
     if (sent != received) {
-        printf("Not all sent messages were received.\n");
-        printf("Updated value %d time%s, but received %d of them.\n",
-               sent, sent == 1 ? "" : "s", received);
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
         result = 1;
     }
 
diff --git a/test/testrate.c b/test/testrate.c
index 55f6252..d846fcb 100644
--- a/test/testrate.c
+++ b/test/testrate.c
@@ -4,16 +4,24 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
 #include <stdlib.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -24,7 +32,6 @@ int port = 9000;
 
 int sent = 0;
 int received = 0;
-int done = 0;
 
 /*! Creation of a local source. */
 int setup_source()
@@ -32,7 +39,7 @@ int setup_source()
     source = mdev_new("testsend", port, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=10;
 
@@ -43,35 +50,41 @@ int setup_source()
 
     // Check by both methods that the property was set
     mapper_db_signal props = msig_properties(sendsig);
-    printf("Rate for /outsig is set to: %f\n", props->rate);
+    eprintf("Rate for /outsig is set to: %f\n", props->rate);
 
-    const lo_arg *a;
-    lo_type t;
-    if (mapper_db_signal_property_lookup(props, "rate", &t, &a))
+    const float *a;
+    char t;
+    int l;
+    if (mapper_db_signal_property_lookup(props, "rate", &t,
+                                         (const void**)&a, &l))
     {
-        printf("Couldn't find `rate' property.\n");
+        eprintf("Couldn't find `rate' property.\n");
         mdev_free(source);
         mdev_free(destination);
         exit(1);
     }
 
+    if (l!=1) {
+        eprintf("Rate property was unexpected length %d\n", l);
+        exit(1);
+    }
     if (t=='f')
-        printf("Rate for /outsig is set to: %f\n", a->f);
+        eprintf("Rate for /outsig is set to: %f\n", a[0]);
     else {
-        printf("Rate property was unexpected type `%c'\n", t);
+        eprintf("Rate property was unexpected type `%c'\n", t);
         mdev_free(source);
         mdev_free(destination);
         exit(1);
     }
 
-    if (props->rate != a->f) {
-        printf("Rate properties don't agree.\n");
+    if (props->rate != a[0]) {
+        eprintf("Rate properties don't agree.\n");
         mdev_free(source);
         mdev_free(destination);
         exit(1);
     }
 
-    printf("Output signal /outsig registered.\n");
+    eprintf("Output signal /outsig registered.\n");
 
     return 0;
 
@@ -83,15 +96,15 @@ void cleanup_source()
 {
     if (source) {
         if (source->routers) {
-            printf("Removing router.. ");
+            eprintf("Removing router.. ");
             fflush(stdout);
             mdev_remove_router(source, source->routers);
-            printf("ok\n");
+            eprintf("ok\n");
         }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -100,15 +113,15 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination %s got %i message vector\n[",
+        eprintf("--> destination %s got %i message vector\n[",
                props->name, count);
         float *v = value;
         for (int i = 0; i < count; i++) {
             for (int j = 0; j < props->length; j++) {
-                printf(" %.1f ", v[i*props->length+j]);
+                eprintf(" %.1f ", v[i*props->length+j]);
             }
         }
-        printf("]\n");
+        eprintf("]\n");
     }
     received++;
 }
@@ -119,7 +132,7 @@ int setup_destination()
     destination = mdev_new("testrecv", port, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
@@ -129,7 +142,7 @@ int setup_destination()
     // This signal is expected to be updated at 100 Hz
     msig_set_rate(recvsig, 100);
 
-    printf("Input signal /insig registered.\n");
+    eprintf("Input signal /insig registered.\n");
 
     return 0;
 
@@ -140,10 +153,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -157,44 +170,56 @@ void wait_local_devices()
     }
 }
 
-void loop()
+int setup_connections()
 {
     int i = 0;
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
+
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
+        if (i++ > 100)
+            return 1;
+    }
 
-    if (automate) {
-        char source_name[1024], destination_name[1024];
-
-        printf("%s\n", mdev_name(source));
-        printf("%s\n", mdev_name(destination));
-
-        lo_address a = lo_address_new_from_url("osc.udp://224.0.1.3:7570");
-        lo_address_set_ttl(a, 1);
-
-        lo_send(a, "/link", "ss", mdev_name(source), mdev_name(destination));
-
-        msig_full_name(sendsig, source_name, 1024);
-        msig_full_name(recvsig, destination_name, 1024);
-
-        lo_send(a, "/connect", "ss", source_name, destination_name);
+    mapper_monitor_free(mon);
+    return 0;
+}
 
-        lo_address_free(a);
-    }
+void loop()
+{
+    int i = 0;
 
     float phasor[10];
     for (i=0; i<10; i++)
         phasor[i] = i;
 
-    while (i >= 0 && !done) {
+    i = 0;
+    while ((!terminate || i < 50) && !done) {
         mdev_poll(source, 0);
 
         // 10 times a second, we provide 10 samples, making a
         // periodically-sampled signal of 100 Hz.
-        printf("Sending [%g..%g]...\n", phasor[0], phasor[9]);
-
+        eprintf("Sending [%g..%g]...\n", phasor[0], phasor[9]);
+        sent++;
         msig_update(sendsig, phasor, 10, MAPPER_NOW);
         int r = mdev_poll(destination, 100);
-        printf("Destination got %d message%s.\n", r, r==1?"":"s");
+        eprintf("Destination got %d message%s.\n", r, r==1?"":"s");
         i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
@@ -203,30 +228,70 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testrate.c: possible arguments "
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Error initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices();
 
+    if (autoconnect && setup_connections()) {
+        eprintf("Error connecting signals.\n");
+        result = 1;
+        goto done;
+    }
+
     loop();
 
+    if (sent != received) {
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
+        result = 1;
+    }
+
   done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testrecv.c b/test/testrecv.c
index 116b961..885235a 100644
--- a/test/testrecv.c
+++ b/test/testrecv.c
@@ -3,26 +3,41 @@
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
 #include <lo/lo.h>
-
 #include <unistd.h>
+#include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
+
 int sent = 0;
 int received = 0;
+lo_address a = NULL;
 
 void handler(mapper_signal sig, mapper_db_signal props,
              int instance_id, void *value, int count,
              mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("handler: Got %f\n", (*(float*)value));
+        eprintf("handler: Got %f\n", (*(float*)value));
     }
     received++;
+    if (!verbose) {
+        printf("\r  Received: %4i", received);
+        fflush(stdout);
+    }
 }
 
 int test_recv()
@@ -30,17 +45,17 @@ int test_recv()
     mapper_device md = mdev_new("synth", 0, 0);
     if (!md)
         goto error;
-    printf("Mapper device created.\n");
+    eprintf("Mapper device created.\n");
 
     float mn=0, mx=1;
     mapper_signal sig = 
         mdev_add_input(md, "/mapped1", 1, 'f', 0, &mn, &mx, handler, 0);
 
-    printf("Input signal /mapped1 registered.\n");
+    eprintf("Input signal /mapped1 registered.\n");
 
-    printf("Number of inputs: %d\n", mdev_num_inputs(md));
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(md));
 
-    printf("Waiting for port/ordinal allocation..\n");
+    eprintf("Waiting for port/ordinal allocation..\n");
     int i;
     for (i = 0; i < 10; i++) {
         mdev_poll(md, 500);
@@ -49,39 +64,45 @@ int test_recv()
         usleep(500 * 1000);
     }
     if (i >= 10) {
-        printf("Timed out waiting for signal name.\n");
+        eprintf("Timed out waiting for signal name.\n");
         goto error;
     }
 	
 	char port[10];
-	sprintf(port, "%i", md->admin->port);
-	printf("using port = %s\n", port);
+	sprintf(port, "%i", md->props.port);
+	eprintf("using port = %s\n", port);
 	
-	lo_address a = lo_address_new("localhost", port);
+	a = lo_address_new("localhost", port);
     if (!a) {
-        printf("Error creating lo_address for test.\n");
-        return 1;
+        eprintf("Error creating lo_address for test.\n");
+        goto error;
     }
 
-    printf("Polling device..\n");
-    for (i = 0; i < 10; i++) {
+    eprintf("Polling device..\n");
+    i = 0;
+    while ((!terminate || i < 50) && !done) {
         lo_send(a, sig->props.name, "f", (float) i);
-		printf("Updating signal %s to %f\n", sig->props.name, (float) i);
+		eprintf("Updating signal %s to %f\n", sig->props.name, (float) i);
         sent++;
-        mdev_poll(md, 500);
-		//usleep(500 * 1000);
+        mdev_poll(md, 100);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 
     if (sent != received) {
-        printf("Not all sent values were received.\n");
-        printf("Sent %d values, but %d received.\n", sent, received);
+        eprintf("Not all sent values were received.\n");
+        eprintf("Sent %d values, but %d received.\n", sent, received);
         goto error;
     }
     if (sent == 0) {
-        printf("Unable to send any values.\n");
+        eprintf("Unable to send any values.\n");
         goto error;
     }
-    printf("Sent and received %d values.\n", sent);
+    eprintf("Sent and received %d values.\n", sent);
 
     mdev_free(md);
     lo_address_free(a);
@@ -90,18 +111,54 @@ int test_recv()
   error:
     if (md)
         mdev_free(md);
-    lo_address_free(a);
+    if (a)
+        lo_address_free(a);
     return 1;
 }
 
-int main()
+void ctrlc(int signal)
+{
+    done = 1;
+}
+
+int main(int argc, char **argv)
 {
-    int result = test_recv();
-    if (result) {
-        printf("Test FAILED.\n");
-        return 1;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testrecv.c: possible arguments"
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
     }
 
-    printf("Test PASSED.\n");
-    return 0;
+    signal(SIGINT, ctrlc);
+
+    if (test_recv()) {
+        result = 1;
+        goto done;
+    }
+
+done:
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
 }
diff --git a/test/testreverse.c b/test/testreverse.c
index daf96c7..dd27c00 100644
--- a/test/testreverse.c
+++ b/test/testreverse.c
@@ -3,15 +3,23 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -20,7 +28,6 @@ mapper_signal recvsig;
 
 int sent = 0;
 int received = 0;
-int done = 0;
 
 void insig_handler(mapper_signal sig, mapper_db_signal props,
                    int instance_id, void *value, int count,
@@ -28,15 +35,15 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
 {
     if (value) {
         if (props->type == 'f')
-            printf("--> %s got %f\n", props->is_output ?
-                   "source" : "destination", (*(float*)value));
+            eprintf("--> %s got %f\n", props->is_output ?
+                    "source" : "destination", (*(float*)value));
         else if (props->type == 'i')
-            printf("--> %s got %i\n", props->is_output ?
-                   "source" : "destination", (*(int*)value));
+            eprintf("--> %s got %i\n", props->is_output ?
+                    "source" : "destination", (*(int*)value));
     }
     else {
-        printf("--> %s got NIL\n", props->is_output ?
-               "source" : "destination");
+        eprintf("--> %s got NIL\n", props->is_output ?
+                "source" : "destination");
     }
     received++;
 }
@@ -44,18 +51,18 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
 /*! Creation of a local source. */
 int setup_source()
 {
-    source = mdev_new("testquery-send", 0, 0);
+    source = mdev_new("testreverse-send", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
-    float mn=0, mx=10;
+    int mn=0, mx=10;
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'i', 0, &mn, &mx);
     msig_set_callback(sendsig, insig_handler, 0);
 
-    printf("Output signals registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signals registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
 
     return 0;
 
@@ -66,28 +73,28 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
 /*! Creation of a local destination. */
 int setup_destination()
 {
-    destination = mdev_new("testquery-recv", 0, 0);
+    destination = mdev_new("testreverse-recv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
     recvsig = mdev_add_input(destination, "/insig", 1,
                              'f', 0, &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
 
     return 0;
 
@@ -98,10 +105,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -115,37 +122,51 @@ void wait_local_devices()
     }
 }
 
-void loop()
+int setup_connections()
 {
-    printf("-------------------- GO ! --------------------\n");
     int i = 0;
-
-    if (automate) {
-        char source_name[1024], destination_name[1024];
-
-        printf("%s\n", mdev_name(source));
-        printf("%s\n", mdev_name(destination));
-
-        lo_address a = lo_address_new_from_url("osc.udp://224.0.1.3:7570");
-        lo_address_set_ttl(a, 1);
-
-        lo_send(a, "/link", "ss", mdev_name(source), mdev_name(destination));
-
-        msig_full_name(sendsig, source_name, 1024);
-        msig_full_name(recvsig, destination_name, 1024);
-
-        lo_send(a, "/connect", "ssss", source_name, destination_name,
-                "@mode", "reverse");
-
-        lo_address_free(a);
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
+
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_db_connection_t props;
+    props.mode = MO_REVERSE;
+    mapper_monitor_connect(mon, src_name, dest_name, &props,
+                           CONNECTION_MODE);
+
+    // wait until connection has been established
+    while (!destination->receivers ||
+           !destination->receivers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
+        if (i++ > 100)
+            return 1;
     }
 
-    while (i >= 0 && !done) {
+    mapper_monitor_free(mon);
+    return 0;
+}
+
+void loop()
+{
+    eprintf("-------------------- GO ! --------------------\n");
+    int i = 0;
+    while ((!terminate || i < 50) && !done) {
         msig_update_float(recvsig, ((i % 10) * 1.0f));
-        printf("\ndestination value updated to %f -->\n", (i % 10) * 1.0f);
-        mdev_poll(destination, 1);
+        sent++;
+        eprintf("\ndestination value updated to %f -->\n", (i % 10) * 1.0f);
+        mdev_poll(destination, 0);
         mdev_poll(source, 100);
         i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
@@ -154,30 +175,70 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testreverse.c: possible arguments"
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Error initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices();
 
+    if (autoconnect && setup_connections()) {
+        eprintf("Error connecting signals.\n");
+        result = 1;
+        goto done;
+    }
+
     loop();
 
+    if (sent != received) {
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
+        result = 1;
+    }
+
   done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testselect.c b/test/testselect.c
index 903feee..6921cab 100644
--- a/test/testselect.c
+++ b/test/testselect.c
@@ -4,16 +4,36 @@
 #include <stdio.h>
 #include <math.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
 #include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
+
+void timersub(struct timeval *a, struct timeval *b, struct timeval *res)
+{
+    res->tv_sec = a->tv_sec - b->tv_sec;
+    if (a->tv_usec >= b->tv_usec)
+        res->tv_usec = a->tv_usec - b->tv_usec;
+    else {
+        res->tv_sec--;
+        res->tv_usec = 999999 - b->tv_usec + a->tv_usec;
+    }
+}
 #endif
 
-int automate = 1;
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -22,21 +42,20 @@ mapper_signal recvsig = 0;
 
 int sent = 0;
 int received = 0;
-int done = 0;
 
 /*! Creation of a local source. */
 int setup_source()
 {
-    source = mdev_new("testsend", 0, 0);
+    source = mdev_new("testselect-send", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     float mn=0, mx=10;
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', "Hz", &mn, &mx);
 
-    printf("Output signal /outsig registered.\n");
+    eprintf("Output signal /outsig registered.\n");
 
     return 0;
 
@@ -47,10 +66,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -59,12 +78,12 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
                    mapper_timetag_t *timetag)
 {
     if (value) {
-        printf("--> destination got %s", props->name);
+        eprintf("--> destination got %s", props->name);
         float *v = value;
         for (int i = 0; i < props->length; i++) {
-            printf(" %f", v[i]);
+            eprintf(" %f", v[i]);
         }
-        printf("\n");
+        eprintf("\n");
     }
     received++;
 }
@@ -72,17 +91,17 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
 /*! Creation of a local destination. */
 int setup_destination()
 {
-    destination = mdev_new("testrecv", 0, 0);
+    destination = mdev_new("testselect-recv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     float mn=0, mx=1;
 
     recvsig = mdev_add_input(destination, "/insig", 1, 'f',
                              0, &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
+    eprintf("Input signal /insig registered.\n");
 
     return 0;
 
@@ -93,14 +112,45 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
+int setup_connection()
+{
+    int count = 0;
+
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+    if (!mon)
+        goto error;
 
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
+
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        if (count++ > 50)
+            goto error;
+        mdev_poll(source, 10);
+        mdev_poll(destination, 10);
+    }
+    eprintf("Connection established.\n");
+
+    mapper_monitor_free(mon);
+
+    return 0;
+
+  error:
+    return 1;
+}
 
 void wait_local_devices()
 {
@@ -114,9 +164,9 @@ void wait_local_devices()
 
 /* This is where we test the use of select() to wait on multiple
  * devices at once. */
-void select_on_both_devices()
+void select_on_both_devices(int block_ms)
 {
-    int i;
+    int i, updated = 0;
 
     fd_set fdr;
 
@@ -141,22 +191,36 @@ void select_on_both_devices()
         if (fds2[i] > mfd) mfd = fds2[i];
     }
 
-    /* Timeout should not be more than 100 ms */
-    struct timeval timeout = { 0, 100000 };
+    struct timeval timeout = { block_ms * 0.001, (block_ms * 1000) % 1000000 };
+    struct timeval now, then;
+    gettimeofday(&now, NULL);
+    then.tv_sec = now.tv_sec + block_ms * 0.001;
+    then.tv_usec = now.tv_usec + block_ms * 1000;
+    if (then.tv_usec > 1000000) {
+        then.tv_sec++;
+        then.tv_usec %= 1000000;
+    }
 
-    if (select(mfd+1, &fdr, 0, 0, &timeout) > 0)
-    {
-        for (i = 0; i < nfds1; i++) {
-            if (FD_ISSET(fds1[i], &fdr))
-                mdev_service_fd(source, fds1[i]);
-        }
-        for (i = 0; i < nfds2; i++) {
-            if (FD_ISSET(fds2[i], &fdr))
-                mdev_service_fd(destination, fds2[i]);
+    while (timercmp(&now, &then, <)) {
+        if (select(mfd+1, &fdr, 0, 0, &timeout) > 0)
+        {
+            for (i = 0; i < nfds1; i++) {
+                if (FD_ISSET(fds1[i], &fdr))
+                    mdev_service_fd(source, fds1[i]);
+            }
+            for (i = 0; i < nfds2; i++) {
+                if (FD_ISSET(fds2[i], &fdr))
+                    mdev_service_fd(destination, fds2[i]);
+            }
+            updated ++;
         }
+        gettimeofday(&now, NULL);
+
+        // not necessary in Linux since timeout is updated by select()
+        timersub(&then, &now, &timeout);
     }
-    else
-    {
+
+    if (!updated) {
         /* If nothing happened in 100 ms, we should poll the devices
          * anyways in case action needs to be taken. */
         mdev_poll(source, 0);
@@ -166,31 +230,19 @@ void select_on_both_devices()
 
 void loop()
 {
-    printf("-------------------- GO ! --------------------\n");
+    eprintf("-------------------- GO ! --------------------\n");
     int i = 0;
 
-    if (automate) {
-        mapper_monitor mon = mapper_monitor_new(source->admin, 0);
-
-        char src_name[1024], dest_name[1024];
-        mapper_monitor_link(mon, mdev_name(source),
-                            mdev_name(destination), 0, 0);
-
-        msig_full_name(sendsig, src_name, 1024);
-        msig_full_name(recvsig, dest_name, 1024);
-        mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
-
-        mapper_monitor_free(mon);
-    }
-
-    while (i >= 0 && !done) {
-        select_on_both_devices();
-
+    while ((!terminate || i < 50) && !done) {
         msig_update_float(sendsig, ((i % 10) * 1.0f));
-        printf("source value updated to %d -->\n", i % 10);
-        printf("Received %i messages.\n\n", mdev_poll(destination, 100));
-
+        eprintf("\nsource value updated to %d -->\n", i % 10);
         i++;
+        sent++;
+        select_on_both_devices(100);
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
@@ -199,30 +251,69 @@ void ctrlc(int sig)
     done = 1;
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testselect.c: possible arguments"
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Error initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices();
 
+    if (autoconnect && setup_connection()) {
+        eprintf("Error initializing connection.\n");
+        result = 1;
+        goto done;
+    }
+
     loop();
 
+    if (sent != received) {
+        result = 1;
+        eprintf("Error: sent %i messages but received %i messages.\n",
+                sent, received);
+    }
+
   done:
     cleanup_destination();
     cleanup_source();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testsend.c b/test/testsend.c
index 9031c66..16413ca 100644
--- a/test/testsend.c
+++ b/test/testsend.c
@@ -3,15 +3,25 @@
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
 #include <unistd.h>
+#include <signal.h>
+#include <string.h>
+
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int done = 0;
 
 int test_controller()
 {
     mapper_device md = mdev_new("tester", 0, 0);
     if (!md)
         goto error;
-    printf("Mapper device created.\n");
+    eprintf("Mapper device created.\n");
 
     while (!mdev_ready(md)) {
         mdev_poll(md, 100);
@@ -21,30 +31,36 @@ int test_controller()
     mapper_signal sig = 
         mdev_add_output(md, "/testsig", 1, 'f', 0, &mn, &mx);
 
-    printf("Output signal /testsig registered.\n");
+    eprintf("Output signal /testsig registered.\n");
 
-    printf("Number of outputs: %d\n", mdev_num_outputs(md));
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(md));
 
     const char *host = "localhost";
     int port = 9000;
-    mapper_router rt = mapper_router_new(md, host, port, "DESTINATION", 0);
+    mapper_router rt = mapper_router_new(md, host, port, "DESTINATION");
     mdev_add_router(md, rt);
-    printf("Router to %s:%d added.\n", host, port);
+    eprintf("Router to %s:%d added.\n", host, port);
 
     mapper_router_add_connection(rt, sig, "/mapped1", 'f', 1);
     mapper_router_add_connection(rt, sig, "/mapped2", 'f', 1);
 
-    printf("Polling device..\n");
-    int i;
-    for (i = 0; i < 10; i++) {
-        mdev_poll(md, 500);
-        printf("Updating signal %s to %f\n",
-               sig->props.name, (i * 1.0f));
+    eprintf("Polling device..\n");
+    int i = 0;
+    while ((!terminate || i < 50) && !done) {
+        mdev_poll(md, 100);
+        eprintf("Updating signal %s to %f\n",
+                sig->props.name, (i * 1.0f));
         msig_update_float(sig, (i * 1.0f));
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i", i);
+            fflush(stdout);
+        }
     }
 
     mdev_remove_router(md, rt);
-    printf("Router removed.\n");
+    eprintf("Router removed.\n");
 
     mdev_free(md);
     return 0;
@@ -55,14 +71,49 @@ int test_controller()
     return 1;
 }
 
-int main()
+void ctrlc(int signal)
 {
-    int result = test_controller();
-    if (result) {
-        printf("Test FAILED.\n");
-        return 1;
+    done = 1;
+}
+
+int main(int argc, char **argv)
+{
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        eprintf("testsend.c: possible arguments"
+                                "-q quiet (suppress output), "
+                                "-t terminate automatically, "
+                                "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
     }
 
-    printf("Test PASSED.\n");
-    return 0;
+    signal(SIGINT, ctrlc);
+
+    if (test_controller()) {
+        result = 1;
+        goto done;
+    }
+
+done:
+    printf("                   Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
 }
diff --git a/test/testsignals.c b/test/testsignals.c
new file mode 100644
index 0000000..eeaa902
--- /dev/null
+++ b/test/testsignals.c
@@ -0,0 +1,64 @@
+
+#include "../src/mapper_internal.h"
+#include <mapper/mapper.h>
+#include <stdio.h>
+#include <math.h>
+#include <lo/lo.h>
+
+#include <unistd.h>
+#include <signal.h>
+
+mapper_device mdev = 0;
+
+void sig_handler(mapper_signal sig, mapper_db_signal props,
+                 int instance_id, void *value, int count,
+                 mapper_timetag_t *timetag)
+{
+    if (value) {
+        printf("--> destination got %s", props->name);
+        float *v = value;
+        for (int i = 0; i < props->length; i++) {
+            printf(" %f", v[i]);
+        }
+        printf("\n");
+    }
+}
+
+int main(int argc, char ** argv)
+{
+    int i, result = 0;
+    char signame[32];
+
+    printf("Creating device... ");
+    fflush(stdout);
+    mdev = mdev_new("testsignals", 0, 0);
+    if (!mdev) {
+        result = 1;
+        goto done;
+    }
+
+    printf("Adding signals... ");
+    fflush(stdout);
+    for (i = 0; i < 100; i++) {
+        snprintf(signame, 32, "/s%i", i);
+        if (!mdev_add_input(mdev, signame, 1, 'f', 0, 0, 0, sig_handler, 0)) {
+            result = 1;
+            goto done;
+        }
+        if (!mdev_add_output(mdev, signame, 1, 'f', 0, 0, 0)) {
+            result = 1;
+            goto done;
+        }
+    }
+
+    printf("Waiting for 10 seconds... ");
+    fflush(stdout);
+    for (i = 100; i > 0; i--)
+        mdev_poll(mdev, 100);
+
+    mdev_free(mdev);
+
+  done:
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
+    return result;
+}
diff --git a/test/testspeed.c b/test/testspeed.c
index cb8d64d..5c74986 100644
--- a/test/testspeed.c
+++ b/test/testspeed.c
@@ -6,11 +6,18 @@
 #include <time.h>
 #include <sys/time.h>
 #include <lo/lo.h>
-
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
+
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+    else                                        \
+        fprintf(stdout, ".");                   \
+} while(0)
 
-int automate = 1;
+int verbose = 1;
 
 mapper_device source = 0;
 mapper_device destination = 0;
@@ -47,15 +54,15 @@ int setup_source()
     source = mdev_new("testSpeedSend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
     sendsig = mdev_add_output(source, "/outsig", 1, 'f', 0, 0, 0);
     if (!sendsig)
         goto error;
-    msig_reserve_instances(sendsig, 9);
+    msig_reserve_instances(sendsig, 9, 0, 0);
 
-    printf("Output signal registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
 
     return 0;
 
@@ -66,16 +73,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        if (source->routers) {
-            printf("Removing router.. ");
-            fflush(stdout);
-            mdev_remove_router(source, source->routers);
-            printf("ok\n");
-        }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -94,8 +95,8 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
             msig_update(sendsig, value, 1, MAPPER_NOW);
     }
     else
-        printf("--> destination %s instance %ld got NULL\n",
-               props->name, (long)instance_id);
+        eprintf("--> destination %s instance %ld got NULL\n",
+                props->name, (long)instance_id);
 }
 
 /*! Creation of a local destination. */
@@ -104,16 +105,16 @@ int setup_destination()
     destination = mdev_new("testSpeedRecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
     recvsig = mdev_add_input(destination, "/insig", 1, 'f',
                              0, 0, 0, insig_handler, 0);
     if (!recvsig)
         goto error;
-    msig_reserve_instances(recvsig, 9);
+    msig_reserve_instances(recvsig, 9, 0, 0);
 
-    printf("Input signal registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
 
     return 0;
 
@@ -124,10 +125,10 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -141,38 +142,27 @@ void wait_local_devices()
 
 void connect_signals()
 {
-    char source_name[1024], destination_name[1024];
-
-    printf("%s\n", mdev_name(source));
-    printf("%s\n", mdev_name(destination));
-
-    lo_address a = lo_address_new_from_url("osc.udp://224.0.1.3:7570");
-    lo_address_set_ttl(a, 1);
-
-    lo_send(a, "/link", "ss", mdev_name(source), mdev_name(destination));
-
-    // wait for link to be processed
-    int j = 50;
-    while (j >= 0) {
-        mdev_poll(source, 10);
-        mdev_poll(destination, 10);
-        j--;
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
+
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_db_connection_t props;
+    props.expression = "y=y{-1}+1";
+    props.mode = MO_EXPRESSION;
+    mapper_monitor_connect(mon, src_name, dest_name, &props,
+                           CONNECTION_MODE | CONNECTION_EXPRESSION);
+
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
     }
 
-    msig_full_name(sendsig, source_name, 1024);
-    msig_full_name(recvsig, destination_name, 1024);
-
-    lo_send(a, "/connect", "ssssss", source_name, destination_name, "@mode", "expression", "@expression", "y=y{-1}+1");
-
-    lo_address_free(a);
-
-    // wait for connection to be processed
-    j = 50;
-    while (j >= 0) {
-        mdev_poll(source, 10);
-        mdev_poll(destination, 10);
-        j--;
-    }
+    mapper_monitor_free(mon);
 }
 
 void ctrlc(int sig)
@@ -184,11 +174,11 @@ void switch_modes()
 {
     int i;
     // possible modes: bypass/expression/calibrate, boundary actions, instances, instance-stealing
-    printf("MODE %i TRIAL %i COMPLETED...\n", mode, trial);
+    eprintf("MODE %i TRIAL %i COMPLETED...\n", mode, trial);
     received = 0;
     times[mode*numTrials+trial] = get_current_time() - times[mode*numTrials+trial];
     if (++trial >= numTrials) {
-        printf("SWITCHING MODES...\n");
+        eprintf("SWITCHING MODES...\n");
         trial = 0;
         mode++;
     }
@@ -231,9 +221,31 @@ void print_results()
     printf("\n*****************************************************\n");
 }
 
-int main()
+int main(int argc, char **argv)
 {
-    int result = 0;
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testspeed.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
 
     value = (float)rand();
 
@@ -246,18 +258,17 @@ int main()
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Error initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_local_devices();
 
-    if (automate)
-        connect_signals();
+    connect_signals();
 
     // start things off
-    printf("STARTING TEST...\n");
+    eprintf("STARTING TEST...\n");
     times[0] = get_current_time();
     msig_update_instance(sendsig, counter++, &value, 0, MAPPER_NOW);
     while (!done) {
@@ -269,6 +280,8 @@ int main()
   done:
     cleanup_destination();
     cleanup_source();
-    print_results();
+    if (verbose)
+        print_results();
+    printf("Test %s.\n", result ? "FAILED" : "PASSED");
     return result;
 }
diff --git a/test/testsync.c b/test/testsync.c
index 4f22fa1..e2e5b70 100644
--- a/test/testsync.c
+++ b/test/testsync.c
@@ -54,15 +54,15 @@ void loop()
     int i = 0;
     printf("Loading devices...\n");
 
-    while (i >= 0 && !done) {
+    while (i <= 100 && !done) {
         for (i=0; i<5; i++)
-            mdev_poll(devices[i], 0);
+            mdev_poll(devices[i], 20);
         lo_timetag_now(&system_time);
         if (system_time.sec != last_update) {
             last_update = system_time.sec;
             if (ready) {
                 for (i=0; i<5; i++) {
-                    mdev_timetag_now(devices[i], &device_times[i]);
+                    mdev_now(devices[i], &device_times[i]);
                 }
                 // calculate standard deviation
                 double mean = 0;
@@ -98,7 +98,6 @@ void loop()
                 }
             }
         }
-        usleep(10 * 1000);
     }
 }
 
@@ -110,6 +109,8 @@ void ctrlc(int sig)
 int main()
 {
     int result = 0;
+    printf("skipping test!\n");
+    return 0;
 
     signal(SIGINT, ctrlc);
 
diff --git a/test/testvector.c b/test/testvector.c
index 199926e..7d757df 100644
--- a/test/testvector.c
+++ b/test/testvector.c
@@ -1,19 +1,28 @@
 
 #include "../src/mapper_internal.h"
-
 #include <mapper/mapper.h>
 #include <stdio.h>
 #include <math.h>
-
 #include <unistd.h>
+#include <string.h>
+#include <signal.h>
 
 #ifdef WIN32
 #define usleep(x) Sleep(x/1000)
 #endif
 
+#define eprintf(format, ...) do {               \
+    if (verbose)                                \
+        fprintf(stdout, format, ##__VA_ARGS__); \
+} while(0)
+
+int verbose = 1;
+int terminate = 0;
+int autoconnect = 1;
+int done = 0;
+
 mapper_device source = 0;
 mapper_device destination = 0;
-mapper_router router = 0;
 mapper_signal sendsig = 0;
 mapper_signal recvsig = 0;
 
@@ -25,13 +34,13 @@ int setup_source()
     source = mdev_new("testsend", 0, 0);
     if (!source)
         goto error;
-    printf("source created.\n");
+    eprintf("source created.\n");
 
-    float mn=0, mx=1;
+    float mn[]={0,0,0}, mx[]={1,2,3};
     sendsig = mdev_add_output(source, "/outsig", 3, 'f', 0, &mn, &mx);
 
-    printf("Output signal /outsig registered.\n");
-    printf("Number of outputs: %d\n", mdev_num_outputs(source));
+    eprintf("Output signal /outsig registered.\n");
+    eprintf("Number of outputs: %d\n", mdev_num_outputs(source));
     return 0;
 
   error:
@@ -41,16 +50,10 @@ int setup_source()
 void cleanup_source()
 {
     if (source) {
-        if (router) {
-            printf("Removing router.. ");
-            fflush(stdout);
-            mdev_remove_router(source, router);
-            printf("ok\n");
-        }
-        printf("Freeing source.. ");
+        eprintf("Freeing source.. ");
         fflush(stdout);
         mdev_free(source);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
@@ -60,7 +63,7 @@ void insig_handler(mapper_signal sig, mapper_db_signal props,
 {
     if (value) {
         float *f = value;
-        printf("handler: Got [%f, %f, %f]\n", f[0], f[1], f[2]);
+        eprintf("handler: Got [%f, %f, %f]\n", f[0], f[1], f[2]);
     }
     received++;
 }
@@ -70,14 +73,14 @@ int setup_destination()
     destination = mdev_new("testrecv", 0, 0);
     if (!destination)
         goto error;
-    printf("destination created.\n");
+    eprintf("destination created.\n");
 
-    float mn=0, mx=1;
+    float mn[]={0,0,0}, mx[]={1,1,1};
     recvsig = mdev_add_input(destination, "/insig", 3, 'f', 0,
                              &mn, &mx, insig_handler, 0);
 
-    printf("Input signal /insig registered.\n");
-    printf("Number of inputs: %d\n", mdev_num_inputs(destination));
+    eprintf("Input signal /insig registered.\n");
+    eprintf("Number of inputs: %d\n", mdev_num_inputs(destination));
     return 0;
 
   error:
@@ -87,39 +90,32 @@ int setup_destination()
 void cleanup_destination()
 {
     if (destination) {
-        printf("Freeing destination.. ");
+        eprintf("Freeing destination.. ");
         fflush(stdout);
         mdev_free(destination);
-        printf("ok\n");
+        eprintf("ok\n");
     }
 }
 
-int setup_router()
+int setup_connections()
 {
-    const char *host = "localhost";
-    router = mapper_router_new(source, host, destination->admin->port, 
-                               mdev_name(destination), 0);
-    mdev_add_router(source, router);
-    printf("Router to %s:%d added.\n", host, destination->admin->port);
-
-    char signame_in[1024];
-    if (!msig_full_name(recvsig, signame_in, 1024)) {
-        printf("Could not get destination signal name.\n");
-        return 1;
-    }
+    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
+
+    char src_name[1024], dest_name[1024];
+    mapper_monitor_link(mon, mdev_name(source),
+                        mdev_name(destination), 0, 0);
 
-    char signame_out[1024];
-    if (!msig_full_name(sendsig, signame_out, 1024)) {
-        printf("Could not get source signal name.\n");
-        return 1;
+    msig_full_name(sendsig, src_name, 1024);
+    msig_full_name(recvsig, dest_name, 1024);
+    mapper_monitor_connect(mon, src_name, dest_name, 0, 0);
+
+    // wait until connection has been established
+    while (!source->routers || !source->routers->n_connections) {
+        mdev_poll(source, 1);
+        mdev_poll(destination, 1);
     }
 
-    printf("Mapping signal %s -> %s\n", signame_out, signame_in);
-    mapper_connection c = mapper_router_add_connection(router, sendsig,
-                                                       recvsig->props.name,
-                                                       'f', 3);
-    const char *expr = "y=x*10";
-    mapper_connection_set_expression(c, expr);
+    mapper_monitor_free(mon);
 
     return 0;
 }
@@ -135,43 +131,81 @@ void wait_ready()
 
 void loop()
 {
-    printf("Polling device..\n");
-    int i;
-    for (i = 0; i < 10; i++) {
+    eprintf("Polling device..\n");
+    int i = 0;
+    while ((!terminate || i < 50) && !done) {
         mdev_poll(source, 0);
         float v[3];
         v[0] = (float)i;
         v[1] = (float)i+1;
         v[2] = (float)i+2;
-        printf("Updating signal %s to [%f, %f, %f]\n",
+        eprintf("Updating signal %s to [%f, %f, %f]\n",
                sendsig->props.name, v[0], v[1], v[2]);
         msig_update(sendsig, v, 1, MAPPER_NOW);
         sent++;
-        usleep(250 * 1000);
-        mdev_poll(destination, 0);
+        mdev_poll(destination, 100);
+        i++;
+
+        if (!verbose) {
+            printf("\r  Sent: %4i, Received: %4i   ", sent, received);
+            fflush(stdout);
+        }
     }
 }
 
-int main()
+void ctrlc(int sig)
 {
-    int result = 0;
+    done = 1;
+}
+
+int main(int argc, char **argv)
+{
+    int i, j, result = 0;
+
+    // process flags for -v verbose, -t terminate, -h help
+    for (i = 1; i < argc; i++) {
+        if (argv[i] && argv[i][0] == '-') {
+            int len = strlen(argv[i]);
+            for (j = 1; j < len; j++) {
+                switch (argv[i][j]) {
+                    case 'h':
+                        printf("testvector.c: possible arguments "
+                               "-q quiet (suppress output), "
+                               "-t terminate automatically, "
+                               "-h help\n");
+                        return 1;
+                        break;
+                    case 'q':
+                        verbose = 0;
+                        break;
+                    case 't':
+                        terminate = 1;
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+    signal(SIGINT, ctrlc);
 
     if (setup_destination()) {
-        printf("Error initializing destination.\n");
+        eprintf("Error initializing destination.\n");
         result = 1;
         goto done;
     }
 
     if (setup_source()) {
-        printf("Done initializing source.\n");
+        eprintf("Done initializing source.\n");
         result = 1;
         goto done;
     }
 
     wait_ready();
 
-    if (setup_router()) {
-        printf("Error initializing router.\n");
+    if (autoconnect && setup_connections()) {
+        eprintf("Error connecting signals.\n");
         result = 1;
         goto done;
     }
@@ -179,9 +213,9 @@ int main()
     loop();
 
     if (sent != received) {
-        printf("Not all sent messages were received.\n");
-        printf("Updated value %d time%s, but received %d of them.\n",
-               sent, sent == 1 ? "" : "s", received);
+        eprintf("Not all sent messages were received.\n");
+        eprintf("Updated value %d time%s, but received %d of them.\n",
+                sent, sent == 1 ? "" : "s", received);
         result = 1;
     }
 

-- 
libmapper packaging



More information about the pkg-multimedia-commits mailing list