How it Works Now
----------------


There is a new toplevel directory called build.  This contains a
couple of scripts and a couple of previously (as far as I can tell)
unmanaged files: Columnstore.xml and Doxyfile.  It also contains a
top-level Makefile and a rules.tmpl, which is a template rules file
for other makefiles to include.  More on that later.

After doing an updateGenii.pl, you do the following from the top of
your development tree, which, more or less has to be genii in
conformance with updateGenii.pl. (I'm not particularly happy with what
we are doing with updateGenii.pl, but, it is the prevailing custom and
these changes assume its use).

0. cd $HOME/genii.

1. build/bootstrap

   This does the following:

   a. creates export/bin,lib,share,etc,include

   b. Copies static elements into the export tree.  Static elements
      are things we use but either don't build or don't build
      routinely.  This includes Doxyfile, Columnstore.xml and
      net-snmp components.

   c. Generates a rules.mak from build/build/rules.tmpl to pwd (which
      is supposed to be the top of your development tree).  rules.mak
      includes shared variables used by many other makefiles, mostly
      in install rules.  In particular, it defines TOP, which is how
      build processes find the export tree.  Makefiles that use this
      have a hard-coded path to rules.mak.  These hard-coded paths can
      be automatically reset via build/setmktop.

   d. Runs make bootstrap for components that need to export headers.
      bootstrap rules usually just copy LINCLUDES (headers that need
      to be shared with other components) to export/include.

2. Now you can type make in the various component areas or use the
   top-level Makefile installed by bootstrap.

   The order specified in the buildbot configuration is:

   a. utils
   b. snmpd
   c. oam
   d. dbcon
--------------
   e. emulator
   f. mysql
   g. exemgr
   h. procmon
   i. procmgr

3. There is a top-level build/Makefile to support development build
   activities.  It is not part of the formal nightly build.  The
   buildbot setup orchestrates component builds via component specific
   builders.  Developers may want to use this.  cp build/Makefile
   $HOME/genii or use make -f.

   For example you can try make scratch to build everything including
   test, coverage, etc., or make compile to just try the build part.
   It's a simple makefile, you can read it if you want to.

4. Note that while we no longer install files into /usr/local/Calpont,
   the old install targets are retained as the mechanism for copying
   programs and libraries into the export tree.  Install targets do
   not operate on header files.  This is taken care of by the
   bootstrap target.

5. Following a build, a bunch of output products should be in
   genii/export.
