This release introduces support for Microsoft® Windows® Services for UNIX (SFU), allowing the use of nmake on the Windows® 2000 and Windows® Server 2003 operating systems running SFU 3.5.
The initial release on SFU includes support for all core Lucent® nmake product functionality except for coshell-based distributed builds (this is planned for a future release). A primary goal of this release is compatibility with existing nmake makefiles developed on other platforms. ksh88i is included to eliminate compatibility problems with the native SFU 3.5 pdksh shell. Java builds using the Windows native JDK are supported. The product is distributed as a BSD-style pkg_add package.
See the Support for Windows® Platforms Notes for more information about the SFU-based version of nmake.
This release includes support for Java programs developed using JDK 5.0. This is accomplished through a coordinated release of JavaDeps 2.2, a new version of the Java dependency analyzer tool used by nmake. JavaDeps 2.2 features initial support for the 7 language enhancements introduced in JDK 5.0: enhanced for loop, variable-length argument list, autoboxing/unboxing, static imports, typesafe enumerations, metadata or program annotations, and generics. The language support in JavaDeps 2.2 is current as of JDK 5.0 beta 2. JavaDeps 2.2 also supports the new JDK 5.0 class naming format.
Improvements in the new JavaDeps 2.2 Java dependency analyzer tool yield substantial performance improvements. Measurements of dependency analysis times for large Java projects (in the range of 700-1000 files per project) yield speedups of 5 to 6 times times compared with JavaDeps 2.1.
A new option, disableautomaticprobe, prevents nmake from
automatically triggering a probe of the
$(CC) compiler. When
the option is in effect, nmake will not trigger a probe under
any condition. The option allows users of build rules that do not
$(CC) to conveniently bypass automatic probe and allow
nmake to continue. For example, users of
:JAVA: may not even
have a C compiler and need a convenient way to suppress
based probe. The option is also useful to nmake administrators
who want to prevent end users from kicking off a probe.
The option is set using the
-m command line flag or
disableautomaticprobe option name. The optional variable
disable_probe_message can be set as
ERRORLEVEL custom_message" to further control the
behavior when probe needed but is disabled. If
ERRORLEVEL is 2
or less then custom_message is issued as a warning and processing
is continued. If
ERRORLEVEL is greater than 2 then
custom_message is issued as an error and nmake
exits with an exit code of
ERRORLEVEL-2. The default
disable_probe_message is "3 probe file
non-existent or out-of-date - contact nmake administrator".
CC variable to null is equal to setting
nmake now supports linking against libraries with
non-standard names such as those used by HP-UX C compilers. This
feature works by extending the
-lname atom binding
algorithm for compilers supporting non-standard library names. For
these compilers, the standard search algorithm for
is extended with a third step:
If steps 1 and 2 fail and the last step succeeds,
nmake will bind
<libdir>/name and generate
-l:name compiler option to pick up the library with
non-standard name name. For example:
$ cat Makefile CCFLAGS = a :: a.c -llibdbm.1 $ nmake + cc -t p,/tools/nmake/hppa10/lu3.7/lib/cpp -I-D/tools/nmake/hppa10/lu3. 7/lib/probe/C/pp/2CDDBEC6rbincc -I- -c a.c + cc -o a a.o -l:libdbm.1
The nmake quoteinclude
feature is enhanced to optionally warn only for quoted headers within the
viewpath that inherit a directory prefix. Previously, the quoteinclude
feature unconditionally warned for all quoted headers within the viewpath.
This new feature is useful with compilers that provide means to
override automatic search of quoted include files in the current
directory but do not support prefix include processing, in cases where
the nmake cpp is not used. The new option is activated by
adding "prefix" to the end of the
The usage change is upward compatible. The usage is:
quoteinclude = 1|2|3 [prefix]
The nmake cpp now supports macros with a variable number of
arguments according to the ISO C99 standard. The standard specifies
__VA_ARGS__ should be replaced by the variable argument
list. For example, given input:
#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__) debug("%s %s %s %s", "1", "2", "3", "4");
cpp now outputs:
fprintf (stderr, "%s %s %s %s", "1", "2", "3", "4");
Lock file handling is enhanced to provide information about the process responsible for creating the lock file. The lock file now includes the pid, uid, and hostname and when a lock file is detected the uid is now included in the diagnostic message. Under certain conditions, stale lock files are automatically detected and cleaned up.
nmake normally changes the umask to match the current directory's group
and other write permissions. This may result in files being generated
with unexpected permissions. An option is now available which provides
the ability to suppress this behavior. The option is set using the
-u command line flag or