| |
| Apache C++ Standard Library - stdcxx |
| |
| Introduction |
| ============ |
| |
| 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 configure.ac) 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 configure.ac). 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: |
| stdcxx-4.3.0.tar.gz |
| stdcxx-4.3.0.tar.bz2 |
| stdcxx-4.3.0.zip |
| ============================================== |
| |
| 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, |
| README: |
| |
| No changes required in new infrastructure. Automatically packaged and |
| distributed. |
| |
| * NOTICE.txt, |
| configure.bat, |
| generate.bat: |
| |
| No changes required to these files but they are not automatically |
| distributed. Add them to the EXTRA_DIST variable found in Makefile.am |
| 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. GNUmakefile.top) 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. |
| output. |
| |
| * LICENSE.txt: |
| |
| No changes required to this file but it is not automatically distributed. |
| Add it to the EXTRA_DIST variable found in Makefile.am 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, |
| doc: |
| |
| No changes required to files in these subdirectories but they are not |
| automatically distributed. Add the subdirectories to the EXTRA_DIST |
| variable found in Makefile.am 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. |
| |
| * AUTHORS: |
| |
| 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 |
| Subversion.) |
| |
| * NEWS, |
| 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. |
| |
| * COPYING: |
| |
| The conventional filename for including a copy of the GPL. It is |
| automatically packaged as part of the distribution by Automake's |
| makefiles. |
| |
| 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. |
| |
| * configure.ac: |
| |
| The GNU Autoconf input file. This is the primary input file used by GNU |
| Autoconf to generate the configure script. |
| |
| * Makefile.am: |
| |
| Input file used by GNU Automake to generate Makefile.in templates. The |
| top-level Makefile.am 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 |
| configure.ac file, contains support files required in the new |
| infrastructure. |
| |
| * etc/config/macros: |
| |
| This subdirectory, specified by the AC_CONFIG_MACRO_DIR in configure.ac, |
| contains the M4 configuration macros used primarily by the GNU Autoconf |
| tools. |
| |
| 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, |
| include, |
| tests: |
| |
| No change. |
| |