Menu

Tree [34f9d6] master /
 History

HTTPS access


File Date Author Commit
 add-on 2016-07-31 Bruce Korb Bruce Korb [e51f2a] fix bootstrap
 agen5 2016-05-27 Bruce Korb Bruce Korb [5cec51] miscelleaneous cleanups
 autoopts 2016-07-31 Bruce Korb Bruce Korb [e51f2a] fix bootstrap
 columns 2015-08-25 Bruce Korb Bruce Korb [cbd8c8] tar up autogen-ed files for bootstrap
 compat 2015-08-25 Bruce Korb Bruce Korb [cbd8c8] tar up autogen-ed files for bootstrap
 config 2016-08-29 Bruce Korb Bruce Korb [a3bfac] cross platform support
 doc 2016-08-29 Bruce Korb Bruce Korb [92bd95] use "which" to locate local tools
 getdefs 2016-03-06 Bruce Korb Bruce Korb [0926ec] formatting changes
 pkg 2015-10-03 Bruce Korb Bruce Korb [98610e] reproducible build tweaks
 snprintfv 2016-03-06 Bruce Korb Bruce Korb [0926ec] formatting changes
 xml2ag 2016-08-29 Bruce Korb Bruce Korb [a3bfac] cross platform support
 .cright-opts 2011-01-06 Bruce Korb Bruce Korb [a972dd] parse proper xml encodings in config files.
 .gitignore 2015-08-22 Bruce Korb Bruce Korb [2ec6b0] even more ignorance
 AUTHORS 2003-03-11 bkorb bkorb [e33cab] fix broken SNV_EMIT macro
 INSTALL 2015-08-01 Bruce Korb Bruce Korb [49b124] Doc requirement for gnulib
 Makefile.am 2016-03-08 Bruce Korb Bruce Korb [35c952] happy new year & de-uglifications
 NEWS.pre 2016-08-29 Bruce Korb Bruce Korb [34f9d6] update news
 README 2008-08-27 bkorb bkorb [14877b] clean up the set membership handling a bit
 THANKS 2014-08-08 Bruce Korb Bruce Korb [fc1cbc] give credit where credit is due
 TODO-top 2016-05-19 Bruce Korb Bruce Korb [83989f] TODO: add manywarnings gnulib module
 VERSION.pre 2016-03-08 Bruce Korb Bruce Korb [35c952] happy new year & de-uglifications
 announce.txt 2016-03-08 Bruce Korb Bruce Korb [35c952] happy new year & de-uglifications
 bootstrap 2015-08-22 Bruce Korb Bruce Korb [e0c918] use git-version-gen for version number
 configure.ac.pre 2016-08-29 Bruce Korb Bruce Korb [92bd95] use "which" to locate local tools

Read Me

This is AutoGen, an automated text file generator.  It was inspired out of
frustration and hassle with maintaining syncronization between option flag
lists, global variables and usage information.  The desire for more than
#define macros came about when it became apparent that macros alone were
insufficient for reducing the maintenance into a single option list.  The
impetus to actually start something finally came when I had to maintain a
large callout procedure table and associated lookup tables.

Rev 1 of this utility was a set of #define macro expansions.
Rev 2 was a shell script that sort-of did a prototype.
      Much better than just #defines, but still clearly lacking.
Rev 3 had a very kludgy macro definition syntax.
Rev 4 a reworking and simplification of the declarations
Rev 5 the addition of Guile expression processing

Mailing lists can be found on SourceForge:

    autogen-users@lists.sourceforge.net


***  AutoGen requires: ***

1.  POSIX regular expression library.  If not available by default, use
    the --with-regex-* options to specify how to find, use and link to it.
2.  an ANSI C compiler
3.  The Guile version of a Scheme processing language.


***  Installation note: ***

AutoGen does *NOT* contain any compiled-in configuration information.
Therefore, in order to use the templates that come bundled with it,
you must tell AutoGen how to find those templates when you build
applications that use those templates.

1. by doing nothing.  If you do not alter the default data directory,
   AutoGen will search for templates in the directory ../share/autogen,
   relative to the executable directory.  That should generally work.

2. You can tell AutoGen where to look with an environment variable:

   export AUTOGEN_TEMPL_DIR=$prefix/share/autogen

3. You can use an RC file:

   autogen -L $prefix/share/autogen --save=$HOME/.autogenrc

4. If you have an old Guile library, you will find that its error reporting
   does not work so well.  Consequently, you will see "make check" failures
   in the output text where you would expect to find file name and line
   number references for the invalid input.  Please upgrade your Guile lib.

5. You can build and install AutoGen, ensuring you have the
   automake/autoconf/libtool-s needed, and then editing
   agen5/opts.def thus:

   echo "homerc = $prefix/share/autogen;" >> agen5/opts.def

and then rebuilding AutoGen.  However, if you do this latter
"fix", you will have an immobile product.  I hate that, others
like it.  It is, however, up to you.


***  Build note: ***

Sometimes, configure believes it has done a good job when it really hasn't.
It is possible to configure a system in such a way that the Guile headers and
libguile are linked against correctly, but the loader cannot find
libguile.so.xxx.  This is because GCC will silently find the library for
linking, but not set the library dependencies correctly.  The consequence is
that the configure script believes that standard links will produce working
executables.  It won't.  The simplest solution is:

  .../configure --disable-shared

the best solution is to examine the output of ``guile-config link'',
duplicate the ``-L/path/to/lib'' argument, but changing the "-L" to
"-R" or "-Wl,-rpath," or "-rpath" or whatever it happens to be that
works for your platform, and hand that off to configure as the argument
to ``--with-libguile-link''.  "libtool" won't fix it and it's too hard
for me.  Sorry.  Anyway, for example, assume:

  guile-config link

produces:

  -L/opt/sfw/lib -lguile -lm

now run configure as follows:

  .../configure \
    --with-libguile-link='-L/opt/sfw/lib -lguile -lm -R/opt/sfw/lib'

Isn't that special?


***  Bootstrap note: ***

I have some private tools referenced in the various bootstrap scripts.
Unless you have these tools, bootstrap won't work for you.  I intend
to fix this as time permits.  Meanwhile, there is also a tarball in CVS
of all the bootstrap-generated files:
   noag-boot.sh

***  Licensing: ***

  autogen is under GPL, but that does not cause the output produced by
  autogen to be under GPL.  The reason is that the output contains next to
  nothing that comes directly from autogen's source code.  Thus, the output
  is not a "derivative work" of autogen (in the sense of U.S.@: copyright
  law).  The output is primarily a derivative of the input templates.

  On the other hand, the output produced by autogen contains essentially all
  of the input template.  Therefore the output is under the same license,
  with the same copyright holder, as the input that was passed to autogen.