Nokia nmake Product Builder
Release Notes -- Nokia nmake lu3.5
[Table of Contents]
- 990054 - enhance prefixinclude for native preprocessors
When using a native preprocessor that supports
not prefixinclude, nmake will add necessary
-I flags to the
compile line so the preprocessor can find directory prefixed include files.
See New Features: Prefixinclude for native preprocessors
- 990103 - adding shared lib prerequisite does not trigger relink
Fixed a problem where adding a shared library as a prerequisite to
an already made target would not relink the target. Now nmake relinks
the target with the new prerequisite library as expected.
- 990105 - recurse messages enhancements
- 990136 - Investigate Orbix 3 idl -I- compiler problem
- 010003 - cannot link with shared lib when made in same makefile
You can now build a shared library and link with it in the same
makefile. Previous releases would bind to the archive library
instead of the shared when linking.
- 010006 - .SYNCBEFORECCX should be .VIRTUAL
.SYNCBEFORECCX target is now properly defined as
.VIRTUAL target in the base rules.
- 010020 - makefile gets clobbered
- Under certain, rare conditions the
action would delete the current makefile. This has been fixed.
- The new variable
clobberignore can be defined to
prevent the specified files from being removed by the
clobber common action. For example, to prevent
libxyz.a from being clobbered use
- 010043 - nmake issues error when a user defined makerules is used
When using a user defined makerules named something other than
"makerules.mk", nmake would issue an error message on the second
build. This has been corrected.
- 010044 - clobber will remove user defined makerules.mo
nmake no longer deletes a local copy of makerules.mo when the
clobber common action is specified.
- 010079 - force_shared=0 works the same as force_shared=1
force_shared=0 no longer turns on the force_shared
force_shared=0 will disable the feature if it was already
forces targets to relink when prerequisite shared libraries change.
- 010080 - CC.PRELINK should before -I list
When defined in the probe file, the value of
is now specified on the compile line before the
This is to support EDG based C++ compilers which require the flags in
- 990111 - cpp recognizes too many flags
In some situations a compiler flag will unintentionally activate
a cpp option. For example, cpp will interpret the
flag for Sun's C++ compiler as the cpp
-compat flag to
preprocess code on compatibility mode. This results in incorrect
preprocessing for the target compiler. To avoid conflicts such as
this ppcc now strips offending flags from the command line when calling
cpp and only includes the flags when calling the compiler. The change
was put in ppcc instead of cpp itself to insure cpp retains
compatibility with current usage.
- 990120 - cpp ignores -U__STDC__
cpp now allows the
macros to be undefined using the
-U flag in compatibility
and transition modes when the macros are defined by default . A
warning message is issued when in transition mode. In strict ANSI
mode the macros are read-only and an error is generated.
- 990122 - cpp nested macro not expanded properly
Corrected a problem where nested macros were expanded wrong in the
ANSI dialect when the code contained a leading blank space before
the macro #string.
- 990169 - file scanning-prefixinclude bug
Fixed a bug that caused nmake, under rare circumstances, to skip a
section of a file when scanning the file for prerequisites when
prefixinclude=0. This would cause the implicit
prerequisite list to be incomplete and/or incorrect. This fixes the
problem of scanning
- 990173 - :F edit operator shows %y year incorrectly
Fixed a bug where the
:F edit operator, which is used
to format variable expansion, printed
%y (the short-hand
year) as three digits instead of two. This would, for example, result
102 instead of
- 010014 - wrong rule is run when .JOINT target is meta-rule prerequisite
- A bug was fixed where nmake would use the wrong rule to generate a
target when the following conditions were true: 1) A
rule was used to generate some files and its action block was attached
to the rule (ie. no
.USE rule), 2) A target of the
.JOINT rule matched the prerequisite of a metarule,
and 3) The metarule had more than 1 target. Under these conditions
nmake would run the
.JOINT action to build
the metarule targets resulting in an error.
- Fixed a core dump that occurred with the above conditions when
.JOINT rule generated two files, file A and file B.
The metarule generated file C from file A, and file B included file C.
- 010046 - implicit headers can corrupt build
Fixed a problem that would cause nmake to issue an error when
searching for a non-existent include file that was ifdef'ed out of
the code. The error occurred after the user changed source code to
fix a legitimate error and reran nmake. If the include file was
inside an ifdef block in another source file, and the nmake state file
was not removed, nmake would still issue an error about the missing
include file even after the source code was corrected.
- 020012 - core dump building shell script prerequisite
Fixed a core dump that occurred when building a shell script that
was a prerequisite to a
- 980003 - too many installs using both :INSTALLDIR: and :INSTALL:
install common action acted inconsistently depending
on the order of the
:INSTALLDIR: assertions in the makefile.
For example, assuming the assertions are installing to different target
directories or file names, defining an
assertion followed by the corresponding
:: assertion would
result in a single install action. But defining the
first and then
:INSTALLDIR: would result in two installs.
Similarly, defining assertions in the order of
:: could result in three
:INSTALL: would result in two. The assertions have
been modified so the
:: assertion will not trigger
an install when its target is also installed by
:INSTALL:. The assertions now
give consistent results regardless of their sequence in the makefile.
See also Changes impacting lu3.4 Makefiles: :INSTALL: and :INSTALLDIR:.
- 010001 - extend :: operator to make shared library
Shared library targets can now be built with the
See New Features: :: operator support for building shared libraries.
- 010013 - :LIBRARY: omits prerequisite libraries from .req file
When building a library with
:LIBRARY:, shared library
prerequisites were being left out of the library required file. Shared
libraries are now included in the required file as expected. The
required file is called
name.req for library
libname and is installed to file
When a target has a library prerequisite nmake reads the library's required
file and automatically includes the listed libraries as prerequisites.
- 010024 - :ALL: convert alarm target to .ALARM
Fixed a problem where specifying "
:ALL: alarm" in a
makefile would cause nmake to try to build
of a valid target named
alarm. It is also fixed for
- 010072 - :MAKE: does not like ../dir
:MAKE: operator to recurse to relative
directories starting with
../. This worked in release
lu3.3 but was broken in lu3.4.
- 990128 - CC.STDINCLUDE includes /usr/include/bits first
On Linux® machines probe would include
/usr/include/bits in the list of standard include
directories. This causes errors when using nmake cpp because files
should not be included directly from
they should only be included by other standard include files. Probe
no longer includes
/usr/include/bits in the list of
standard include directories.
- 010015 - need paths canonicalized in probe files
Under certain conditions the paths defined in the probe variables
CC.STDLIB would contain
one or more
../'s making them unnecessarily complex and
difficult to read. The paths are now canonicalized, or simplified
to remove occurrences of "
- 020007 - Solaris C++ 6U2 probe does not set CC.SUFFIX.SHARED
CC.SUFFIX.SHARED variable was incorrectly
set to null for the Sun Solaris C++ 6u2 compiler. Probe now
correctly detects the shared library suffix for this compiler.
- New base rules variable
- New default value for
MAXJAVAC depreciated -
- Enhanced deafult for
- New base rules variable
see New Features: Java inside-package local build
- 020006 - global version stamp for all executables
All binary executables are now stamped with a common version string.
See New Features: Global version stamp in all binary executables
- 020028 - Java enhancements
[Table of Contents]
Last Update: Friday,12-Aug-2016 12:32:14 EDT