Bring up to date with many source tree changes.
authorPeter Johnson <peter@tortall.net>
Tue, 5 Aug 2003 04:16:02 +0000 (04:16 -0000)
committerPeter Johnson <peter@tortall.net>
Tue, 5 Aug 2003 04:16:02 +0000 (04:16 -0000)
svn path=/trunk/yasm/; revision=1033

HACKING

diff --git a/HACKING b/HACKING
index 5be4d2766f4af7c77119b80c8e6f51554ba61f0c..cc66fc8541d27c703ea0f2ab138c81c2b6e016ae 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -24,20 +24,28 @@ existing codebase, design, and internal interfaces.
 Check out a copy of YASM from CVS (or grab a development tarball) so you can
 look at the codebase.
 
-Look at the deisgn document (the online web version is probably the easiest to
+Look at the design document (the online web version is probably the easiest to
 read, because the design doc is written in DocBook and most people don't have
 the SGML tools installed to process it).  This is the overall design document,
 which gives you a high-level view of the assembler modular structure and how
 the various components interface.  It also covers coding standards.
 
-Within the src/ directory, there's a bunch of header files with huge comments.
-If you read through these, you'll have a pretty good understanding of the
-implementation details.
+Within the libyasm/ directory, there's a bunch of header files with huge
+comments.  If you read through these, you'll have a pretty good understanding
+of the implementation details.  Or alternatively, read the online doxygen
+generated documentation, which is autogenerated from the comments in these
+files.
 
   * the core data structures: bytecode.h, section.h, expr.h, symrec.h
   * the module interfaces: preproc.h, parser.h, objfmt.h, optimizer.h, etc.
   * the error/warning system: errwarn.h
 
+The frontends/ directory contains the programs that users will actually run.
+Right now, this is only "yasm", but others may be added someday.
+
+The modules/ directory contains all the loadable module source code, organized
+by module type (preproc, parser, etc.).
+
 YASM is written in ANSI/ISO C89 for maximum portability.  See the design
 document for more details on portability considerations.  Several C files and
 util.h provide functions that are standard on some machines but not available
@@ -56,11 +64,10 @@ Building in this fashion requires many more programs than YASM normally
 requires in a packaged distribution.  All of the following are GNU programs,
 which are fairly portable in their own right:
   * automake (1.5 or newer)
-  * autoconf (2.5 or newer preferred, 2.13 will still work)
+  * autoconf (2.5 or newer)
   * m4
   * gettext
   * make (GNU preferred)
-  * flex
   * bison
   * gcc
   * groff
@@ -70,15 +77,15 @@ To prepare your working copy for building, run:
   % ./autogen.sh
 
 The autogen.sh script runs gettextize, aclocal, autoconf, autoheader, automake,
-and finally runs "./configure --enable-dev".  If an error occurs during this
-process, something is wrong in your build configuration (such as required tools
-missing or misconfigured).  After autogen.sh completes successfully, use make
-to build YASM.  We recommend you use GNU make because gettext seems to play
-better with it than with other make tools.  Use the distcheck target of make to
-build a package.  If this doesn't complete successfully, something is wrong in
-the source tree.  If you caused the breakage, fix it or ask someone to help you
-fix it.  If you didn't cause it (it happens with a new checkout), notify the
-developers!
+and finally runs "./configure --enable-maintainer-mode".  If an error occurs
+during this process, something is wrong in your build configuration (such as
+required tools missing or misconfigured).  After autogen.sh completes
+successfully, use make to build YASM.  We recommend you use GNU make because
+gettext seems to play better with it than with other make tools.  Use the
+distcheck target of make to build a package.  If this doesn't complete
+successfully, something is wrong in the source tree.  If you caused the
+breakage, fix it or ask someone to help you fix it.  If you didn't cause it (it
+happens with a new checkout), notify the developers!
 
 Generating ChangeLogs
 =====================