aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Jurish <mukau@users.sourceforge.net>2009-02-14 20:34:47 +0000
committerBryan Jurish <mukau@users.sourceforge.net>2009-02-14 20:34:47 +0000
commitc3764252f3c566cdd0f325eac2401378ab92775f (patch)
treeb6b0563c459d192c7b1910b8a591e0c481fbe2c0
parent4f69b08833151fab744e64a16ae8016a123fa929 (diff)
+ added hello/ : demonstrate use of autotools utilities for Pd externals
svn path=/trunk/externals/moocow/; revision=10768
-rw-r--r--hello/Makefile.am63
-rw-r--r--hello/README.cvs13
-rw-r--r--hello/README.html277
-rw-r--r--hello/README.pod260
l---------hello/autogen.sh1
-rw-r--r--hello/configure.ac62
-rw-r--r--hello/goodbye-help.pd6
-rw-r--r--hello/goodbye.c83
-rw-r--r--hello/hello-help.pd6
-rw-r--r--hello/hello.c94
-rw-r--r--hello/heynow.pd4
l---------hello/m41
l---------hello/mooPdUtils.h1
l---------hello/pdexternal.am1
-rw-r--r--hello/pod2htmi.tmp2
15 files changed, 874 insertions, 0 deletions
diff --git a/hello/Makefile.am b/hello/Makefile.am
new file mode 100644
index 0000000..484fe0c
--- /dev/null
+++ b/hello/Makefile.am
@@ -0,0 +1,63 @@
+# File: ./Makefile.am
+# Package: hello
+# Description:
+# + simple automake file for example pd external
+#
+# Process this file with Automake to create Makefile.in.
+#-----------------------------------------------------------------------
+
+##-----------------------------------------------------------------------
+## Options & Subdirectories
+
+##-- aclocal options (top level only)
+ACLOCAL_AMFLAGS = -I m4
+
+## --- automake options (top level only)
+#AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip
+AUTOMAKE_OPTIONS = foreign
+
+## --- recursion subdirectories
+#SUBDIRS = config src
+
+#-----------------------------------------------------------------------
+# Includes
+#-----------------------------------------------------------------------
+include $(top_srcdir)/pdexternal.am
+
+##-----------------------------------------------------------------------
+## Pd Externals: hacked _PROGRAMS
+#-----------------------------------------------------------------------
+
+pdexterns_PROGRAMS = hello
+if WANT_OBJECT_EXTERNALS
+ pdexterns_PROGRAMS += goodbye
+endif
+
+##-- possible single-object externals (as _PROGRAMS)
+EXTRA_PROGRAMS = goodbye
+
+##-- sources
+hello_SOURCES = hello.c mooPdUtils.h
+goodbye_SOURCES = goodbye.c mooPdUtils.h
+
+##-- patches
+pdexterns_DATA = heynow.pd
+
+##-- documentation
+pddoc_DATA = \
+ hello-help.pd \
+ goodbye-help.pd
+
+#-----------------------------------------------------------------------
+# Additional Variables & Rules: PODS
+#-----------------------------------------------------------------------
+PODS = README.pod
+
+all-local: $(PODS:.pod=.txt)
+
+##-----------------------------------------------------------------------
+## Variables: distribution
+#-----------------------------------------------------------------------
+
+## --- extra distribution files
+#EXTRA_DIST += $(PODS:.pod=.txt)
diff --git a/hello/README.cvs b/hello/README.cvs
new file mode 100644
index 0000000..2a0ee0c
--- /dev/null
+++ b/hello/README.cvs
@@ -0,0 +1,13 @@
+To build from cvs, do the following:
+
+ ./autogen.sh
+ ./configure
+ make
+ make install
+
+NOTE: The README.txt file in the distribution
+is auto-generated from perl ".pod" format by
+the "pod2text" included in most perl distributions.
+
+marmosets,
+ Bryan
diff --git a/hello/README.html b/hello/README.html
new file mode 100644
index 0000000..8f0d7a2
--- /dev/null
+++ b/hello/README.html
@@ -0,0 +1,277 @@
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>DESCRIPTION</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:root@localhost" />
+</head>
+
+<body style="background-color: white">
+
+<p><a name="__index__"></a></p>
+<!-- INDEX BEGIN -->
+
+<ul>
+
+ <li><a href="#description">DESCRIPTION</a></li>
+ <li><a href="#installation">INSTALLATION</a></li>
+ <li><a href="#configuration_options">CONFIGURATION OPTIONS</a></li>
+ <li><a href="#howto">HOWTO</a></li>
+ <ul>
+
+ <li><a href="#files">Files</a></li>
+ <li><a href="#running_aclocal">Running aclocal</a></li>
+ <li><a href="#configure_ac">configure.ac</a></li>
+ <li><a href="#makefile_am">Makefile.am</a></li>
+ <li><a href="#ax_pd_external_m4">ax_pd_external.m4</a></li>
+ <li><a href="#pdexternal_am">pdexternal.am</a></li>
+ <li><a href="#multilibs_and_singleobject_externals">Multilibs and Single-Object Externals</a></li>
+ </ul>
+
+ <li><a href="#acknowledgements">ACKNOWLEDGEMENTS</a></li>
+ <li><a href="#author">AUTHOR</a></li>
+</ul>
+<!-- INDEX END -->
+
+<hr />
+<p>README for example pd external package 'hello'</p>
+<p>Last updated for hello v0.01</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>The 'hello' package is an example external package intended
+to demonstrate one way of using GNU autotools (automake, autoconf, autoheader)
+to manage a Pd external distribution.</p>
+<p>See <a href="#howto">HOWTO</a> for a developer-oriented introduction.</p>
+<p>
+</p>
+<hr />
+<h1><a name="installation">INSTALLATION</a></h1>
+<p>Issue the following commands to the shell:</p>
+<pre>
+ cd PACKAGE-XX.YY (or wherever you extracted the distribution)
+ ./configure
+ make
+ make install</pre>
+<p>
+</p>
+<hr />
+<h1><a name="configuration_options">CONFIGURATION OPTIONS</a></h1>
+<p>The 'configure' script supports the following options, among others:</p>
+<ul>
+<li><strong><a name="item__2d_2dhelp">--help</a></strong>
+
+<p>Output a brief usage summary of the 'configure' script,
+including a list of supported options and influential
+environment variables.</p>
+</li>
+<li><strong><a name="item__2d_2denable_2ddebug__2c__2d_2ddisable_2ddebug">--enable-debug , --disable-debug</a></strong>
+
+<p>Whether to enable verbose debugging messages.
+Default=no.</p>
+</li>
+<li><strong><a name="item__2d_2dwith_2dpd_2ddir_3dpd_dir">--with-pd-dir=PD_DIR</a></strong>
+
+<p>Set base Pd directory. Default PREFIX/pd</p>
+</li>
+<li><strong><a name="item__2d_2dwith_2dpd_2dinclude_3dpd_inc">--with-pd-include=PD_INC</a></strong>
+
+<p>Where to look for m_pd.h</p>
+</li>
+<li><strong><a name="item__2d_2dwith_2dpd_2dextdir_3dpd_externs">--with-pd-extdir=PD_EXTERNS</a></strong>
+
+<p>Where to install compiled externals. Default: PD_DIR/externs</p>
+</li>
+<li><strong><a name="item__2d_2denable_2dobject_2dexternals__2c__2d_2ddisabl">--enable-object-externals , --disable-object-externals</a></strong>
+
+<p>Whether to build single-object externals or only multilibs (default),
+for packages which support both.</p>
+</li>
+</ul>
+<p>
+</p>
+<hr />
+<h1><a name="howto">HOWTO</a></h1>
+<p>This section provides a brief developer-oriented description of
+how to use GNU autotools to manage your own Pd external package.</p>
+<p>
+</p>
+<h2><a name="files">Files</a></h2>
+<dl>
+<dt><strong><a name="item___top_srcdir__m4">$(top_srcdir)/m4</a></strong></dt>
+
+<dd>
+<p>The directory m4/ should be copied to your top-level package directory.
+See <a href="#ax_pd_external_m4">ax_pd_external.m4</a> for details.</p>
+</dd>
+<dt><strong><a name="item___top_srcdir__pdexternal_am">$(top_srcdir)/pdexternal.am</a></strong></dt>
+
+<dd>
+<p>The file pdexternal.am should be copied to your top-level package directory
+See <a href="#pdexternal_am">pdexternal.am</a> for details.</p>
+</dd>
+<dt><strong><a name="item_h">$(srcdir)/mooPdUtils.h (optional)</a></strong></dt>
+
+<dd>
+<p>The file mooPdUtils.h may be copied to your source-level directory.
+Currently, this only provides a PDEXT_UNUSED macro to avoid annoying
+gcc warnings under -W.</p>
+</dd>
+</dl>
+<p>
+</p>
+<h2><a name="running_aclocal">Running aclocal</a></h2>
+<p>You must pass the ``-I m4'' flag to aclocal when you call it.
+For maintainer-mode rebuilding and autoreconf, you should add
+the following to your top-level Makefile.am:</p>
+<pre>
+ ACLOCAL_AMFLAGS = -I m4</pre>
+<p>See the example package's autogen.sh for a useful wrapper script.</p>
+<p>
+</p>
+<h2><a name="configure_ac">configure.ac</a></h2>
+<p>You must call the macro AX_PD_EXTERNAL from configure.ac.
+Before doing so (and before calling AC_PROG_CC), make sure
+that you cache the values of important user flags in shell
+variables:</p>
+<pre>
+ ##-- save user's CFLAGS,CPPFLAGS
+ UCPPFLAGS=&quot;$CPPFLAGS&quot;
+ UCFLAGS=&quot;$CFLAGS&quot;
+ ULDFLAGS=&quot;$LDFLAGS&quot;</pre>
+<pre>
+ ##-- Pd external stuff
+ AX_PD_EXTERNAL</pre>
+<p>See the example package's configure.ac for a complete working example.</p>
+<p>
+</p>
+<h2><a name="makefile_am">Makefile.am</a></h2>
+<p>You probably want to include $(top_srcdir)/pdexternal.am in
+your Makefile.am(s). This will allow you to build Pd externals
+as ``_PROGRAMS'' targets. In particular, pdext_PROGRAMS targets
+will be built as externals and installed in PDEXT_DIR (see above).</p>
+<p>See the example package's Makefile.am for a complete working example.</p>
+<dl>
+<dt><strong><a name="item_externals">Externals</a></strong></dt>
+
+<dd>
+<p>To build &amp; install the external ``hello.$(PDEXT)'', add the
+following to Makefile.am:</p>
+<pre>
+ pdexterns_PROGRAMS = hello
+ hello_SOURCES = hello.c mooPdUtils.h</pre>
+</dd>
+<dt><strong><a name="item_abstractions">Abstractions</a></strong></dt>
+
+<dd>
+<p>To install the abstraction ``heynow.pd'', add the
+following to Makefile.am:</p>
+<pre>
+ pdexterns_DATA = heynow.pd</pre>
+</dd>
+<dt><strong><a name="item_documentation">Documentation</a></strong></dt>
+
+<dd>
+<p>To install the documentation patch ``hello-help.pd'', add the
+following to Makefile.am:</p>
+<pre>
+ pddoc_DATA = hello-help.pd</pre>
+</dd>
+</dl>
+<p>
+</p>
+<h2><a name="ax_pd_external_m4">ax_pd_external.m4</a></h2>
+<p>The AX_PD_EXTERNAL macro defined in m4/ax_pd_external.m4
+is intended to perform all common autoconf-level
+checks and substitutions necessary for building Pd external packages on
+various systems. Among other things, this includes:</p>
+<ul>
+<li>
+<p>Providing --with-FEATURE and --enable-FEATURE arguments such as
+--with-pd-dir (see <a href="#configuration_options">CONFIGURATION OPTIONS</a>, above).</p>
+</li>
+<li>
+<p>Defining automake-style ``Xdir'' variables for easy definition
+of package externals, abstractions, and documentation.</p>
+</li>
+<li>
+<p>Checking for the required header ``m_pd.h''.</p>
+</li>
+<li>
+<p>Defining platform-dependent compiler and linker flags for
+building Pd externals, and adding these to the relevant
+system variables (CPPFLAGS, CFLAGS, LDFLAGS, etc.)</p>
+</li>
+</ul>
+<p>See the comments at the top of m4/ax_pd_external.m4 for
+more details on the AX_PD_EXTERNAL macro.</p>
+<p>
+</p>
+<h2><a name="pdexternal_am">pdexternal.am</a></h2>
+<p>pdexternal.am is intended to be included in your package's Makefile.am.
+It redefines the automake EXEEXT to allow building Pd externals using
+automake's _PROGRAMS targets. Additionally, it defines the
+automake varibles PDEXT, SUFFIXES, EXTRA_DIST, CLEANFILES, DISTCLEANFILES,
+and MAINTAINERCLEANFILES.</p>
+<p>
+</p>
+<h2><a name="multilibs_and_singleobject_externals">Multilibs and Single-Object Externals</a></h2>
+<p>You can use automake's EXTRA_PROGRAMS variable, together
+with the pdexterns_PROGRAMS automake target, the automake conditional
+WANT_OBJECT_EXTERNALS, and the C preprocessor macro WANT_OBJECT_EXTERNALS
+to allow building single-object-externals or multilibs from a single
+source distribution.</p>
+<p>Makefile.am should contain something like:</p>
+<pre>
+ ##-- always build these externals
+ pdexterns_PROGRAMS = hello</pre>
+<pre>
+ ##-- potential single-object externals (as _PROGRAMS)
+ EXTRA_PROGRAMS = goodbye</pre>
+<pre>
+ ##-- build single-object externals?
+ if WANT_OBJECT_EXTERNALS
+ pdexterns_PROGRAMS += goodbye
+ endif</pre>
+<p>If single-object externals were requested by the user,
+then the C preprocessor macro WANT_OBJECT_EXTERNALS will be defined
+by autoheader, to allow you to
+conditionally #include&lt;&gt; the EXTRA_PROGRAMS sources in your
+top-level multilib source file if desired. In the above example,
+hello.c might contain:</p>
+<pre>
+ #ifdef HAVE_CONFIG_H
+ # include &quot;config.h&quot;
+ #endif</pre>
+<pre>
+ #ifndef WANT_OBJECT_EXTERNALS
+ /*-- Multilib build: include source for the goodbye external --*/
+ # include &quot;goodbye.c&quot;
+ #endif</pre>
+<pre>
+ /*... local definitions etc. go here ...*/</pre>
+<pre>
+ void hello_setup(void)
+ {
+ #ifndef WANT_OBJECT_EXTERNALS
+ goodbye_setup();
+ #endif</pre>
+<pre>
+ /*... local setup code goes here ...*/
+ }</pre>
+<p>
+</p>
+<hr />
+<h1><a name="acknowledgements">ACKNOWLEDGEMENTS</a></h1>
+<p>PD by Miller Puckette and others.</p>
+<p>
+</p>
+<hr />
+<h1><a name="author">AUTHOR</a></h1>
+<p>Bryan Jurish &lt;<a href="mailto:moocow@ling.uni-potsdam.de">moocow@ling.uni-potsdam.de</a>&gt;</p>
+
+</body>
+
+</html>
diff --git a/hello/README.pod b/hello/README.pod
new file mode 100644
index 0000000..8941f49
--- /dev/null
+++ b/hello/README.pod
@@ -0,0 +1,260 @@
+=pod
+
+README for example pd external package 'hello'
+
+Last updated for hello v0.01
+
+=head1 DESCRIPTION
+
+The 'hello' package is an example external package intended
+to demonstrate one way of using GNU autotools (automake, autoconf, autoheader)
+to manage a Pd external distribution.
+
+See L</"HOWTO"> for a developer-oriented introduction.
+
+
+=head1 INSTALLATION
+
+Issue the following commands to the shell:
+
+ cd PACKAGE-XX.YY (or wherever you extracted the distribution)
+ ./configure
+ make
+ make install
+
+=head1 CONFIGURATION OPTIONS
+
+The 'configure' script supports the following options, among others:
+
+=over 4
+
+=item * --help
+
+Output a brief usage summary of the 'configure' script,
+including a list of supported options and influential
+environment variables.
+
+=item * --enable-debug , --disable-debug
+
+Whether to enable verbose debugging messages.
+Default=no.
+
+=item * --with-pd-dir=PD_DIR
+
+Set base Pd directory. Default PREFIX/pd
+
+=item * --with-pd-include=PD_INC
+
+Where to look for m_pd.h
+
+=item * --with-pd-extdir=PD_EXTERNS
+
+Where to install compiled externals. Default: PD_DIR/externs
+
+=item * --enable-object-externals , --disable-object-externals
+
+Whether to build single-object externals or only multilibs (default),
+for packages which support both.
+
+=back
+
+
+=head1 HOWTO
+
+This section provides a brief developer-oriented description of
+how to use GNU autotools to manage your own Pd external package.
+
+=head2 Files
+
+=over 4
+
+=item $(top_srcdir)/m4
+
+The directory m4/ should be copied to your top-level package directory.
+See L</"ax_pd_external.m4"> for details.
+
+=item $(top_srcdir)/pdexternal.am
+
+The file pdexternal.am should be copied to your top-level package directory
+See L</"pdexternal.am"> for details.
+
+=item $(srcdir)/mooPdUtils.h (optional)
+
+The file mooPdUtils.h may be copied to your source-level directory.
+Currently, this only provides a PDEXT_UNUSED macro to avoid annoying
+gcc warnings under -W.
+
+=back
+
+
+=head2 Running aclocal
+
+You must pass the "-I m4" flag to aclocal when you call it.
+For maintainer-mode rebuilding and autoreconf, you should add
+the following to your top-level Makefile.am:
+
+ ACLOCAL_AMFLAGS = -I m4
+
+See the example package's autogen.sh for a useful wrapper script.
+
+
+=head2 configure.ac
+
+You must call the macro AX_PD_EXTERNAL from configure.ac.
+Before doing so (and before calling AC_PROG_CC), make sure
+that you cache the values of important user flags in shell
+variables:
+
+ ##-- save user's CFLAGS,CPPFLAGS
+ UCPPFLAGS="$CPPFLAGS"
+ UCFLAGS="$CFLAGS"
+ ULDFLAGS="$LDFLAGS"
+
+ ##-- Pd external stuff
+ AX_PD_EXTERNAL
+
+See the example package's configure.ac for a complete working example.
+
+
+=head2 Makefile.am
+
+You probably want to include $(top_srcdir)/pdexternal.am in
+your Makefile.am(s). This will allow you to build Pd externals
+as "_PROGRAMS" targets. In particular, pdext_PROGRAMS targets
+will be built as externals and installed in PDEXT_DIR (see above).
+
+See the example package's Makefile.am for a complete working example.
+
+=over 4
+
+=item Externals
+
+To build & install the external "hello.$(PDEXT)", add the
+following to Makefile.am:
+
+ pdexterns_PROGRAMS = hello
+ hello_SOURCES = hello.c mooPdUtils.h
+
+=item Abstractions
+
+To install the abstraction "heynow.pd", add the
+following to Makefile.am:
+
+ pdexterns_DATA = heynow.pd
+
+=item Documentation
+
+To install the documentation patch "hello-help.pd", add the
+following to Makefile.am:
+
+ pddoc_DATA = hello-help.pd
+
+=back
+
+=cut
+
+=pod
+
+=head2 ax_pd_external.m4
+
+The AX_PD_EXTERNAL macro defined in m4/ax_pd_external.m4
+is intended to perform all common autoconf-level
+checks and substitutions necessary for building Pd external packages on
+various systems. Among other things, this includes:
+
+=over 4
+
+=item *
+
+Providing --with-FEATURE and --enable-FEATURE arguments such as
+--with-pd-dir (see L</"CONFIGURATION OPTIONS">, above).
+
+=item *
+
+Defining automake-style "Xdir" variables for easy definition
+of package externals, abstractions, and documentation.
+
+=item *
+
+Checking for the required header "m_pd.h".
+
+=item *
+
+Defining platform-dependent compiler and linker flags for
+building Pd externals, and adding these to the relevant
+system variables (CPPFLAGS, CFLAGS, LDFLAGS, etc.)
+
+=back
+
+See the comments at the top of m4/ax_pd_external.m4 for
+more details on the AX_PD_EXTERNAL macro.
+
+
+=head2 pdexternal.am
+
+pdexternal.am is intended to be included in your package's Makefile.am.
+It redefines the automake EXEEXT to allow building Pd externals using
+automake's _PROGRAMS targets. Additionally, it defines the
+automake varibles PDEXT, SUFFIXES, EXTRA_DIST, CLEANFILES, DISTCLEANFILES,
+and MAINTAINERCLEANFILES.
+
+
+=head2 Multilibs and Single-Object Externals
+
+You can use automake's EXTRA_PROGRAMS variable, together
+with the pdexterns_PROGRAMS automake target, the automake conditional
+WANT_OBJECT_EXTERNALS, and the C preprocessor macro WANT_OBJECT_EXTERNALS
+to allow building single-object-externals or multilibs from a single
+source distribution.
+
+Makefile.am should contain something like:
+
+ ##-- always build these externals
+ pdexterns_PROGRAMS = hello
+
+ ##-- potential single-object externals (as _PROGRAMS)
+ EXTRA_PROGRAMS = goodbye
+
+ ##-- build single-object externals?
+ if WANT_OBJECT_EXTERNALS
+ pdexterns_PROGRAMS += goodbye
+ endif
+
+If single-object externals were requested by the user,
+then the C preprocessor macro WANT_OBJECT_EXTERNALS will be defined
+by autoheader, to allow you to
+conditionally #include<> the EXTRA_PROGRAMS sources in your
+top-level multilib source file if desired. In the above example,
+hello.c might contain:
+
+ #ifdef HAVE_CONFIG_H
+ # include "config.h"
+ #endif
+
+ #ifndef WANT_OBJECT_EXTERNALS
+ /*-- Multilib build: include source for the goodbye external --*/
+ # include "goodbye.c"
+ #endif
+
+ /*... local definitions etc. go here ...*/
+
+ void hello_setup(void)
+ {
+ #ifndef WANT_OBJECT_EXTERNALS
+ goodbye_setup();
+ #endif
+
+ /*... local setup code goes here ...*/
+ }
+
+=cut
+
+=pod
+
+=head1 ACKNOWLEDGEMENTS
+
+PD by Miller Puckette and others.
+
+=head1 AUTHOR
+
+Bryan Jurish E<lt>moocow@ling.uni-potsdam.deE<gt>
diff --git a/hello/autogen.sh b/hello/autogen.sh
new file mode 120000
index 0000000..3fbe8b5
--- /dev/null
+++ b/hello/autogen.sh
@@ -0,0 +1 @@
+../common/autogen.sh \ No newline at end of file
diff --git a/hello/configure.ac b/hello/configure.ac
new file mode 100644
index 0000000..fe3ffb0
--- /dev/null
+++ b/hello/configure.ac
@@ -0,0 +1,62 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl -- for a clean build, run: aclocal && autoheader && automake -a && autoconf
+AC_PREREQ(2.5)
+
+##-- Some handy macros
+define([THE_PACKAGE_NAME], [hello])
+define([THE_PACKAGE_VERSION], [0.01])
+define([THE_PACKAGE_AUTHOR], [moocow@ling.uni-potsdam.de])
+
+AC_INIT(THE_PACKAGE_NAME, THE_PACKAGE_VERSION, THE_PACKAGE_AUTHOR)
+
+##-- Additional m4 macros
+AC_CONFIG_MACRO_DIR(m4)
+
+##-- source & aux
+dnl AC_CONFIG_AUX_DIR(config)
+AC_CONFIG_AUX_DIR(.)
+
+##-- save user's CFLAGS,CPPFLAGS
+UCPPFLAGS="$CPPFLAGS"
+UCFLAGS="$CFLAGS"
+ULDFLAGS="$LDFLAGS"
+
+##-- use automake, autoheader
+AM_INIT_AUTOMAKE(THE_PACKAGE_NAME, THE_PACKAGE_VERSION)
+AM_CONFIG_HEADER(config.h)
+
+##-- Default prefix
+AC_PREFIX_DEFAULT(/usr/local)
+
+dnl ----- maintainer mode
+dnl + enables "maintainer mode" only with ./configure --enable-maintainer-mode
+dnl - causes make __never__ to invoke 'config/missing' (i.e. any autotools)
+dnl - basically a hack to avoid version mismatches in autoconf, automake, etc.
+dnl for autobuilds from SVN
+dnl + maintainer should call ./configure --enable-maintainer-mode, and must keep
+dnl SVN sources consistent
+AM_MAINTAINER_MODE
+dnl -----/maintainer mode
+
+##-- other flags (?)
+dnl AC_ISC_POSIX
+
+##vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+## Pd external checks
+AX_PD_EXTERNAL
+## /pd external common
+##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+##vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+## Local: headers
+AC_MSG_NOTICE([performing local configuration actions])
+## /local: headers
+##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+##-- local: restore user's CFLAGS (now done by AX_PD_EXTERNAL)
+#CFLAGS="$UCFLAGS"
+#CPPFLAGS="$UCPPFLAGS"
+#LDFLAGS="$ULDFLAGS"
+
+##-- local: output
+AC_OUTPUT(Makefile)
diff --git a/hello/goodbye-help.pd b/hello/goodbye-help.pd
new file mode 100644
index 0000000..d8ce41f
--- /dev/null
+++ b/hello/goodbye-help.pd
@@ -0,0 +1,6 @@
+#N canvas 80 40 420 146 10;
+#X msg 37 47 bang;
+#X text 103 47 bang : print a greeting;
+#X text 31 7 goodbye : example external;
+#X obj 37 80 goodbye;
+#X connect 0 0 3 0;
diff --git a/hello/goodbye.c b/hello/goodbye.c
new file mode 100644
index 0000000..b758035
--- /dev/null
+++ b/hello/goodbye.c
@@ -0,0 +1,83 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: goodbye.c
+ * Author: Bryan Jurish <moocow@ling.uni-potsdam.de>
+ * Description: dummy external for autotools example
+ *
+ * Copyright (c) 2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *=============================================================================*/
+#include <m_pd.h>
+#include "mooPdUtils.h"
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+
+/*=====================================================================
+ * Structures and Types
+ *=====================================================================*/
+static t_class *goodbye_class;
+
+typedef struct _goodbye
+{
+ t_object x_obj;
+} t_goodbye;
+
+
+/*--------------------------------------------------------------------
+ * new
+ */
+static void *goodbye_new(void)
+{
+ t_goodbye *x = (t_goodbye *)pd_new(goodbye_class);
+ return x;
+}
+
+/*--------------------------------------------------------------------
+ * bang
+ */
+static void goodbye_bang(PDEXT_UNUSED t_goodbye *x)
+{
+ post("goodbye, Pd!");
+}
+
+/*=====================================================================
+ * Setup
+ *=====================================================================*/
+void goodbye_setup(void)
+{
+ post("");
+ post("goodbye: example external version " PACKAGE_VERSION " by Bryan Jurish");
+ post("goodbye: compiled by " PACKAGE_BUILD_USER " on " PACKAGE_BUILD_DATE);
+
+ goodbye_class = class_new(gensym("goodbye"),
+ (t_newmethod)goodbye_new,
+ 0,
+ sizeof(t_goodbye),
+ CLASS_DEFAULT,
+ 0);
+
+ //-- help method
+ class_addmethod(goodbye_class, (t_method)goodbye_bang, gensym("bang"), A_NULL);
+}
diff --git a/hello/hello-help.pd b/hello/hello-help.pd
new file mode 100644
index 0000000..f739083
--- /dev/null
+++ b/hello/hello-help.pd
@@ -0,0 +1,6 @@
+#N canvas 54 0 420 146 10;
+#X obj 37 80 hello;
+#X msg 37 47 bang;
+#X text 103 47 bang : print a greeting;
+#X text 31 7 hello : example external;
+#X connect 1 0 0 0;
diff --git a/hello/hello.c b/hello/hello.c
new file mode 100644
index 0000000..1419619
--- /dev/null
+++ b/hello/hello.c
@@ -0,0 +1,94 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: hello.c
+ * Author: Bryan Jurish <moocow@ling.uni-potsdam.de>
+ * Description: dummy external for autotools example
+ *
+ * Copyright (c) 2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *=============================================================================*/
+#include <m_pd.h>
+#include "mooPdUtils.h"
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+
+/*=====================================================================
+ * Structures and Types
+ *=====================================================================*/
+static t_class *hello_class;
+
+typedef struct _hello
+{
+ t_object x_obj;
+} t_hello;
+
+
+/*=====================================================================
+ * Multilib (see also _setup() method)
+ *=====================================================================*/
+#ifndef WANT_OBJECT_EXTERNALS
+# include "goodbye.c"
+#endif
+
+/*--------------------------------------------------------------------
+ * new
+ */
+static void *hello_new(void)
+{
+ t_hello *x = (t_hello *)pd_new(hello_class);
+ return x;
+}
+
+/*--------------------------------------------------------------------
+ * bang
+ */
+static void hello_bang(PDEXT_UNUSED t_hello *x)
+{
+ post("hello, Pd!");
+}
+
+/*=====================================================================
+ * Setup
+ *=====================================================================*/
+void hello_setup(void)
+{
+ post("");
+ post("hello: example external version " PACKAGE_VERSION " by Bryan Jurish");
+ post("hello: compiled by " PACKAGE_BUILD_USER " on " PACKAGE_BUILD_DATE);
+
+ hello_class = class_new(gensym("hello"),
+ (t_newmethod)hello_new,
+ 0,
+ sizeof(t_hello),
+ CLASS_DEFAULT,
+ 0);
+
+ //-- help method
+ class_addmethod(hello_class, (t_method)hello_bang, gensym("bang"), A_NULL);
+
+#ifndef WANT_OBJECT_EXTERNALS
+ goodbye_setup();
+#endif
+}
diff --git a/hello/heynow.pd b/hello/heynow.pd
new file mode 100644
index 0000000..5baaf3b
--- /dev/null
+++ b/hello/heynow.pd
@@ -0,0 +1,4 @@
+#N canvas 0 0 450 300 10;
+#X obj 100 26 inlet;
+#X obj 100 52 print heynow;
+#X connect 0 0 1 0;
diff --git a/hello/m4 b/hello/m4
new file mode 120000
index 0000000..83ffc0c
--- /dev/null
+++ b/hello/m4
@@ -0,0 +1 @@
+../common/m4 \ No newline at end of file
diff --git a/hello/mooPdUtils.h b/hello/mooPdUtils.h
new file mode 120000
index 0000000..677b39d
--- /dev/null
+++ b/hello/mooPdUtils.h
@@ -0,0 +1 @@
+../common/mooPdUtils.h \ No newline at end of file
diff --git a/hello/pdexternal.am b/hello/pdexternal.am
new file mode 120000
index 0000000..914f4be
--- /dev/null
+++ b/hello/pdexternal.am
@@ -0,0 +1 @@
+../common/pdexternal.am \ No newline at end of file
diff --git a/hello/pod2htmi.tmp b/hello/pod2htmi.tmp
new file mode 100644
index 0000000..61e86d9
--- /dev/null
+++ b/hello/pod2htmi.tmp
@@ -0,0 +1,2 @@
+
+.