Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake 15

August 2013
[Table of Contents] [Previous Section] [Next Section]

3. Detailed List of Changes

3.1 Baserules

  1. 990099 - metarules not searched when CC.REPOSITORY is set
    When the CC.REPOSITORY probe variable was set certain custom metarules would not be searched when making :: targets. This is now fixed so custom metarules are searched and used as expected. Note, CC.REPOSITORY gets set for some C++ compilers.
  2. 010031 - clobber doesn't clean files under $LIBDIR and $BINDIR
    The clobber common action will now remove targets that are built directly in BINDIR and LIBDIR without the install action. The clobber.install common action should continue to be used to remove installed targets.
  3. 020092 - -g user interface inconsistencies
    The -g option for specifying a global makefile could lead to an error where nmake was unable to open the global makefile when it recursed into a sub-directory. The error occurred when the global makefile existed in the local viewpath node and was specified with a relative path to the -g option. In this case when nmake recursed into a sub-directory it would try to reference the global makefile using the same relative path which was no longer correct. This has been fixed so recursive builds refer to the global makefile using the absolute path even when the relative path is originally specified.
  4. 120009 - clobber interface
    New variables clean_extra and clobber_extra can be used to specify additional files to be removed by the clean and clobber common actions respectively. Use the variables to remove files that nmake may not know about, such as files not specified as targets in the makefile but are created as a side-effect of some action or command. Files are listed separated by spaces and may be any mix of file names, shell patterns, nmake variables, nmake functions, and sub-shell commands. The default value of both variables is null.

3.2 cpp

  1. No changes to cpp in this release.

3.3 Engine

  1. 990051 - request for RE metacharacter quote operator
    The :Q edit operator (shell quote) has been extended for quoting regular expression and shell pattern metacharacters used by the nmake :C, :M and :N edit operators. The quoting style is specified by the options :C=C, :C=M and :C=N respectively.
    See also New Features and Enhancements: New Edit Operator options to Quote nmake Metacharacters .
  2. 030014 - confusing results with MAKEPATH
    An error could arise under certain conditions when the MAKEPATH variable was set to a directory holding a prerequisite file with its target created with the same file name in the current directory. During incremental builds the $(*) and $(>) automatic variable could expand to null leading to an error from the shell action. This is fixed so the automatic variables expand correctly and the rule is not triggered unnecessarily.
  3. 060001 - read/write to/from pipe
    The new -l option has been added to the nmake read statement to read one line at a time. This option restores the old behavior of the read statement from release v3.1.2 before it was changed to read an entire file at a time in release lu3.2. Reading a line at a time can be useful for reading from pipes.
    See also New Features and Enhancements: Enhanced Pipe Support for read Statement.
  4. 060027 - :JAR:/nmakelog fix for interix
    The :JAR: assertion operator is now compatible with the nmakelog output serializer on Interix.
  5. 060053 - file expansion after binding
    Under certain conditions applying .UNBIND and then .BIND to a file or directory could result in missing path information in its bound name. This has been fixed.
  6. 080008 - enhancement: tell if a token is an existing directory
    Two new features have been added to identify directories. The new .DIRECTORY Special Atom marks atoms bound to directories, similar to the .REGULAR Special Atom for regular files. Also the :P=X edit operator has been extended with the F, D and L options to identify only regular files, directories or symbolic links.
    See also New Features and Enhancements: New Special Atom to Identify Directories.
    See also New Features and Enhancements: New Edit Operator Options to Identify Existing Files, Directories or Links.
  7. 100009 - inode rule triggers
    Target updates can now be triggered by comparing the inode of the target to the inode of the first file prerequisite. Specify the .TRIGGER.inode Special Atom on the right-hand-side of the rule to add the inode trigger. The :LINK: operator now uses .TRIGGER.inode by default.
    See also New Features and Enhancements: New inode Rule Trigger.
  8. 100011 - add more attribute space
    Space for more internal attributes has been added to the engine.
  9. 110007 - include unfiltered explain messages in debug trace
    When using debug level 5 or higher the explain message are now output in the debug trace with the usual "debug-level" tags and a new "explain:" label so they are easy to find.
  10. 120014 - simplify setup for subdirectory builds in Eclipse CDT
    nmake now updates the value of PWD in the environment if it does not match the current directory. A level 2 debug message is emitted when PWD is reset.
    See also New Features and Enhancements: Eclipse Sub-directory Builds.
  11. 130000 - inode checks need corresponding device checks
    A code review identified a few inode comparisons that were missing a corresponding device comparison, which would make files on different devices with the same inode number look like the same file. These were updated to check devices as needed.
  12. 130004 - core dump from long filename prereq
    A buffer overflow was fixed so a file name prerequisite of 1032 characters or more no longer causes a core dump or crash.

3.4 Operators

  1. 010002 - cannot suppress install of .so files from :LIBRARY:
    The default installation of :LIBRARY: shared library targets into LIBDIR can now be disabled by using the :INSTALLDIR: operator with nothing on the left-hand-side and the library listed on the right-hand-side. This is documented behavior for :INSTALLDIR: but was previously not working for shared libraries created by :LIBRARY:.
  2. 020071 - :MAKE: support for relative paths in MAKEFILES variable
    The :MAKE: operator now supports file names specified with relative paths in the MAKEFILES variable which lists the makefiles to look for when recursing into a directory when no makefile is specified. Previously the files were assumed to be in the current directory only. A warning is now issued for absolute paths in MAKEFILES, which is not supported.
  3. 060068 - :LINK: fails to relink
    A problem was fixed where :LINK: would fail to relink a target when the source of the link was updated by another rule and under certain, rare conditions the link was broken during the update but after its time stamp was touched. The files are now relinked as expected.

3.5 Probe

  1. 120013 - enhance CC.LD probe
    The probe script provides better analysis between the compiler and the ld command to better detect when the compiler can be called in place of ld. In particular, it can now handle cases where the ld command in the PATH is not the ld command native to the compiler being probed.
  2. 130006 - /bin/dash fails to run probe scripts
    The probe script no longer fails when run with the dash shell, which is the default /bin/sh shell on Debian Linux systems. The script detects shells lacking the needed function support and then relaunches itself with ksh or bash.

3.6 Build Log

  1. 100008 - add timezone to start/end times in detailed makefile buildlog view
    HTML build logs generated by buildlog2html now include time zone information with the time stamps. Hours are also now padded to two digits for consistency (minutes and seconds were already padded).
  2. 110028 - MAKE=xmakelog
    An invalid XML file would be created by xmakelog when MAKE=xmakelog was set in the environment. This would cause recursive builds to run xmakelog instead of nmake and leave incomplete XML output files in each directory instead of one complete file for the entire build. Now, the xmakelog command will issue a warning and unset the MAKE variable if it is set.

3.7 Miscellaneous

  1. 120003 - port man pages to Linux/Groff
    All the man pages now work and are supported on both troff and groff based systems. Several miscellaneous rendering issues have been fixed.
  2. 120008 - man page html conversion with groff 1.20
    Man pages have been updated to support conversion to HTML and Postscript using groff. URLs are click-able in viewers that support it. The table in the cpp man page has been fixed to eliminate rendering problems on HP-UX and Linux.
  3. 130002 - sync and add missing man pages
    Information from the manual pages in the Reference Manual have been merged into the on-line man pages bringing everything up-to-date. The HTML man pages for :JAVA:, :JAR: and npwj have been moved to proper on-line man pages and updated. Man pages for the ignore, silent and mamdep commands have been added. A section on the probe hints feature was added to the probe man page. Rendering problems have been fixed on HP-UX. Going forward, the man pages included in the Reference Manual will be generated directly from the on-line man pages, ensuring that both man page versions stay in sync.

3.8 Variables

  1. New baserules variable clean_extra - see 120009
  2. New baserules variable clobber_extra - see 120009

3.9 Options

  1. Enhancement to nmake option -g / global - see 020092
  2. New read statement option -l - see 060001
  3. Update to nmake option -d5 / debug=5 - see 110007

[Table of Contents] [Previous Section] [Next Section]

Last Update: Friday,12-Aug-2016 12:27:04 EDT