Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake 3.0

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

4. Bug Fixes

The following bugs were fixed in nmake 3.0:

4.1 Fixes in Handling Variables

  1. A Fix in the += Assignment Operator
    Do not accumulate extra spaces when null value variables are on the rhs of the += assignment operator.
  2. Fixes in Handling Automatic Variables
    • $(!) has the correct value when nmake command is invoked the second time.
    • $(=) can now pass state variables through .EXPORT.
  3. Fix in Handling Modified Variable Value
    If the value of a variable is a bound file name and it may be changed at execution time especially under viewpathing, now examines the old value when nmake command is invoked the second time. If the value changed, makefile will be re-compiled:
        DEFAULT_SRCS = $("file":T=F)
    
        tst:
    	    : $(DEFAULT_SRCS)
        
    When nmake command runs for the first time, the VPATH is set and "file" is located in a lower view. When nmake is invoked the second time, the VPATH is not set, "file" does not exist. nmake will now re-evaluate the value for DEFAULT_SRCS.
  4. 4.1.4 A Fix in Base Rule Variable link
    now correct pattern matching for link=pattern (except link=* in viewpathing, see Section 5.1 for details) when installing selective targets by link (i.e., ln). For example, if t1, t2 and t3 are targets:
        nmake install link=t1
        
    t1 will be linked to the installed area, and the targets t2 and t3 will be copied.
  5. A Fix in Handling $PATH
    Able to handle the long length of the environment variable PATH value.

4.2 Fixes in Handling Common Actions

  1. Fixes in clobber
    • No *.mo file is left in a directory where no *.mo exists and the common action clobber is executed.
    • The clobber common action now also won't clobber the *.mk files when makefile is:
          :MAKE: a.mk b.mk
          
  2. A Fix in clobber.install
    When INSTALLROOT=., clobber.install will now remove files in the installed area.
  3. Fixes in clean and clobber
    The clean and clobber common actions will not remove the files in the installed area when INSTALLROOT has the value of $(HOME).

4.3 Fixes in Handling Assertion Operators

  1. A Fix in :LIBRARY:
    :LIBRARY: now will take CCFLAGS assignment from the command line. For example, using :LIBRARY: with CCFLAGS+=-g on the command line now generates the correct library name (e.g. libname-g.a).
  2. Fixes in the :JOINT: Assertion Operator
    Now make the multiple targets specified on the lhs behave the same when common actions are applied. Touching any secondary targets of a multiple targets assertion now will trigger the action. :JOINT: will not cause core-dump at the subsequent nmake invocation.
  3. Fixes in :MAKE:
    Now find makefiles specified on the rhs of the :MAKE: assertion operator via viewpathing. Also, the variable values assigned on the command line are correctly passed to makefiles. In addition, treats the lhs atom as a label target.
  4. Fixes in :cc:
    :cc: now inherits .SOURCE.h and can locate header files specified in .SOURCE.h. Also, :cc: works in a viewpathing situation. nmake can use *.o's in a lower view to link with top-view targets.
  5. Fixes in :COPY:
    If an implicit dependency of a copied file of :COPY: is touched, the copied file will now be rebuilt. For example:
        a1.c :COPY: a.c
        
    If the included header file is touched, both of a.c and a1.c will be rebuilt.
  6. A Fix in :INSTALLDIR:
    nmake won't install the targets such as in the following example where the target name includes a relative or absolute path, and lhs of :INSTALLDIR: is not specified.
        LIBRARIES = ../lib/liba.a
        :INSTALLDIR: $(LIBRARIES)
        $(LIBRARIES) :: a.c
        

4.4 Fixes in Handling Command Line Options

  1. A Fix for the Exit Code of Unknown Command Line Option
    Now give exit code 1 for any unknown command line options.
  2. A Fix for -g
    Now allow both the global makefile and its compiled file (*.mo) to coexist in the same directory.
  3. Fixes for -M
    Fixes were made in the -M command line option to work with -k and -x options to produce correct output for explicit recursion (i.e. $(MAKE)) and implicit recursion (i.e. :MAKE:), nested includes and conditional includes, and in a viewpathing situation. -k is needed when there are nested includes and -x is needed when using viewpathing. Fixes were also made to generate -l++ for the C++ link line. This command line option has to work with keepgoing (-k) and expandview (-x) to get the correct output. (See Section 5.1 also).

4.5 Fixes in Handling Special Atoms

  1. A Fix in the .DONTCARE Special Atom
    Now correctly react to the command line options ignore and keepgoing when the .DONTCARE special atom is used.
  2. A Fix in the .UNBIND Special Atom
    Now correctly unbind the directories. This special atom didn't function in nmake 2.2.
  3. A Fix in .APPEND.%.x
    .APPEND.%.x now works where x is .ARCHIVE or .TARGET.

4.6 Fixes in Scanning

  1. A Fix in Scanning for C Conditional Includes
    Touching any conditional included header files causes rebuilding relevant target(s).
  2. A Fix in Scanning for Makefile Includes
    Recompile makefiles when an included file of the makefile is touched.

4.7 Fixes in Viewpathing

  1. A Fix in Handling Directory Structure in Viewpathing
    Now correctly find files when some directories are missing either in the top view, or in the intermediate view, or in the bottom view.

4.8 Fixes in Handling Metarules

  1. A Fix in Metarule Chaining
    Now work properly on metarule chaining. Cases like the following did not work in nmake 2.2.
        %.om : %.o
    	    cp $(*) $(<)
    
        %.y : %.r
    	    cp $(*) $(<)
    
        %.r : %.m
    	    cp $(*) $(<)
    
        y.om:
        
    In this example, nmake makes y.mo from y.m by triggering a chain of metarules defined in this makefile and in the base rule file.
  2. A Fix in %.o : %.c .CLEAR Metarule
    Now do not recompile everything when the user is in the top view of VPATH and the rule of
        %.o : %.c .CLEAR
    	    action
        
    is set in a lower view.

4.9 Fixes in Programming Constructs

  1. A Fix in if-elif-else-end Construct
    The construct with back slashes in elif clause now works properly.

4.10 Fixes in cpp

  1. Now correctly processes the ## C++ notation for concatenation.
  2. Does not generate extra space for asm.
  3. Will no longer dump core when handling long comments in C code.
  4. Now gives more appropriate error messages when an error is detected.
  5. Now handles a macro definition containing # at the beginning of the string.

4.11 Fixes in probe

  1. Now generates correct configuration files for all the compilers we know of.
  2. Generates correct directory names for standard include files and libraries of the C++ language processor.

4.12 Fixes in ccc

  1. ccc generates the -I-D option correctly when the mcc68k cross-compiler is used on a SUN4 workstation with nmake.
  2. ccc can now recognize source with .C suffix.

4.13 Miscellaneous

  1. Linking Shared Libraries Once and Not Relinking
    No longer relinks a newer version of shared libraries to targets after the first link, unless the base rule variable force_shared is set to 1.
  2. A Fix in Generating -L Flags
    Now generates -L for the libraries specified in LDLIBRARIES and for shared libraries specified as -lname (i.e. library name is libname.a) in the prerequisite list of the :: operator.
  3. A Fix in Linking Library of -l*.1
    Now treats -l*.1 correctly as a library, not a man page.
  4. Changing User-defined Attributes
    Now do not dump core when user-defined attributes are changed or deleted.
  5. A Fix in the # Style Comments
    Now correctly recognize # style comments when an odd number of quotes exists in the comment.
  6. A Fix in Binding
    No longer dumps core when it cannot bind a file.
  7. A Fix in Handling ./ File Name Aliasing
    Now work correctly with ./ file name aliasing. For example:
        t :: ./src/main.c
        
    vs.
        t :: src/main.c
        
  8. A Fix in Handling exec make
    When nmake execs old make, the Makefile is now picked, not makefile.
  9. A Fix in Generating -I Flags
    Now generate the correct -I compiler flags and no longer ignores the /usr/include used in the .SOURCE.h special atom.
  10. A Fix in Handling cpp
    When using nohup, nmake now won't pick up a wrong cpp.
  11. A Fix in the 2.2 Release Notes
    The base rule variable concurrency has been replaced by recurse.
  12. Fixes in nmake man Pages
    Man pages have been updated.

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

Last Update: Friday,12-Aug-2016 12:29:06 EDT