Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake lu3.3

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

3. Bug Fixes and Enhancements

3.1 cpp

  1. 980033 - cpp directives
    A "#" in the middle of a line is no longer incorrectly interpreted as a cpp directive.
  2. 980035 - cpp ANSI mode token-based preprocessing error
    Fixed the cpp ANSI dialect to correctly handle token-based processing. Given:
        #define MINUS -
    The conforming output should be:
        i= - -j ;
    cpp output was:
    Note that the result is semantically different; in the traditional case i is assigned the result of applying the prefix decrement operator to the value of j. In the ANSI case, i is assigned the result of applying the minus operator to the result of applying the minus operator to the value of j.
  3. 990014 - cpp dumps core with a huge string constant
    Fixed a bug where cpp dumped core when processing a huge string constant. cpp would write the value of the constant to the output buffer, but would core dump when the string was larger than the buffer. This is fixed and cpp now correctly handles huge string constants.
  4. 990052 - cpp C++ output ">>" should be "> >"
    Fixed a problem where cpp did not output a proper space between two consecutive angled brackets for C++ preprocessing. This caused errors from the C++ compiler, such as:
        Error: Invalid template parameter default        .
  5. 990067 - cpp hangs in transition mode
    cpp now preprocesses correctly and no longer hangs in transition mode.
  6. 990072 - cpp problem with macro replacement using # operator
    cpp now handles the "#" operator when preprocessing in the ANSI dialect.
    (Not available on the Amdahl UTS platform.)

3.2 Engine

  1. 980001 - export nmake variables to shell
    see New Features: Export nmake Variables to Shell
  2. 980013 - output of nmake print statement is delayed
    In previous releases the output of print statements would be delayed relative to subsequent shell actions. The output (not only print) is no longer delayed.
  3. 980068 - :L listing non-existent files
    Under certain conditions the :L edit operator would list files that did not exist. This happened when a file (file1) in the list had been scanned (to compile some code) and file1 included another file (file2) within a false #ifdef directive. In this case :L would list file2 even though file2 did not exist. This has been fixed.
  4. 990044 - detect corrupted .ms state files
    Now issue a proper warning message and exits when an existing state file is corrupt.
  5. 990069 - does not work correctly in viewpathing
    Now properly detect when the state of an included makefile changes when using to search for included makefiles.
  6. 990071 - simple and prefix include of same file leads to error
    Fixed a problem that an improper -I command line argument list is generated for the compiler resulting in the preprocessor being unable to find an include file. The behavior was produced when the same file was included by different source files, one using a path prefix to the include file and another using simply the filename, within the same makefile, and the makefile was executed more than once for different targets in the makefile.
  7. 990077 - warn for missing included makefiles
    If an included makefile is missing or deleted, a proper warning message is issued . To ignore missing included makefiles use 'include - ""' (notice the dash).
  8. 990083 - problem with .SYNC
    The .SYNC special atom is more reliable.
  9. 990084 - make include expansion
    see New Features: Include Makefile Expansion

3.3 Operators

  1. 980011 - :LINK: supports symbolic links
    Set symbolic_link=1 for :LINK: to create symbolic links, otherwise hard links are used.
  2. 980012 - :INSTALL: and :INSTALLDIR: not ignored
    The return code of install operations are no longer ignored.
  3. 980030 - :COMMAND: and .FUNCTIONAL unnecessary rebuilds
    In previous releases a prerequisite to a :COMMAND: or .FUNCTIONAL assertion would cause unnecessary rebuilds. This is no longer the case and prerequisites may be used with these assertions.
  4. 980044 - :cc: can't find library down the VPATH
    A makefile that used :cc: to build a library and link an executable with that library would not provide the path to the library when updating the executable when the library existed down the VPATH. This now works properly and the full path to the library is provided on the command line as expected when the library is down the VPATH.
  5. 990006 - :MAKE: executes more makefiles than expected
    :MAKE: no longer recurses to files named *.mk when the RHS is unspecified or *. By default these cases will only recurse to all subdirectories containing makefiles. To visit files you may specify *.mk on the RHS. See Changes Impacting lu3.2 Makefiles.
  6. 990015 - :: (double colon) recompiles .c file unexpectedly
    Under certain conditions the :: operator would create dependencies between two targets causing files to be recompiled when nothing changed. For example, the following makefile would make gvaS.o depend on gvaC.o and vise versa, so compiling one would make the other out of date. This is now fixed and the improper dependency is not created.
        %S.c %C.c %.h : %.idl
    	idl -s S.c -c C.c -h .h $(>:B:S)
        gvaS.o :: gva.idl
        gvaC.o :: gva.idl
  7. 990064 - :LIBRARY: build output
    Cleaned up build output generated from :LIBRARY: when when checking prerequisite libraries.
  8. 990085 - more control of :LIBRARY: for shared libraries
    see New Features: More Control of :LIBRARY: for Shared Libraries
  9. 990093 - :cc: synchronization of state files
    The use of the :cc: operator spawns another nmake process which results in a separate state file. In the past this spawned nmake process did not have any knowledge of the state information from the parent. This lack of sharing could result in files rebuilding unexpectedly. Now the spawned :cc: process reads the state information of the parent to prevent such behavior. See also New Features: EXTRASTATE Engine Variable.

3.4 Meta-rules

  1. 990034 - .ACCEPT not obeyed for meta-rule targets
    The .ACCEPT special atom now works as expected for meta-rule targets.
  2. 990050 - cyclic meta-rule causes core dump
    No more core dumps when cyclic meta-rules are encountered. Now issue an error message identifying the cyclic meta-rules.

3.5 Probe

  1. 990031 - localprobe fixes: PROBE, PROBEBASE, -I-D
    Set default PROBE=probe. Fixed a problem where the reference to a local probe file may have filename truncated if the filename includes a ".". Fixed a problem where the -I-D compile line argument, when using localprobe=vpath, may reference the local probe file using a relative path, however cpp, which uses the -I-D argument, does not handle the relative path. All references were changed to use the full path to the local probe file.
  2. 990032 - CC.ALTPP.FLAGS not correct for CC with invalid option
    Fixed a problem that caused probe variables to be set incorrectly when an invalid compiler option is set as part of the CC variable.
  3. 990033 - gcc cannot compile to file with "dynamic" in name
    Some older versions of gcc fail to compile when the output filename begins with the string "dynamic". This caused the probe variable CC.SUFFIX.SHARED to be set incorrectly. The probe scripts now work around this problem so the probe information is correct for these compilers.
  4. 990048 - core dump about probe
    Under certain conditions probe would core dump when using localprobe=vpath. This has been fixed.
  5. 990061 - error when processing /usr/include/dce/cma_config.h on HP-UX
    A missing cpp directive from HP-UX probe files would result in the following error when including <dce/cma_config.h>:
        "/usr/include/dce/cma_config.h", line 243: read error
    This has been fixed and HP-UX platforms now get '#pragma pp:nocdir "-"' properly defined in the pp probe file.
  6. 990079 - CC.AROPTS not set correctly on HP
    For legacy reasons the probe variable CC.AROPTS was set to "f" on HP-UX machines. The "f", given as an argument to ar, caused the archive member names to be truncated to 14 characters to be compatible with older HP-UX releases. This is no longer necessary and undesirable and has been removed from the probe setting. Archive member names will no longer be truncated on HP-UX machines.
  7. 990086 - attach comments to items in probe information file
    The make probe file now contains comments for variable so users can better understand the meaning of the probe file contents. Also see New Features: Improvements to Probe.
  8. 990102 - change the default value of CC.PIC for Solaris C++ compiler
    The Solaris C++ compiler treats -KPIC slightly different than -Kpic. In some cases -Kpic is not sufficient for compiling code and -KPIC must be used. probe now picks up -KPIC if it is supported before -Kpic for the value of CC.PIC. This will impact any compiler that supports both -KPIC and -Kpic, however most compiler treat the two flags equally.

3.6 Variables

  1. 990046 - CC.PROFILE set wrong for instrument usage
    CC.PROFILE is now set correctly when using instrumentation, such as instrument=purify.
  2. New engine variable EXTRASTATE - see New Features: EXTRASTATE Engine Variable
  3. New engine variable MAKEEXPORT - see New Features: Export nmake Variables to Shell
  4. New base rules variables sharedlibvers and sharedliblinks - see New Features: More Control of :LIBRARY: for Shared Libraries
  5. New base rules variable symbolic_link - see 980011

3.7 Miscellaneous

  1. 990000 - typo in .ARPROFILE
    A typo (missing "$") has been corrected. Now able to pick up libraries named such as libname_g.a when the -g CCFLAG is used. Note that this impacts the use of an underscore in the library name, not a dash. The search order is libname-g.a, libname_g.a, libname.a.
  2. 990028 - hostinfo reports wrong number of CPUs for Solaris
    The hostinfo command now uses the mpstat command to get the correct number of processors on Solaris platforms.
  3. 990045 - instrument changes for Lucent C++
    see New Features: Lucent C++ Instrument Support
  4. 990049 - extraneous output on HP-UX
    The ksh supplied with current HP-UX systems caused unexpected verbose output during install and clobber operations. This has been worked-around so the typical output will now be displayed when using HP's ksh.
  5. 990062 - update makelog package
    Fixed an infrequent problem where action block tag IDs are not recognized due to unexpectedly short tag strings (provided by $COTEMP). Removed some tracing code to reduce run-time overhead.
  6. 990063 - prerequisite library specified on ar command line
    When archiving a library, prerequisite libraries in addition to the .o files on the ar command line are included. For example:
        liba.a :: a.c -lbb
        + ar r liba.a a.o libbb.a
        ar: libbb.a is in archive format - embedded archives are not allowed
    This fixed and namke no longer passes the prerequisite library to ar.
  7. 990078 - x.c is recompiled when x.o is found in another directory
    When building x.o from x.c in the current directory, and the .SOURCE.o paths contain another x.o, the local x.c would be unnecessarily recompiled when the viewpath was used. This has been fixed, and the x.o found in .SOURCE.o no longer throws the local x.o out-of-date.
  8. 990118 - coshell version string is wrong
    The coshell version string now correctly identifies coshell.

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

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