Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake lu3.5

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

3. Bug Fixes and Enhancements

3.1 Baserules

  1. 990054 - enhance prefixinclude for native preprocessors
    When using a native preprocessor that supports -I- but 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
  2. 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.
  3. 990105 - recurse messages enhancements
    • If set, the contents of $(recurse_begin_message) and $(recurse_end_message) are now printed when recursing to a file. Previously, they were only printed when recursing to a directory.
    • The recurse message variables are now more flexible. The directory or file being recursed to are not automatically appended to the message. If desired, they can be added using $(RECURSE_MESSAGE). This added flexibility allows the recurse messages to be defined in the style of GNU make as shown below:
          recurse_begin_message = make: Entering directory \`$PWD\'
          recurse_end_message = make: Leaving directory \`$PWD\' 
      See also Changes impacting lu3.4 Makefiles: recurse messages enhancements.
  4. 990136 - Investigate Orbix 3 idl -I- compiler problem
  5. 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.
  6. 010006 - .SYNCBEFORECCX should be .VIRTUAL
    The .SYNCBEFORECCX target is now properly defined as a .VIRTUAL target in the base rules.
  7. 010020 - makefile gets clobbered
    • Under certain, rare conditions the clobber common 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 clobberignore=libxyz.a.
  8. 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.
  9. 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.
  10. 010079 - force_shared=0 works the same as force_shared=1
    Setting force_shared=0 no longer turns on the force_shared feature. force_shared=0 will disable the feature if it was already enabled with force_shared=1. Setting force_shared=1 forces targets to relink when prerequisite shared libraries change.
  11. 010080 - CC.PRELINK should before -I list
    When defined in the probe file, the value of CC.PRELINK is now specified on the compile line before the -I flags. This is to support EDG based C++ compilers which require the flags in this order.

3.2 cpp

  1. 990111 - cpp recognizes too many flags
    In some situations a compiler flag will unintentionally activate a cpp option. For example, cpp will interpret the -compat=4 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.
  2. 990120 - cpp ignores -U__STDC__
    cpp now allows the __STDC__ and __STDPP__ 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.
  3. 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.

3.3 Engine

  1. 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 perl.h.
  2. 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 in year 102 instead of 02.
  3. 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 .JOINT 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 the .JOINT rule generated two files, file A and file B. The metarule generated file C from file A, and file B included file C.
  4. 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.
  5. 020012 - core dump building shell script prerequisite
    Fixed a core dump that occurred when building a shell script that was a prerequisite to a .FUNCTIONAL target.

3.4 Operators

  1. 980003 - too many installs using both :INSTALLDIR: and :INSTALL:
    The install common action acted inconsistently depending on the order of the ::, :INSTALL:, and :INSTALLDIR: assertions in the makefile. For example, assuming the assertions are installing to different target directories or file names, defining an :INSTALLDIR: 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 :INSTALLDIR:, :INSTALL:, and :: could result in three installs, while :INSTALLDIR:, ::, and :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 :INSTALLDIR: or :INSTALL:. The assertions now give consistent results regardless of their sequence in the makefile.
    See also Changes impacting lu3.4 Makefiles: :INSTALL: and :INSTALLDIR:.
  2. 010001 - extend :: operator to make shared library
    Shared library targets can now be built with the :: operator.
    See New Features: :: operator support for building shared libraries.
  3. 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 $(LIBDIR)/lib/name. When a target has a library prerequisite nmake reads the library's required file and automatically includes the listed libraries as prerequisites.
  4. 010024 - :ALL: convert alarm target to .ALARM
    Fixed a problem where specifying ":ALL: alarm" in a makefile would cause nmake to try to build .ALARM instead of a valid target named alarm. It is also fixed for targets named bind and sync.
  5. 010072 - :MAKE: does not like ../dir
    Fixed the :MAKE: operator to recurse to relative directories starting with ../. This worked in release lu3.3 but was broken in lu3.4.

3.5 Probe

  1. 990128 - CC.STDINCLUDE includes /usr/include/bits first
    On Linux® machines probe would include directory /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 /usr/include/bits, they should only be included by other standard include files. Probe no longer includes /usr/include/bits in the list of standard include directories.
  2. 010015 - need paths canonicalized in probe files
    Under certain conditions the paths defined in the probe variables CC.STDINCLUDE and 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 "../".
  3. 020007 - Solaris C++ 6U2 probe does not set CC.SUFFIX.SHARED
    The 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.

3.6 Variables

  1. New base rules variable clobberignore - see 010020
  2. New default value for JAVACLASSDEST - see 020028
  3. Variable MAXJAVAC depreciated - see 020028
  4. Enhanced deafult for JDEPSDIR - see 020028
  5. New base rules variable JAVAPACKAGEROOT - see New Features: Java inside-package local build

3.7 Miscellaneous

  1. 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
  2. 020028 - Java enhancements

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

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