Add draft of Autotools Primer to The Manual.
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 27 May 2009 10:27:32 +0000 (10:27 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 27 May 2009 10:27:32 +0000 (10:27 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1921 b42882b7-edfa-0310-969c-e2dbd0fdcd60

doc/manual/primer/autotools.txt [new file with mode: 0644]

diff --git a/doc/manual/primer/autotools.txt b/doc/manual/primer/autotools.txt
new file mode 100644 (file)
index 0000000..10c6000
--- /dev/null
@@ -0,0 +1,167 @@
+/** @page primerautotools OpenOCD Autotools Primer
+
+This page provides an overview to OpenOCD's use of the GNU autotool suite:
+- @ref primerautoconf
+- @ref primerautomake
+- @ref primerlibtool
+
+Most developers do not need to concern themselves with these tools, as
+the @ref primerbootstrap script runs these tools in the required sequence.
+
+@section primerbootstrap Autotools Bootstrap
+
+The @c bootstrap script should be used by developers to run the
+autotools in the correct sequence.
+
+When run after a fresh checkout, this script generates the build files
+required to compile the project, producing the project configure script.
+After running @c configure, the @ref primermaintainermode settings will
+handle most situations that require running these tools again.  In some
+cases, a fresh bootstrap may be still required.
+
+@subsection primerbootstrapcures Problems Solved By Bootstrap
+
+For example, the build system can fail in unexpected ways after running
+<code>svn update</code>.  Here, the <code>make maintainer-clean</code>
+should be used to remove all of the files generated by the @c bootstrap
+script and subsequent build processes.
+
+In this particular case, one may also need to remove stray files by hand
+after running this command to ensure everything is rebuilt properly.
+This step should be necessary only if the @c maintainer-clean was run
+@b after altering the build system files with Subversion. If it is run
+@b before any updates, the build system should never leave artifacts
+in the tree.
+
+Without such precautions, changes can be introduced that leave the tree
+timestamps in an inconsistent state, producing strange compile errors
+that are resolve after such diligence.
+
+@subsection primermaintainerclean Autotools Cleaning
+
+Normally, all files generated by the bootstrap script, configure
+process, and build system should be removed after running <code>make
+maintainer-clean</code>.  Automatically generated files that remain
+after this should be listed in @c MAINTAINERCLEANFILES,
+@c DISTCLEANFILES, or @c CLEANFILES, depending on which stage of the
+build process they are produced.
+
+@section primerautoconf Autoconf Configuration Script
+
+The @c autoconf program generates the @c configure script from
+@c configure.in, using serious Perl voodoo.  The resulting script is
+included in the project distribution packages and run by users to
+configure the build process for their system.
+
+@subsection primermaintainermode Maintainer Mode
+
+After a fresh checkout, @c bootstrap, and a simple @c configure, you may
+experience errors when running @c make that some files cannot be found
+(e.g. @c version.texi), and a second @c make will "mysteriously" solve
+the problems.  The isssue is well-known and expected, if unfortunate.
+
+The OpenOCD project requires that all developers building from  the
+Subversion repository use the @c --enable-maintainer-mode option when
+running the @c configure script.  This option ensures that certain files
+are created during the build process that would normally be packaged in
+the distribution tarball.  The @c bootstrap script will remind you of
+this requirement when it runs.
+
+In addition to solving these problems, this option enables Makefile
+rules (provided by automake) that allow the normal @c make process to
+rebuild the autotools outputs, included the automake-generated Makefiles
+themselves.  This avoids the heavy-handed approach of running the
+@c bootstrap script after changing one of these files.
+
+@section primerautomake Automake Makefiles
+
+The @c automake program generates @c Makefile.in files (from @c
+Makefile.am files).  These files are later processed by the configure
+script produced by @c autoconf.
+
+@subsection primerautomakenewfiles Creating Makefile.am Files
+
+This section shows how to add a @c Makefile.am in a new directory (or
+one that lacks one).
+-# The new directory must be listed in the @c SUBDIRS variable in the
+parent directory's Makefile.am:
+@code
+$ echo 'SUBDIRS += directory' >>../Makefile.am
+@endcode
+-# Create an bare-bones Makefile.am file in directory that needs it:
+@code
+$ echo "MAINTAINERCLEANFILES = Makefile.in" >Makefile.am
+@endcode
+-# The @c configure.in script must be updated, so it generates the required
+Makefile when the @a configure script is run by the user:
+@verbatim
+AC_OUTPUT([
+               ...
+               path/to/new/Makefile
+       ])
+@endverbatim
+
+Note: these instructions are @b not meant to be used literally, rather
+they are shown for demonstration purposes.
+
+The default MAINTAINERCLEANFILES rule ensures that the
+automake-generated @c Makefile.in file will be removed when developers
+run <code>make maintainer-clean</code>.  Additional rules may be added
+after this; however, the project should bootstrap and tear down cleanly
+after taking these minimal steps, with the new directory being visited
+during the @c make sequence.
+
+@subsection primerautomaketweaks Updating Makefile.am Files
+
+Adding, removing, and renaming files from the project tree usually
+requires updating the autotools inputs. This section will help describe
+how to do this as questions arise.
+
+@section primerlibtool Libtool and Libraries
+
+The @c libtool program provides the means of generating libraries in a
+portable and painless manner (relatively speaking).
+
+This section will contain an answer to "what does libtool give OpenOCD?"
+and "what do developers need to consider in new code?"
+
+@section primerautotoolsmation Autotools Automation
+
+This section outlines three ways the autotools provides automation to
+assist with testing and distribution:
+- @ref primerautocheck -- automatic unit and smoke tests
+- @ref primerautodistcheck -- automatic distribution and packaging tests
+
+@subsection primerautocheck make check
+
+The <code>make check</code> command will run the OpenOCD test suite,
+once it has been integrated as such.  This section will contain
+information about how to extend the testing build system components to
+implement new checks.
+
+@subsection primerautodistcheck make distcheck
+
+The <code>make distcheck</code> command produces an archive of the
+project deliverables (using <code>make dist</code>) and verifies its
+integrity for distribution by attemptng to use the package in the same
+manner as a user.  
+
+These checks includes the following steps:
+-# Unpack the project archive into its expected directory.
+-# Configure and build the project in a temporary out-of-tree directory.
+-# Run <code>make check</code> to ensure the distributed code passes all tests.
+-# Run <code>make install</code> into a temporary installation directory.
+-# Check that <code>make uninstall</code> removes all files that were installed.
+-# Check that <code>make distclean</code> removes all files created
+during all other steps (except the first).
+
+If all of these steps complete successfully, the @c make process will
+output a friendly message indicating the archive is ready to be
+distributed.
+
+ */
+/** @file
+
+This file contains the @ref primerautotools page.
+
+ */

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)