.\" $Id: CHANGES.mdoc,v 1.72 2004/07/04 21:44:35 jmmv Exp $
.\"
.\" buildtool
.\" Copyright (c) 2002, 2003, 2004 Julio M. Merino Vidal
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in
.\"    the documentation and/or other materials provided with the
.\"    distribution.
.\" 3. Neither the name of the author nor the names of contributors may
.\"    be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR
.\" OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"/
.ds volume-operating-system
.ds volume-ds-1 Buildtool Distribution Information
.Dd July 4, 2004
.Dt CHANGES 1
.Os BSD
.
.Sh NAME
.
.Nm CHANGES
.Nd Major changes between Buildtool versions
.
.Sh 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
.Xr cvs 1
logs.
.
.Sh CHANGES IN 0.16
.
Sixteenth
.Em alpha
version, released on
.Em 2004/07/04 .
.Bl -bullet
.It
Added preliminar support for work directories, which are used to put all
temporary files created during a build in them.
This allows making 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
.Va BT_USE_WORKDIR
variable in
.Pa bt_config.conf
to
.Sq yes ,
so that this feature is always used.
.It
Added a standard customizable
.Sq 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.
.It
bt_logic's core has been rewritten.
It is now much faster than before and has better dependency control,
which solves many stupid bugs.
.It
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
.Pa .libs
directory, and is completely transparent to the end user.
.It
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.
.It
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
.Va BT_REQUIRE
to (at least)
.Sq 0.16 ;
otherwise, the previous behavior is kept.
.It
Multiple fixes have been done in the
.Fn bt_check_bits
function.
.It
Fixed the link command in bt_logic so that library directories appearing
under the same project hierarchy (and manually specified by the
.Fl L
flag) are not converted to an rpath.
.It
Fixed build under
.Ox 3.4 ,
HP-UX and Tru64.
.It
Added the
.Fn bt_check_prog_make
check in bt_config, which looks for a make utility.
.It
Added the
.Fn bt_echo
and
.Fn bt_source
functions to bt_swcgen.
.It
The installation was changed to use unversioned directories and binaries.
.El
.
.Sh CHANGES IN 0.15
.
Fifteenth
.Em alpha
version, released on
.Em 2004/02/04 .
.Bl -bullet
.It
Finally dropped bt_make and bt_wrap, together with all compatibility code
introduced around them.
.It
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 configuration.
.It
Added some checks to bt_config:
.Fn bt_check_hdr_time ,
.Fn bt_check_prog_cc_flag
and
.Fn bt_check_prog_cxx_flag .
.It
Support for the
.Sq +=
operator (append text to a variable) was added to bt_sh.
This can be used to simplify syntax when writting scripts.
.It
Support for pkgconfig files was added to bt_pkgflags.
.It
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
.Sq =
or
.Sq != ,
plus spaces to separate keywords).
.It
Multiple portability problems fixed.
.El
.
.Sh CHANGES IN 0.14
.
Fourteenth
.Em alpha
version, released on
.Em 2003/09/05 .
.Bl -bullet
.It
Added the
.Sq qt_program
type to bt_logic as a replacement for the old
.Pa qt.moc.mk
makefile.
.It
Added logging functionality to bt_logic, to help debugging problems present
in it and to tell the developer what is happening during a build.
.It
Added a standard customizable directory (named
.Sq doc )
where a package may install documents.
Package documents (those registered in the
.Fn docs
function) will get installed in this directory by default.
.It
Removed all uses of the
.Xr getopt 1
command.
This means that all modules that still used it now support long options,
aside from the standard short ones.
.It
Multiple bug fixes.
.El
.
.Sh CHANGES IN 0.13
.
Thirteenth
.Em alpha
version, released on
.Em 2003/08/31 .
.Bl -bullet
.It
All Buildtool control files (the ones in the
.Pa buildtool.d
subdirectory) were unified into a single file,
.Pa 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.
.It
The bt_sh module was added, a very fast and small shell interpreter.
.It
The bt_logic module was extended (really, rewritten from scratch) to provide
a shell based program to track dependancies and build targets.
It still acts as a wrapper for compilation and linking commands.
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.
.It
bt_config will now check for several programs to generate dependancy files.
Aside from the standard
.Xr cpp 1 ,
it also searches for fastdep, which will give better results
on slow computers.
.It
Some bug fixes.
.El
.
.Sh CHANGES IN 0.12
.
Twelfth
.Em alpha
version, released on
.Em 2003/07/24 .
.Bl -bullet
.It
The bt_wizard module was added, which creates the basic structure needed for a
project based on a serie of interactive questions.
.It
Added cache support for many checks in bt_config.
This makes the program run a lot faster if checks are duplicated, and
more important, lets the administrator define check results beforehand
in the system wide
.Pa bt_config.conf
configuration file.
.It
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).
.It
The
.Pa buildtool.d/config_init
file was deprecated.
The entire configuration script is now read from a single file,
.Pa buildtool.d/config ,
as the old framework was confusing and error prone.
Compatibility will be kept for some time.
.It
The TeXinfo documentation was removed.
The manual is now distributed in its own
.Ql buildtool-doc
package, written using Docbook/XML.
.It
The
.Pa buildtool.spec
file was added, needed to create RPM packages.
It actually supports building binary packages for RedHat Linux and SuSE Linux.
.It
Improved user experience: better usage messages and support for long options
added.
.It
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.
.It
Removed license description files.
bt_dist will suggest a
.Pa COPYING
file instead, as this is the most common practice suggested by licenses.
.It
New standard checks in the bt_config module, specially
.Fn bt_check_prog_m4
and
.Fn bt_check_attribute .
.It
Code cleanup and simplification (using M4 in some places).
.El
.
.Sh CHANGES IN 0.11
.
Eleventh
.Em alpha
version, released on
.Em 2003/04/12 .
.Bl -bullet
.It
Lots of bugfixes.
.It
The bt_pkgflags module was added, which provides a replacement for the
pkg-config utility (not compatible).
.It
The
.Fn 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.
.It
The
.Fn bt_err
function in bt_config does not accept error codes any more as its first
argument.
.It
The
.Xr buildtool 1
manpage was rewrote, including a simple user reference so people can
easily learn how to build packages without having to dig into the big
manual.
.El
.
.Sh CHANGES IN 0.10
.
Tenth
.Em alpha
version, released on
.Em 2003/02/05 .
.Bl -bullet
.It
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.
.It
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
.Em experimental .
.It
New tunable features related with libraries are available for
Buildtool-ized packages.
They are called
.Va SHARED
and
.Va STATIC ,
and tune which kind of libraries you want to build.
.It
Standalone bt_mkdep and bt_install modules were removed.
All their functionality is now superseded by bt_logic.
.It
The
.Pa x11.subr
module was added to bt_config.
It provides checks for automatic detection of the X Window System.
.It
The
.Pa pkgconfig.subr
module was added to bt_config.
It provides a frontend to the
.Xr pkg-config 1
program.
The
.Fn bt_check_pkgflags
function was deprecated in favour of this module.
.It
Added functions to automate the detection of a C/C++ compilation
environment in bt_config.
They are called
.Fn bt_check_env_c
and
.Fn bt_check_env_cxx .
.El
.
.Sh CHANGES IN 0.9
.
Ninth
.Em alpha
version, released on
.Em 2003/01/23 .
.Bl -bullet
.It
Distribution documents converted to mdoc.
.It
Improved the
.Fn bt_generate_output
function in bt_config; it now generates an external script, called
bt_output, that can be used to recreate files at any time.
.It
Implemented Buildtool version checking (BT_REQUIRE can be used now).
We cannot wait until 1.0 to have this feature.
.It
Miscellaneous bug fixes (in bt_config and bt_lint).
.It
Automatically generated configuration files have been prefixed with
.Ql bt_
to avoid conflicts with user files.
For example,
.Pa config.h
is now named
.Pa bt_config.h
by default.
.It
Support for shared libraries has now been disabled by default.
It is still too incomplete.
.El
.
.Sh CHANGES IN 0.8
.
Eighth
.Em alpha
version, released on
.Em 2002/12/15 .
.Bl -bullet
.It
Full rewrite of Buildtool's own build system, which should improve
maintenance and portability.
.It
New module bt_install, which provides a portable install program to
not depend on specific system details to do installation.
.It
New pthread.subr module for bt_config, which provides functions for
automatic detection of a pthreads implementation in the current
system.
.It
Added checks in bt_config: bt_check_func, to check for generic
functions (not specific to any library), and bt_check_type, to check
for the presence of a generic type.
.It
Fixes in bt_config's loadable module support.
It was severely broken in the previous version.
.El
.
.Sh CHANGES IN 0.7
.
Seventh
.Em alpha
version, released on
.Em 2002/11/30 .
.Bl -bullet
.It
New check bt_check_bits, which determines appropiate C types for
different sizes.
.It
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).
.It
Addition of the siteinfo target to the main program.
It allows to get specific information about where Buildtool is
installed by third party programs.
.It
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).
.It
Build fixes under MacOS X (Darwin).
.It
Minor bug fixes to run cleanly under Win32, using Cygwin.
.It
Runtime fixes under GNU-based systems (the getopt command did not
behave properly).
.El
.
.Sh CHANGES IN 0.6
.
Sixth
.Em alpha
version, released on
.Em 2002/09/29 .
.Bl -bullet
.It
Many bug fixes in bt_make's infrastructure, specially when dealing
with C++ code.
.It
Solve compilation problems in Solaris and OpenBSD.
.It
Reorganization of the manual; full rewrite of several chapters.
.It
Addition of qt.moc.mk, to manage QT Toolkit's moc files.
.El
.
.Sh CHANGES IN 0.5
.
Fifth
.Em alpha
version, released on
.Em 2002/09/14 .
.Bl -bullet
.It
Addition of loadable modules (subroutines) in bt_config.
.It
Configuration scripts (like gtk-config) and pkg-config support.
.It
New module bt_dist, used to build packages.
.It
Inclusion of the new Buildtool's TestSuite, a sample package to check
Buildtool's behavior in your system.
.It
Cleanup of bt_make's Makefiles. Should fix several bugs.
.It
Include files support through bt.inc.mk.
.El
.
.Sh CHANGES IN 0.4
.
Fourth
.Em alpha
version, released on
.Em 2002/09/01 .
.Bl -bullet
.It
Addition of user configurable features and directories, during runtime
configuration.
.It
System-wide configuration support.
.It
New module bt_lint, used to validate packages.
.It
Fixed installation target, so it works now.
.It
TeXinfo/Info support through bt.info.mk.
.It
Improved template files, to help the new developer.
.It
Initial style guidelines for packages.
.El
.
.Sh CHANGES IN 0.3
.
Third
.Em alpha
version, released on
.Em 2002/08/30 .
.Bl -bullet
.It
Initial
.Xr buildtool 1
manpage.
.It
Preliminary TeXinfo manual (installed as Info).
.It
Minor bug fixes.
.It
Added licenses: Apache, Artistic.
.El
.
.Sh CHANGES IN 0.2
.
Second
.Em alpha
version, released on
.Em 2002/08/24 .
.Bl -bullet
.It
New module bt_doc, used to read package's building documents.
.It
Preliminary library support in bt_make through bt.lib.mk.
.It
Manpage support through bt.man.mk.
.It
Addition of buildtool.d/defs parsing; this file includes package
variables defined by the maintainer.
.It
New buildtool wrapper, which selects proper version for current
package.
.It
Added licenses: BSD, GNU GPL v2.
.El
.
.Sh CHANGES IN 0.1
.
First
.Em alpha
version, released on
.Em 2002/08/22 .
.Bl -bullet
.It
First public version.
.El
.\" Local Variables: ***
.\" mode: nroff ***
.\" End: ***
.\" vim: syntax=nroff
