The changes in nmake 11 are largely backward compatible with nmake 10. Every effort has been made to insure code changes do not unexpectedly change the documented behavior of nmake features.
The following may impact builds and require changes.
:LIBRARY:operator has been changed from "1.0" to "1" to be more consistent with system libraries. This generates a shared library name such as
:LIBRARY:to build versioned shared libraries and expecting version 1.0.
:LIBRARY:after the library name.
abc 1.0 :LIBRARY: a.c b.c c.c
:LIBRARY:operator was installed with a
.nofile name with symbolic links to it for the plain and versioned
.slfiles. For example:
-rwxr-xr-x 1 richb richb 4568 Jun 18 17:50 libabc.no.1.0 lrwxrwxrwx 1 richb richb 13 Jun 18 17:50 libabc.so -> libabc.so.1.0 lrwxrwxrwx 1 richb richb 13 Jun 18 17:50 libabc.so.1.0 -> libabc.no.1.0The
.nofile is no longer used. The versioned
.slfile is installed with one symbolic link for the unversioned file name. For example:
lrwxrwxrwx 1 richb richb 11 Jun 18 17:56 libabc.so -> libabc.so.1 -rwxr-xr-x 1 richb richb 4564 Jun 18 17:56 libabc.so.1
.nofile may have a problem.
.nofile since it is no longer needed.
%zdate format field used by the
:F=%(format)Tedit operator was documented as the time zone type. However the field did not work and always expanded null. The
%zfield has been changed to the time zone offset and the time zone type is now
%qand has been fixed.
%zdate format field with the
:F=%(format)Tedit operator may get unexpected output.
%zfield since it expanded null. If the time zone type is really needed then change
%q. If you would like the time zone offset then leave
makelog_formatvariable need not be set. Some changes have also been made to the XML output. In order to conserve disk space the <targ> tag and its attributes have been shortened to two characters since they will appear many times in a build. The following table shows these changes.
|old name||new name||description|
|targ||tg||target XML tag|
|name||nm||target name attribute|
|host||hn||host machine name attribute|
|stime||st||action start time attribute|
|(new)||et||action end time attribute|
|(new)||ec||action exit code attribute|
|dir||(deleted)||directory name attribute|
makelog_formatvariable to define the target elements change the value to use "tg" instead of "targ". For example,
makelog_format=xml:tg/@. You can also unset
makelog_formatto use the default which now includes all the supported elements in the table above (same as "xml:tg/@"). If you have custom tools processing the XML then change them to use the new tag and attribute names as needed.