Alcatel-Lucent nmake Product Builder
Release Notes -- Alcatel-Lucent nmake lu3.7
October 2004
[Table of Contents]
[Previous Section]
[Next Section]
2. New Features and Significant Enhancements
2.1 Support for the Services for Unix (SFU) platform
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.
2.2 Support for JDK 5.0
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.
2.3 Performance improvement in Java dependency analysis
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.
2.4 Option to disable probe
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
involve $(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 $(CC)
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
value of disable_probe_message is "3 probe file
non-existent or out-of-date - contact nmake administrator".
Setting the CC variable to null is equal to setting
disableautomaticprobe and disable_probe_message
to null.
2.5 Support for HP-UX nonstandard shared library names
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 -lname
is extended with a third step:
- libname$(CC.SUFFIX.SHARED)
- libname$(CC.SUFFIX.ARCHIVE)
- name
If steps 1 and 2 fail and the last step succeeds, nmake will bind
-lname to <libdir>/name and generate
a -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
2.6 quoteinclude prefix enhancement
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 quoteinclude setting.
The usage change is upward compatible. The usage is:
quoteinclude = 1|2|3 [prefix]
2.7 Support for ISO C99 standard variadic macros
The nmake cpp now supports macros with a variable number of
arguments according to the ISO C99 standard. The standard specifies
that __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");
2.8 New lock files
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.
2.9 Option to suppress umask change
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 disableumaskchange
option name.
[Table of Contents] [Previous Section] [Next Section]







