blob: b9485757a6b3c7f35bbef42613d2b4af3c3d5493 [file] [log] [blame]
Apache C++ Standard Library - stdcxx
This experimental branch of the 4.2.0 release adds support for the GNU
"Autotools" suite consisting primarily of GNU Autoconf, Automake, and
Libtool. It preserves the layout and structure of the 4.2.0 release.
This new infrastructure is intended to be distributed as an alternative
to the existing Makefile-based infrastructure in the 4.3.0 release.
First, a word of warning. The current version is incomplete and quite
likely broken. Hack at your own risk.
To "bootstrap" the resulting distribution, run the following commands
in the top-level source directory:
$ libtoolize -c
$ aclocal -I etc/config/macros
$ autoheader
$ automake -ac
$ autoconf
To hack on files in this branch, generate a config.h header file using
the old (existing) configuration method. Rename the header (such as
config.old.h using the name specified in then generate
another config.h header file using the new configure script. Include
the old, renamed config header in the new config.h header (also done
already in Migrate the old config tests (found in
etc/config/src) to Autoconf (m4) macros (found in etc/config/macros).
After completing each new Autoconf macro, remove the correspoding
define(s) from the old config header. Rinse and repeat as necessary.
You can test maintenance/distribution changes really easy by running
'make distcheck'. If the last lines of output look like the following,
then you can safely check in your changes.
stdcxx-4.3.0 archives ready for distribution:
Lastly, there are plenty of specific changes needed in individual files
as indicated by a "TODO:" prefix.
ChangeLog (4.3 Release Plans)
The following list describes the differences between the files and
directories found in the 4.2.0 distribution and this branch.
Existing Distribution Files
* ChangeLog,
No changes required in new infrastructure. Automatically packaged and
* NOTICE.txt,
No changes required to these files but they are not automatically
distributed. Add them to the EXTRA_DIST variable found in
so that they get packaged in the distribution.
* GNUmakefile:
The file name of this makefile (or its current location in the top-level
source directory) may need to change (e.g. because GNU
Make looks for this filename before files named "Makefile". This might
not be a problem for the 4.3 release since the existing infrastructure
is the default but it will likely cause confusion for users who use the
new configure script then type "make" and get a totally unexpected.
* LICENSE.txt:
No changes required to this file but it is not automatically distributed.
Add it to the EXTRA_DIST variable found in so that it gets
packaged in the distribution.
* bin/xbuildgen:
Not really a distribution file, only used for internal testing. Ignore
it and the subdirectory containing it.
* etc,
No changes required to files in these subdirectories but they are not
automatically distributed. Add the subdirectories to the EXTRA_DIST
variable found in so that they get packaged in the
distribution. (The makefiles generated by Autotools are smart enough
to recursively package the subdirectories and all files within them.)
All other distribution files require no further changes and are
automatically packaged in the distribution by implicit reference in the
associated Automake files.
New Distribution Files
The remaining file and directories listed hereafter are specific to the
new infrastructure.
This is a file conventionally found in GNU and other open source
distributions and is automatically packaged in the distribution. It
should contain at least a list of the STDCXX committers and probably
special thanks to any other major contributors to the project.
(Unless the NOTICE.txt file is mandated by Apache distribution policies,
it can be integrated into the AUTHORS file and then removed from
TODO (this file):
Other text files conventionally found in GNU and other open source
distributions that get packaged automatically in the distribution.
Once this experimental branch becomes reasonably stable enough to merge
into the main development baseline, the NEWS file is replaced with
release notes prior to actual distribution. The TODO file contains a
summary of features and enhancements planned for future releases.
The conventional filename for including a copy of the GPL. It is
automatically packaged as part of the distribution by Automake's
Since this branch utilizes quite a bit of code (and includes some GNU
config macros) that was developed with the GPL, it is quite likely that
BOTH license files will need to be included in the distribution.
The GNU Autoconf input file. This is the primary input file used by GNU
Autoconf to generate the configure script.
Input file used by GNU Automake to generate templates. The
top-level file NEED TO FINISH THIS
This file also contains rules for updating the `maintainer-clean` target.
In addition to files cleaned by the `distclean' target, this target will
clean all files generated by maintenance tools.
* etc/config/aux:
This subdirectory, as specified by the AC_CONFIG_AUX_DIR macro in the file, contains support files required in the new
* etc/config/macros:
This subdirectory, specified by the AC_CONFIG_MACRO_DIR in,
contains the M4 configuration macros used primarily by the GNU Autoconf
All other files found in the new infrastructure are either copied from
Autotools or generated by some other means and automatically packaged,
if necessary, in the distribution.
ChangeLog (Proposed 5.0 Release Plans)
Some of the subdirectories in the 4.2 release use abbreviated names
(e.g. doc, etc, src, util) while others don't (e.g. examples, tests).
For installation directories, the conventional Unix names make sense but
they aren't required for a source distribution. So for the 5.0 release,
a more consistent naming convention is used for the subdirectories.
* GNUmakefile:
Moved to "config/GNUmakefile" so that GNU Make with find the Makefile
generated by GNU Automake by default. If users still want to use the
old infrastructure, they'll need to specify the "-f config/GNUmakefile"
option for GNU Make.
* etc/config:
Moved to the top-level "config" subdirectory.
* etc/nls:
Moved to top-level "locale" or "nls" subdirectory. The "etc"
subdirectory is no longer needed.
* src:
Renamed to "source".
* util:
Renamed to "tools".
* examples,
No change.