CHANGES(1)             Buildtool Distribution Information           CHANGES(1)

NAME
     CHANGES - Major changes between Buildtool versions

DESCRIPTION
     This document describes most of the major changes between each public
     version of Buildtool.  If you want to see all changes in detail, you will
     need to look at cvs(1) logs.

CHANGES IN 0.16
     Sixteenth alpha version, released on 2004/07/04.

     o   Added preliminar support for work directories, which are used to put
         all temporary files created during a build in them.  This allows mak-
         ing the source tree read only, as it won't get polluted in any way.
         Note that existing packages may need some tweaks in their logic files
         to support this completely.  To help with testing, you should set the
         BT_USE_WORKDIR variable in bt_config.conf to `yes', so that this fea-
         ture is always used.

     o   Added a standard customizable `DOC' feature, which can be used by the
         end user to disable installation of documentation.  Existing packages
         may need to be fixed to honour this, though.

     o   bt_logic's core has been rewritten.  It is now much faster than
         before and has better dependency control, which solves many stupid
         bugs.

     o   A framework to run uninstalled programs (those which may be linked to
         uninstalled libraries) has been readded.  It is very similar to what
         libtool does with its .libs directory, and is completely transparent
         to the end user.

     o   Added (in fact, readded, as it was lost during the conversion to
         bt_logic) support to install packages in a fake root directory,
         needed in many package systems to support Buildtool-ized programs.

     o   Definitions' names (those written to the configuration header) have
         been changed to include the language name they refer to in them.
         This provides better support when the C and C++ compilers do not
         match.  Note that for this to take effect you need to set BT_REQUIRE
         to (at least) `0.16'; otherwise, the previous behavior is kept.

     o   Multiple fixes have been done in the bt_check_bits() function.

     o   Fixed the link command in bt_logic so that library directories
         appearing under the same project hierarchy (and manually specified by
         the -L flag) are not converted to an rpath.

     o   Fixed build under OpenBSD 3.4, HP-UX and Tru64.

     o   Added the bt_check_prog_make() check in bt_config, which looks for a
         make utility.

     o   Added the bt_echo() and bt_source() functions to bt_swcgen.

     o   The installation was changed to use unversioned directories and bina-
         ries.

CHANGES IN 0.15
     Fifteenth alpha version, released on 2004/02/04.

     o   Finally dropped bt_make and bt_wrap, together with all compatibility
         code introduced around them.

     o   M4 is no longer needed.  It was introduced to clean up code, but it
         has proven to only ofuscate it.  As a side effect, bt_swcgen uses
         shell scripts instead of macro files to generate system wide configu-
         ration.

     o   Added some checks to bt_config: bt_check_hdr_time(),
         bt_check_prog_cc_flag() and bt_check_prog_cxx_flag().

     o   Support for the `+=' operator (append text to a variable) was added
         to bt_sh.  This can be used to simplify syntax when writting scripts.

     o   Support for pkgconfig files was added to bt_pkgflags.

     o   Support for pkgconfig command line syntax was added to bt_pkgflags
         (it is not exactly the same, but we now support operators in their
         real form, like `=' or `!=', plus spaces to separate keywords).

     o   Multiple portability problems fixed.

CHANGES IN 0.14
     Fourteenth alpha version, released on 2003/09/05.

     o   Added the `qt_program' type to bt_logic as a replacement for the old
         qt.moc.mk makefile.

     o   Added logging functionality to bt_logic, to help debugging problems
         present in it and to tell the developer what is happening during a
         build.

     o   Added a standard customizable directory (named `doc') where a package
         may install documents.  Package documents (those registered in the
         docs() function) will get installed in this directory by default.

     o   Removed all uses of the getopt(1) command.  This means that all mod-
         ules that still used it now support long options, aside from the
         standard short ones.

     o   Multiple bug fixes.

CHANGES IN 0.13
     Thirteenth alpha version, released on 2003/08/31.

     o   All Buildtool control files (the ones in the buildtool.d subdirec-
         tory) were unified into a single file, Generic.bt, which is placed in
         the top level directory for simplicity.  Everything is now controlled
         from shell functions defined in that file.  Buildtool will assist you
         in this conversion when needed.

     o   The bt_sh module was added, a very fast and small shell interpreter.

     o   The bt_logic module was extended (really, rewritten from scratch) to
         provide a shell based program to track dependancies and build tar-
         gets.  It still acts as a wrapper for compilation and linking com-
         mands.  As a side effect, the old code was readded as the bt_wrap
         module, needed to keep bt_make working until both can be safely
         removed.

     o   bt_config will now check for several programs to generate dependancy
         files.  Aside from the standard cpp(1), it also searches for fastdep,
         which will give better results on slow computers.

     o   Some bug fixes.

CHANGES IN 0.12
     Twelfth alpha version, released on 2003/07/24.

     o   The bt_wizard module was added, which creates the basic structure
         needed for a project based on a serie of interactive questions.

     o   Added cache support for many checks in bt_config.  This makes the
         program run a lot faster if checks are duplicated, and more impor-
         tant, lets the administrator define check results beforehand in the
         system wide bt_config.conf configuration file.

     o   The bt_swcgen module was added, which aids the system administrator
         in the creation of system-wide configuration files for bt_config
         (that is, files that store check results to avoid rechecking the same
         thing over and over again).

     o   The buildtool.d/config_init file was deprecated.  The entire configu-
         ration script is now read from a single file, buildtool.d/config, as
         the old framework was confusing and error prone.  Compatibility will
         be kept for some time.

     o   The TeXinfo documentation was removed.  The manual is now distributed
         in its own `buildtool-doc' package, written using Docbook/XML.

     o   The buildtool.spec file was added, needed to create RPM packages.  It
         actually supports building binary packages for RedHat Linux and SuSE
         Linux.

     o   Improved user experience: better usage messages and support for long
         options added.

     o   A developer mode was added to all configure scripts (disabled by
         default).  It enables extra functionality during the build process,
         ideal for developers but which may annoy end users.

     o   Removed license description files.  bt_dist will suggest a COPYING
         file instead, as this is the most common practice suggested by
         licenses.

     o   New standard checks in the bt_config module, specially
         bt_check_prog_m4() and bt_check_attribute().

     o   Code cleanup and simplification (using M4 in some places).

CHANGES IN 0.11
     Eleventh alpha version, released on 2003/04/12.

     o   Lots of bugfixes.

     o   The bt_pkgflags module was added, which provides a replacement for
         the pkg-config utility (not compatible).

     o   The bt_msg_summary() function was added to bt_config, which provides
         an homogeneous way to output diagnostic messages at the end of the
         configuration process.

     o   The bt_err() function in bt_config does not accept error codes any
         more as its first argument.

     o   The buildtool(1) manpage was rewrote, including a simple user refer-
         ence so people can easily learn how to build packages without having
         to dig into the big manual.

CHANGES IN 0.10
     Tenth alpha version, released on 2003/02/05.

     o   The bt_logic module was added.  It parses each call to the compiler
         and linker, sorts arguments, adapts them to the current platform and
         runs the resulting converted command.  It also provides generation of
         dependancy files and installation of stuff.

     o   Initial support of shared libraries through bt_logic's framework.
         Buildtool can now build them on different platforms and use different
         naming schemes (needed for Darwin), set rpaths automatically, and
         more.  Note that this is still very experimental.

     o   New tunable features related with libraries are available for Build-
         tool-ized packages.  They are called SHARED and STATIC, and tune
         which kind of libraries you want to build.

     o   Standalone bt_mkdep and bt_install modules were removed.  All their
         functionality is now superseded by bt_logic.

     o   The x11.subr module was added to bt_config.  It provides checks for
         automatic detection of the X Window System.

     o   The pkgconfig.subr module was added to bt_config.  It provides a
         frontend to the pkg-config(1) program.  The bt_check_pkgflags() func-
         tion was deprecated in favour of this module.

     o   Added functions to automate the detection of a C/C++ compilation
         environment in bt_config.  They are called bt_check_env_c() and
         bt_check_env_cxx().

CHANGES IN 0.9
     Ninth alpha version, released on 2003/01/23.

     o   Distribution documents converted to mdoc.

     o   Improved the bt_generate_output() function in bt_config; it now gen-
         erates an external script, called bt_output, that can be used to
         recreate files at any time.

     o   Implemented Buildtool version checking (BT_REQUIRE can be used now).
         We cannot wait until 1.0 to have this feature.

     o   Miscellaneous bug fixes (in bt_config and bt_lint).

     o   Automatically generated configuration files have been prefixed with
         `bt_' to avoid conflicts with user files.  For example, config.h is
         now named bt_config.h by default.

     o   Support for shared libraries has now been disabled by default.  It is
         still too incomplete.

CHANGES IN 0.8
     Eighth alpha version, released on 2002/12/15.

     o   Full rewrite of Buildtool's own build system, which should improve
         maintenance and portability.

     o   New module bt_install, which provides a portable install program to
         not depend on specific system details to do installation.

     o   New pthread.subr module for bt_config, which provides functions for
         automatic detection of a pthreads implementation in the current sys-
         tem.

     o   Added checks in bt_config: bt_check_func, to check for generic func-
         tions (not specific to any library), and bt_check_type, to check for
         the presence of a generic type.

     o   Fixes in bt_config's loadable module support.  It was severely broken
         in the previous version.

CHANGES IN 0.7
     Seventh alpha version, released on 2002/11/30.

     o   New check bt_check_bits, which determines appropiate C types for dif-
         ferent sizes.

     o   New check bt_check_hdr_std, which searches standard headers.  You
         must use this function, as it is now required for further checks
         (improves portability).

     o   Addition of the siteinfo target to the main program.  It allows to
         get specific information about where Buildtool is installed by third
         party programs.

     o   Default name of Makefile's changed to Makefile.bt.  This allows
         Automake and Buildtool to coexist in the same package and also avoids
         running a regular Make tool within a Buildtool-ized package (which
         will confuse the user).

     o   Build fixes under MacOS X (Darwin).

     o   Minor bug fixes to run cleanly under Win32, using Cygwin.

     o   Runtime fixes under GNU-based systems (the getopt command did not
         behave properly).

CHANGES IN 0.6
     Sixth alpha version, released on 2002/09/29.

     o   Many bug fixes in bt_make's infrastructure, specially when dealing
         with C++ code.

     o   Solve compilation problems in Solaris and OpenBSD.

     o   Reorganization of the manual; full rewrite of several chapters.

     o   Addition of qt.moc.mk, to manage QT Toolkit's moc files.

CHANGES IN 0.5
     Fifth alpha version, released on 2002/09/14.

     o   Addition of loadable modules (subroutines) in bt_config.

     o   Configuration scripts (like gtk-config) and pkg-config support.

     o   New module bt_dist, used to build packages.

     o   Inclusion of the new Buildtool's TestSuite, a sample package to check
         Buildtool's behavior in your system.

     o   Cleanup of bt_make's Makefiles. Should fix several bugs.

     o   Include files support through bt.inc.mk.

CHANGES IN 0.4
     Fourth alpha version, released on 2002/09/01.

     o   Addition of user configurable features and directories, during run-
         time configuration.

     o   System-wide configuration support.

     o   New module bt_lint, used to validate packages.

     o   Fixed installation target, so it works now.

     o   TeXinfo/Info support through bt.info.mk.

     o   Improved template files, to help the new developer.

     o   Initial style guidelines for packages.

CHANGES IN 0.3
     Third alpha version, released on 2002/08/30.

     o   Initial buildtool(1) manpage.

     o   Preliminary TeXinfo manual (installed as Info).

     o   Minor bug fixes.

     o   Added licenses: Apache, Artistic.

CHANGES IN 0.2
     Second alpha version, released on 2002/08/24.

     o   New module bt_doc, used to read package's building documents.

     o   Preliminary library support in bt_make through bt.lib.mk.

     o   Manpage support through bt.man.mk.

     o   Addition of buildtool.d/defs parsing; this file includes package
         variables defined by the maintainer.

     o   New buildtool wrapper, which selects proper version for current pack-
         age.

     o   Added licenses: BSD, GNU GPL v2.

CHANGES IN 0.1
     First alpha version, released on 2002/08/22.

     o   First public version.

NetBSD 2.0                       July 4, 2004                       NetBSD 2.0
