Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake lu3.2

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

3. Bug Fixes and Enhancements

3.1 cpp

  1. Fixed a problem where cpp was dumping core when compiled with HP cc compiler. The problem was due to an HP C optimizer bug.
  2. Fixed cpp to warn when a macro is called with more arguments than specified in its definition.
  3. Fixed a problem where cpp dumped core in ANSI mode on unclosed macro invocation in a certain context.

3.2 Common Actions

  1. Fix in .DO.INSTALL where link=1. This fix allows the install common action to work properly with symbolic links.
  2. Fixed a bug where the clobber common action would not remove targets whose name matched $(VROOT)/*.
  3. 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 build applications.
  4. 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 each option.
        $ 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

3.3 Operators

  1. 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.
  2. :LIBRARY: now does a validation check on its target to help insure proper usage.
  3. :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 target.
    For example:
        LINKS = link1.suf1 link1.suf2 link2.suf1 link2.suf2
        :ALL: $(LINKS)
        $(LINKS) :LINK: $$(<:B=orig:S)
        $ nmake
        + ln orig.suf1 link1.suf1
        + ln orig.suf2 link1.suf2
        + ln orig.suf1 link2.suf1
        + ln orig.suf2 link2.suf2
  4. :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
  5. :MAKE: bug fixes. When specifying dir/ as a prerequisite to :MAKE: nmake would build in the current directory without changing directory to dir. Also dir/ was only found in the current viewpath node, it was not found if it only existed down the viewpath.

3.4 Meta-rules

  1. 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.

3.5 Probe

  1. 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 -Kpic.
  2. Probe no longer hangs when probing cross compilers.
  3. Fixed a bug which caused problems in the correct setting of CC.SUFFIX.SHARED when probing with a -L option stored in the $(CC) variable.
  4. hppa has been included in the :machine: list of pp.def, for use in the preprocessor probe.

3.6 Variables

  1. Fixed a bug causing $(@) to erroneously expand to the null string when NPROC > 1.
  2. 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.
  3. Updated variable PROTOCOPYRIGHT for Lucent Technologies.

3.7 Miscellaneous

  1. Better handling of $(PPCC) call in when = options are in $(CC). This fix addresses problems encountered in using compiler options containing an "=" sign in conjunction with $(PPCC).
  2. 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.
  3. 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.
  4. 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 native preprocessor.
  5. 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.
  6. 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 now available.
    For example, an action block containing:
        print -f "%010.3f" 44.75
        print $("23.349":F=%.06e)
  7. 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.
  8. 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).
    Canonical case:
    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 */
        #include "X.h"
        /* second.c */
        #include "../hdr/Y.h"
        /* third.c */
        #include "X.h"
  9. Updated nmake User's Guide and nmake Reference Manual.
  10. Several updates to the man pages.

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

Last Update: Friday,12-Aug-2016 12:31:15 EDT