A list of changes and fixes that have been made.
-- v2.08 -- 29/May/2005
- ** FIX: thanks to teqdruid: In Unix environments,
any pragma(link, <name>) statements were not sending the correct
syntax to the compiler's command line. The "<name>" is now prefixed
with "-L-l" for Unix systems.
- ** FIX: thanks to Carlos: In Unix environments, any "-version"
switch on the Utility's command line was not being converted to the correct Unix
format of "-fversion...". So now, if the Build tool gets
either "-version..." or "-fversion=..." on its command line, it will
recognise it as a 'Version' request for the compiler and output
it on the command line in the correct format for the environment it
is running in, namely "-fversion..." for GNU (gdc) and "-version..."
for Windows.
Note: The same applies to the "-debug..." and "-fdebug..." switches.
- ** FIX: The pragma(nolink) was being ignored under some circumstances.
Now it splits the compilation phase
from the linking phase and excludes the 'nolink' files from the linker's
command line.
- ** FIX: thanks to kris: 'debug' statements were not being taken into account when
examining code for import statements.
- ** FIX: 'debug' and 'version' levels are now being taken into account.
- ** FIX: 'debug' and 'version' values being set inside a source file
were being made global rather than module scoped.
- ** FIX: thanks to carlos: The utility was not processing the
-I switch correctly when using GDC compiler.
- ** ENH: The utility can now accept the -I switch in two forms:
-I<path> and -I <path> on its command line, regardless of which
compiler is being used. When invoking the compiler, it uses the correct
format on the command line of the compiler being used, namely "-I<path>" to
DMD compiler and "-I <path>" to GDC.
- ** ENH: The path of any source file that imports a module
will be added to the list of root paths to search for module source
files. This means that you can now have module source files referenced
relative to the source file that imports them. This is the new default
behaviour but it can be turned off by using the new -noautoimport switch
or for individual files by placing them inside parenthesis.
- ** ENH: New switch -noautoimport is used to turn off the
automatic adding of search roots based on the path of the source files
being compiled.
- ** ENH: New switch -LIBPATH= is used to add search paths for
library files.
- ** WARN: The utility only does a single scan of each source file
and thus if an file sets a 'debug' or 'version' value after a function
which uses that value, it will be ignored. You are requested to ensure that
all your 'debug' and 'version' setting is done prior to the first module
member.
-- v2.07 -- 06/May/2005
- ** ENH: New switch -nodef to prevent the utility from
automatically creating a Module Definition File (.def)
- ** ENH: You can now specify default, and special, settings for
the utility's command line. These are placed in a text configuration file called
build.cfg. The utility first looks in the same directory as the
utility's executable for the configuration file. After processing any
configuration file found there, it then looks in the same directory as
the compiler for a configuration file (build.cfg) and processes it if
found.
- ** ENH: To support special command line settings that may be
specified in the utility's configuration file(s), you can indicate
one or more setting groups on the command line. These take the format of
+groupname. The configuration file(s) are scanned for special group settings
after the default ones have been processed.
- ** ENH: To remove an earlier specified command line switch, you
can prepend it with a hyphen. This new feature may be needed when command
line switches can come from multiple sources (the original command line,
utility response files, and utility configuration files), and you need
to remove a switch that may have been provided by some other source.
For example to negate an earlier "-unittest" switch you code add "--unittest"
to the command line.
- ** ENH: New switch -od is used to nominate a directory for
temporary files. For the DigitalMars compiler, this also is used as the location
to create object files.
-- v2.06 -- 04/May/2005
- ** FIX: thanks to phoenix: When emitting commandline parameters for
the compiler or librarian, it was possible to have some ending with \" which caused
the shell to escape the quote character and thus provide incorrect parameters to
the compiler.
-- v2.05 -- 02/May/2005
- ** FIX: When supplying some forms of relative paths, the
utility would crash or give the wrong canonical form of the path. This
effected formats like \..\anything and C:..\anything
- ** FIX: The utility now assumes the current directory if it can not
locate the compiler using the paths on the system PATH symbol.
- ** FIX: The utility now assumes the compiler's location if no path
for the configuration file has been specified.
- ** FIX: The utility now supports better parsing of the lines in the
configuration file. It handles odd variations of embedded quotes.
- ** ENH: The utility now supports Windows 95/98/ME for file times.
-- v2.04 -- 29/Apr/2005
- ** FIX: thanks to Nils Hensel: The utility was not correctly
parsing the DFLAGS line in the configuration file when it contained
embedded quote characters.
- ** FIX: thanks to Anders F Bjoerklund: The utility was not treating
directory names that contained dots correctly.
- ** FIX: thanks to Carlos: Unix-style files that end with a nested comment
delimiter are now handled correctly.
- ** ENH: thanks to qbert(Charlie): The location of the librarian tool can now
be specified. It can be explictly named on a LIBCMD= line inside the
DMD configuration file, or failing that, implictly assumed to be in the
same directory as the DMD linker.
- ** ENH: A new commandline switch -LIBOPT which allows you to pass
commandline options to the librarian.
-- v2.03 -- 20/Apr/2005
- ** FIX: thanks to Carlos: The linux build had a spelling mistake
in source.d (line 286). The indentifier "lNextMod" should have been coded
as "lNextModule".
-- v2.02 -- 19/Apr/2005
- ** FIX: thanks to Carlos: The utility was not handling the situation
where a simple statement, rather than a block statement, followed a version
directive.
- ** FIX: thanks to aldacron: The utility now respects the compiler's
'Output file' switch. Which is '-of[filename]' for DMD and '-o [filename]'
for GNU. The utility treats it as an alias for its -T switch.
- ** FIX: thanks to aldacron: The utility now respects the DMD compiler's
'Object Path' switch. If you have '-odsomepath' on the command line, the
utility adds this to the search path when checking for up-to-date files,
and will clean up files in that directory if requested to (-clean). It will
also create the directory if it doesn't exist.
-- v2.01 -- 18/Apr/2005
- ** FIX: thanks to Justin (jcc7): If an excluded module (-X) was
in a package at the current directory level, it was not being excluded.
-- v2.00 -- 08/Apr/2005
- ** FIX: Now supports the raw-string delimiter ` in Build's own
pragma commands.
- ** FIX: Now handles backslash escapes in Build's own
pragma commands.
- ** ENH: New -silent switch avoids all unnecessary messages.
- ** ENH: New -help switch displays full usage text. Aliases: -h, -?
-- v1.19 -- 04/Apr/2005
- ** FIX: thanks to Ben Hinkle. When creating a library in Linux,
the utility was looking for .obj files instead of .o files.
- ** FIX" When creating a library, if a source file had more than one
.d in its name, the utility would look for the wrong object file for it.
-- v1.18 -- 03/Apr/2005
- ** FIX: If mixed case was used, it was possible to have duplicate
element types in a OptLink module definition file. Effected the use of
pragma(build_def).
- ** ENH: Some performance improvements.
-- v1.17 -- 30/Mar/2005
- ** FIX: In Windows systems, the utility now does case-insensitive
path name compares.
- ** FIX: A bug in the String Search function crashed the utility
when the -T switch was used with target names less than 9 characters long.
- ** ENH: The new switch -obj is available. This is just a shorthand
for having both -nolib and -nolink on the command line.
-- v1.16 -- 28/Mar/2005
- ** FIX: The utility now handles quotes around pragma(link) references.
- ** FIX: The utility now handles multiple references to the same module
even though they are using different 'path' specifications.
- ** ENH: The utility now has support for making Windows DLL files.
-- v1.15 -- 24/Mar/2005
- ** FIX: The utility now checks for more recent libraries and
object files as added by pragma(link), pragma(build), and command line. It
didn't used to rebuild the executable if only a new version of a library
was present.
- ** FIX: The order of the librarian parameters was incorrect.
- ** FIX: The utility was not using the correct path name if importing
modules from some Import paths.
- ** ENH: Verbose mode now shows the ignored and noticed packages.
-- v1.14 -- 23/Mar/2005
- ** FIX: Thanks to teqDruid. For GNU platforms, the utility
now passes any library name found in pragma(link,...) to the linker.
- ** FIX: Nows correctly handles unix and Microsoft line-ends.
- ** FIX: Thanks to Ben Hinkle. Using relative paths '..' and '.'
now work correctly on the -I switch.
- ** FIX: Thanks to Ben Hinkle. The correct librarian program 'ar'
is now called on unix systems.
- ** ENH: The new switch -names displays the names of the files
used in building the target. This is not a noisy as verbose mode.
- ** ENH: New pragma include used to identify a file that
must be included in the compilation process but is not one that
is imported by any file in the group. Only needed if command line
file does not otherwise import the required file. Can be used to
include the file containing the 'main' function from a file that
does not import that file. Rarely needed.
- ** ENH: New pragma build used to build 'foreign' file types
that D doesn't know about.
- ** ENH: New pragma target used to nominate the default target
file name.
- ** ENH: You can now use a symbolic target name on the -T switch.
-- v1.13 -- 13/Mar/2005
- ** FIX: Explictly included paths entered on the -I switch are
now added to the dmd command line.
- ** FIX: Explictly excluded modules (via -X) were only checking package
names. They also check for module names now.
- ** FIX: Imported files are now looked for relative to the current directory
before the import paths are checked.
- ** FIX: The utility now checks the DFLAG environment symbol in
non-DigitalMars D compilers.
- ** CHG: The switch -nounittest is now deprecated and ignored if used.
The default setting is no longer to compile with unittests turned on.
-- v1.12 -- 6/Mar/2005
- ** FIX: The response file (-Ry) is now only the default when using
DigitalMars tools on Windows. All other environments do not use the response
file by default.
-- v1.11 -- 4/Mar/2005
- ** FIX: No long outputs empty compiler tool switches.
-- v1.10 -- 4/Mar/2005
- ** FIX: Thanks to Carlos. Better support for GDC command line switches.
- ** FIX: Thanks to Carlos. Cause 'Unix' version to trigger Posix code.
- ** FIX: Thanks to Carlos. The vUseResponseFile variable was only being
declared in the Windows version.
- ** FIX: No passes space-embedded switches and paths to the compiler
tools correctly.
- ** ENH: If an environment symbol called DFLAGS has been defined, it is
analyzed. This is done before any configuration file processing.
- ** ENH: New command line switch -test. This shows the command lines
instead of running them. No compiling or linking is done.
-- v1.9 -- 3/Mar/2005
- ** FIX: Thanks to Carlos. For unix, it now uses ':' instead of ';' for path
separators when parsing the configuration file lines.
- ** FIX: Thanks to Carlos. The default location for the configuration
file was being ignored.
- ** ENH: A new command line switch -R used to control the use
of a response file for the compiler tools.
-- v1.8 -- 1/Mar/2005
- ** FIX: Thanks to Anders F Bjoerklund: Removed nonASCII chars from source code.
- ** FIX: Thanks to Anders F Bjoerklund: Changed version(GDC) to version(GNU)
- ** FIX: Changed compiler name for GNU versions from 'dmd' to 'gdc'
- ** FIX: Thanks to Carlos. The application was incorrectly parsing the DFLAGS sc.ini line.
- ** ENH: Thanks to Anders F Bjoerklund: Provided a Makefile for the initial
compile of the application.
-- v1.7 -- 28/Feb/2005
- ** FIX: Thanks to clayasaurus. Linux edition was not compiling
due to a missing 'version(Windows)' block around the use of vWinVer
-- v1.6 -- 28/Feb/2005
- ** FIX: Thanks to Kris. The utility was not including the DCPATH value
when invoking the compiler.
- ** ENH: When building a Windows app, the .DEF file now includes the
version of windows that this application is being run on.
- ** ENH: The command line switch -gui can now have an optional
version information to specify which Windows version to build for.
The default Windows Version used is the one for the version running
this utility.
- ** ENH: New command line switch -info to display the utility's version #.
-- v1.5 -- 25/Feb/2005
- ** FIX: Thanks to clayasaurus. Now only displays the CFPATH
and DCPATH messages when verbose mode is on.
- ** FIX: Thanks to kris. Hardcoded default for DMD path was
misleading when dmd.exe was not in the Windows PATH.
- ** FIX: The utility was not correctly parsing empty raw strings ``.
- ** ENH: Thanks to kris. If the -DCPATH switch is used, then
if the existing DCPATH and CFPATH are the same, this switch changes both.
-- v1.4 -- 24/Feb/2005
- ** FIX: Thanks to Abscissa. The -version switch was being interpreted as
a file to compile.
- ** FIX: Thanks to brad. Linux version was using the wrong package name
when formatting a file date for display.
- ** FIX: Thanks to brad. Linux version was not setting the target
name correctly which resulted in the first source file being compiled twice.
- ** FIX: Thanks to brad. Parsing the DFLAG line in the dmd options
file was not dealing with whitespace delimiters.
- ** ENH: When specifing an alternate target file, you can now also
specify a path for the target, and that path is created for you if it
doesn't exist.
-- v1.3 -- 23/Feb/2005
- ** ENH: Put in a workaround for DMD (Windows) not using the sc.ini
file correctly. The utility now explicitly adds any DFLAG options from
the sc.ini file into the .rsp file.
- ** FIX: The utility now correctly handles ';' delimited DFLAG options
in the sc.ini file.
- ** ENH: Now supports the use of 'response' files on the command line
- ** ENH: Now supports the -T command line switch to supply an
alternate tareget name.
-- v1.2 -- 21/Feb/2005
- ** ENH: Thanks to Anders F Bjoerklund: Added better support for 'darwin'
and 'gdc'.