Released: July 2012
1.1 Supported Platforms
1.2 Software Requirements
1.3 Customer Support
2. Summary of Changes
2.1 64-bit Linux package
2.2 Fixes for XML build logs
2.3 Probe fixes for gcc/g++
2.4 Engine stabilization
2.5 Java 7 Support
3. Detailed List of Changes
3.6 Build Log
4. Changes Impacting nmake 13 Makefiles
5. Known Problems and Remarks
5.1 Known Problems
This document announces the new release of nmake version 14. nmake is fully supported and is in wide production use throughout Alcatel-Lucent, AT&T, and elsewhere.
These nmake 14 Release Notes discuss in detail the new features, and highlight bug fixes, additional enhancements, and known problems.
The nmake 14 release has been ported to many UNIX-based and UNIX-like systems and is available for HP-UX, Linux, Solaris, and Windows (under SFU/Interix). For a current list of platforms and available distribution packages see the nmake 14 release page on the nmake web site, http://www.bell-labs.com/project/nmake/. nmake is generally upward compatible with later OS releases in a series (for example, the series Solaris 2.5 through 2.10). Contact the Customer Support helpdesk (see below) with any compatibility questions or requests for porting to other systems.
nmake 14 provides dependency-based Java build support. This feature currently requires an external Java source scanner called JavaDeps to extract inter-modules dependencies from Java source. nmake 14 requires JavaDeps release lu2.2.4 or greater. The latest version is downloadable from the nmake JavaDeps page. Installation instructions are also on that page. THIS PACKAGE IS ONLY REQUIRED BY PROJECTS PERFORMING JAVA BUILDS USING THE :JAVA: ASSERTION OPERATOR. JavaDeps release lu2.2.4 is itself written in Java; it requires jdk1.2.1 or higher version on its PATH in order to run. (Note that this does not restrict the project being built to jdk1.2.1 or higher.)
The buildlog2html command
requires Java runtime 1.5 or above. It will also use
neato commands, if available, to generate diagrams showing
build log structure. Graphviz versions 2.16 or above are known to work.
buildlog2html generates an HTML log from a
structured build log.
The Windows-based version of nmake is based on the Windows Services for UNIX (SFU/Interix) porting/development environment from Microsoft and requires installation of the SFU package in order to run. The SFU package must be obtained from Microsoft and installed following their installation procedure. For more information see the Support for Windows page.
We provide patch support, where code changes are required, for the latest 2 point releases of nmake (currently releases nmake 14 and 13). Customers using older releases can still acquire help in using the product, but genuine problems found in older releases will not be fixed. Such problems may require an upgrade to a current release or, when possible, a makefile work-around will be provided.
Fee-based services are also available. These include makefile rewrites, conversion of non-nmake makefiles to nmake, integration with vendor tools, build assessments, and porting nmake to new machines.
Contact Customer Support for any questions regarding nmake.
The nmake 14 release focuses largely on bug fixes and stability with over 25 fixes and enhancements.
The nmake 14 release adds a new native 64-bit Linux package to take advantage of 64-bit systems. The 32-bit ilinux package is still certified and available for both 32-bit and 64-bit Linux systems as in past releases. The new x64linux package is a native 64-bit package certified only for 64-bit systems.
There have been several fixes for generating and processing XML build logs with xmakelog and buildlog2html respectively. These include fixes for corrupt or missing XML tags, missing top level build information and handling of default icons for HTML logs. For details see section 3.6: Build Log.
The probe tool includes fixes targeting the popular gcc and g++ compilers. Included are fixes for picking up the C++ standard include directories and probing compilers installed outside of /bin and /usr/bin. For details see section 3.5: Probe.
Several panic errors, core dumps, memory faults and unexpected rebuilds have been fixed in the engine resulting in a more stable and robust product. Other engine enhancements include improved error messages and debug trace output. For details see section 3.3: Engine.
Javadeps alu2.3 now supports the new Java 7 language features. Javadeps is used by the :JAVA: operator to scan java code for dependencies. The Javadeps alu2.3 release coincides with, and is compatible with nmake 14. The following new language features are supported:
Note, earlier Javadeps releases can already parse the new Strings in switch Statements feature. See the Javadeps page for more information and downloads.
dir/file.h) from their parent when the include directive uses quotes. When using this feature a bogus warning would be issued when a header was included twice, once from a prefixed header outside the viewpath and once from a non-prefixed header inside the viewpath. No warning should be issued since the parent header inside the viewpath was not included with a directory prefix and warnings are limited to files in the viewpath. This issue has been fixed.
../" directory prefix (eg.
../dir/file.h). This issue has been fixed.
dir/) was used as a search directory in a
.SOURCEsearch atom and with the
:cc:operator in the same makefile.
$(&)used in an assertion operator was expanded out of context when the operator was parsed. The variable now expands to null in this case and a level 10 debug message was added.
.ACCEPTattribute no longer rebuild when their file's time stamp does not change or changes backward. The behavior is now consistent with when the time stamp is changed forward. This fixes the
:LINK:operator so targets are not relinked unconditionally on the second build.
dir1) and its sub-directory (eg.
dir1/dir2) are both targets in a makefile and made using concurrency.
#include <file.h>and the second source file using the full path
#include "/full/path/file.h". This has been fixed and the unnecessary rebuild is no longer triggered.
dir/) and the directory is used in such a way that it is scanned while the makefile is still being parsed.
--javaversionoption is now passed to Javadeps when using Java 1.5 or later. Previously the option was not specified for releases later than Java 1.5 causing Javadeps to default to using Java 1.4 style class names for the dependencies.
/usr/binto the front of the PATH. When probing compilers in non-standard locations this caused some compiler tools to be picked up in these directories, effectively overriding corresponding tools in the compiler's installation area, which could lead to incorrect probe results. This is fixed and the probe scripts no longer modify the PATH.
buildlog.cssfiles in the build log directory failed to update when the default files changed. Added the new
buildlog2htmlto be used to suppress any attempt to update the icon and css files.
</makelog>tag is now included in the log when nmake launches
/bin/make(or OLDMAKE if defined) to process a makefile. When using gnu style recurse messages the closing recurse message is now also issued for such makefiles.
.JOB.INFO.has been introduced which returns information about the current triggered job when called during shell action block expansion. Currently it will contain
.FUNCTIONALfor .READ and .FUNCTIONAL jobs respectively. The variable can be used to test for this information on the current job in cases where the current target cannot be tested.
.JOB.INFO.- see 110025
-i- see 110022
The changes in nmake 14 are largely backward compatible with nmake 13. Every effort has been made to insure code changes do not unexpectedly change the documented behavior of nmake features. For makefiles that conform to nmake's documentation there will be no makefile updates necessary to migrate from nmake 13 based release to nmake 14.
The following is a list of known problems:
linkvariable) to install targets in any adjacent nodes in viewpathing still exists. You may still use linking to install, but only in alternate nodes -- installation using copying must alternate with installation using linking. The problem occurs with both symbolic and hard linking.
:LINK:does not handle archive files that are generated by
:LIBRARY:assertion operators. Users should avoid use of
:LINK:on archive files.
-I-Sflag is on,
-D-Mis disabled. Users should not use these two flags together.
.LCL.INCLUDEattributes to the header file, and this can result in incorrect
-Ilists in the compiler command lines generated.
SHELLenvironment variable points to ksh93 you may get the following warnings when building your shell scripts:
warning: line 1: `...` obsolete, use $(...). The warning is generated running your script with
ksh -n. To eliminate the warning either update your shell scripts as indicated by the message or set
SHELLto another version of ksh that does not generate the warning, such as ksh88.