Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia 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:

  1. libname$(CC.SUFFIX.SHARED)
  2. libname$(CC.SUFFIX.ARCHIVE)
  3. 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
    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]

Last Update: Friday,12-Aug-2016 12:32:51 EDT