Nokia nmake Product Builder
Release Notes -- Nokia nmake lu3.2
[Table of Contents]
- Fixed a problem where cpp was dumping core when compiled with
HP cc compiler. The problem was due to an HP C optimizer bug.
- Fixed cpp to warn when a macro is called with more arguments
than specified in its definition.
- Fixed a problem where cpp dumped core in ANSI mode on unclosed
macro invocation in a certain context.
- Fix in .DO.INSTALL where link=1. This fix allows the
install common action to work properly with symbolic links.
- Fixed a bug where the clobber common action would not
remove targets whose name matched $(VROOT)/*.
- Enhanced clobber common action so that .ti
files are removed when used with Lucent C++ 5.0. This enhancement is all
that is needed to allow use of nmake with C++ 5.0 to
- The cc- common action now supports +opt and
multiple options. This common action assumes the existence of one or more
cc-opt subdirectories, where opt is any valid
CCFLAGS value (ex. g, p, pg, etc.). When nmake is
invoked with the cc- or cc-opt common action, it will
build the executables for each of these compiler options or the specific one
specified by opt and place them in the corresponding directory.
The enhancement allows the use of +opt compiler options and also
allows multiple options to be specified using a tilde (~) to separate
$ nmake cc+eh
+ ppcc -i /home/bugati/nmake/build/lu3.2/karna-bld1/lib/cpp cc+eh
4FEobincc -I- -c ../a.c
$ nmake cc-g~+eh~-xtime
+ ppcc -i /home/bugati/nmake/build/lu3.2/karna-bld1/lib/cpp cc -g
+eh -xtime -I-D/home/bugati/nmake/build/lu3.2/karna-bld1/lib/prob
e/C/pp/BFE0A4FEobincc -I- -D_TRACE_ -c ../a.c
- A fix for :LIBRARY: support for required libraries.
When building a library using :LIBRARY: and specifying -lname
library prerequisites (or listing required library names on the lhs)
nmake will keep track of the required libraries.
When the target library is used to link with an executable the required
libraries will be automatically included in the link. In some cases a
valid required library was ignored and not included when linking with
the target library. Now these required libraries are included when
linking with the target library.
- :LIBRARY: now does a validation check on its target to
help insure proper usage.
- :LINK: now supports the following usage:
lhs :LINK: rhs
Where rhs may be a file name or a variable expansion evaluating
to a file name. rhs is evaluated separately for each element of
lhs. During each expansion $$(<) evaluates to the current
LINKS = link1.suf1 link1.suf2 link2.suf1 link2.suf2
$(LINKS) :LINK: $$(<:B=orig:S)
+ ln orig.suf1 link1.suf1
+ ln orig.suf2 link1.suf2
+ ln orig.suf1 link2.suf1
+ ln orig.suf2 link2.suf2
- :MAKE: now allows targets specified on the lhs
to be recursively built.
For example, the following makefile will build the targ1 target
in directories a, b, and c. Directories
d, e, and f will not be visited.
targ1 :MAKE: a b c
targ2 :MAKE: d e f
$ nmake recurse targ1
- :MAKE: bug fixes.
When specifying dir/file.mk as a prerequisite to
:MAKE: nmake would build file.mk in
the current directory without changing directory to dir. Also
dir/file.mk was only found in the current viewpath node, it
was not found if it only existed down the viewpath.
- Added support for .cpp and .cxx files in
the base rules. User defined meta-rules are no longer needed to build
source files which use .cpp or .cxx suffixes.
- Probe update for new SGI C compiler.
The new SGI C compiler understands -KPIC but not -Kpic.
The probe script now checks for both options explicitly instead of only
- Probe no longer hangs when probing cross compilers.
- Fixed a bug which caused problems in the correct setting of
CC.SUFFIX.SHARED when probing with a -L option stored in the
- hppa has been included in the :machine: list of
pp.def, for use in the preprocessor probe.
- Fixed a bug causing $(@) to erroneously expand to the null
string when NPROC > 1.
- Improved treatment of state variable consistency.
When using state variables defined at multiple levels in the viewpath,
unnecessary rebuilds due to state variable consistency, induced by initial
state variables found at a higher level of the viewpath affecting state
variables found at a lower level of the viewpath, is no longer a problem.
- Updated variable PROTOCOPYRIGHT for Lucent Technologies.
- Better handling of $(PPCC) call in Makerules.mk when = options are
in $(CC). This fix addresses problems encountered in using compiler
options containing an "=" sign in conjunction with $(PPCC).
- The read -i <file> construct, introduced in
Release 3.1, has been enhanced to read the entire input file, not
just the first line from that file.
- Fixes for genlocal and hostinfo.
genlocal would produce an error if hostinfo didn't return
the expected output from a remote machine (for example if a compiler was
not licensed). genlocal also failed to report some machines in
the network. genlocal now uses niscat in addition to
ypcat and /etc/hosts to get a list of possible machines
in the network.
- Increased -I- support for native preprocessors.
Now the native preprocessor is default if it supports
-I-. With some compiler (ie. gcc) nmake would still use
the cpp even though the native tools supported -I-.
Defaulting to the native preprocessor can be overridden by specifying
nativepp=0 to force the use of nmake cpp.
prefixinclude is turned off when using the native preprocessor.
When using compilers that support -I-, such as Lucent's C++ 4.0,
sometimes header files would not be found due to the use of
prefixinclude. Now prefixinclude is turned off when using any
- Fixed problem in interaction between Lucent C++ 5.0 and
iffe. The problem results from the different treatment of
functions when extern "C" declarations are used.
- The print construct and :F edit operator now accept
%[eEfFgG] conversion. For both the print construct and the
:F edit operator, the %e, %E, %f,
%F, %g, and %G conversion specifiers are
For example, an action block containing:
print -f "%010.3f" 44.75
- Fix for core dump when using the -d1 option. In
some scenarios of unbinding an atom, the debug option could lead to a
core dump during debug output.
- A bug fix for 3.1.2 -I include file handling, when
dealing with relative paths to include files in certain scenarios, has
been addressed (full explanation below).
A source file includes some X.h from .SOURCE.h (in
different directory). A second source file includes some Y.h
using a relative path to the location of Y.h. Y.h
again includes X.h with no path specification. Then, the next
source file which includes X.h gets the "cannot find
include file" error.
Test case is as follows:
/* Makefile */
.SOURCE.h : ../hdr
main :: main.o first.o second.o third.o
/* first.c */
/* second.c */
/* third.c */
- Updated nmake User's Guide and
nmake Reference Manual.
- Several updates to the man pages.
[Table of Contents]
Last Update: Friday,12-Aug-2016 12:31:15 EDT