Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake 10

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

3. Bug Fixes and Enhancements

3.1 Baserules

  1. 040033 - link archive libs in shared lib target
    Shared library targets made with the double colon operator (::) can now be linked with archive library prerequisites.
  2. 060009 - LDFLAGS for shared libraries
    LDFLAGS can now be used to specify link flags when creating shared libraries with a Sun C++ compiler. It previously only worked with other compilers. If necessary LDFLAGS can be defined on a per-target basis as follows: :: abc.c LDFLAGS=-flag
    xyz :LIBRARY: xyz.c : LDFLAGS=-flag
  3. 060019 - .SHARED.o strips ../ files from link line
    Shared libraries can now be generated with object files that begin with a path of "../". Previously, paths starting with "." were stripped from the link line.
  4. 070016 - Sun -library=x flag should be in CC variable
    Compiler flags that alter the tool's default header and/or library search paths should be included in the CC variable instead of CCLFAGS so the compiler is probed in the proper mode and the nmake probe configuration includes the modified search paths. A warning is now issued when such a flag is included in CCFLAGS. The warning can be eliminated by moving the flag to the CC variable or suppressed by setting the nmake variable libopts_warning to null in the makefile. Currently the Sun -library and -compat flags are detected. The new probe variable CC.LIBOPTS contains the affected flags supported by the compiler. Here are examples of setting the flag in the CC variable.
    CC = /opt/SUNWspro/bin/CC -library=iostream
    CC += -library=iostream
  5. 080011 - experimental support for configurable structured build logs
    Experimental support for configurable structured build logs has been introduced. For example, XML based build logs can be generated.
    For details see - New Features and Enhancements: Experimental structured build logs.

3.2 cpp

  1. No changes to cpp in this release.

3.3 Engine

  1. 040043 - metarule $(>) expands non-matching prerequisites
    The behavior of the $(>) automatic variable in metarules has been restored to the original behavior prior to release lu3.6 and has been properly documented (see lu3.6 Release Notes, change 010035). The restored behavior provides more consistent and predictable behavior. In metarules, the $(>) automatic variable expands only the primary metarule prerequisite, which is the first %-pattern prerequisite of the rule, and is never null. This eliminates problems where, under certain conditions, a compile of a .c file would include other .o files on the compile line or $(>) would expand other unexpected files. To expand prerequisites other than the primary metarule prerequisite use the $(*) automatic variable.
  2. 050032 - lost .ATTRIBUTEs
    A problem has been fixed where two internal attributes clashed with user defined attributes causing the user attributes to be set and unset unexpectedly. The clash has been eliminated and the user attributes are no longer affected.
  3. 050051 - $(>) expands too many files
    The $(>) automatic variable no longer expands unexpected files in metarules. See change 040043 for more information.
  4. 060067 - CTRL-M in files
    Makefiles containing DOS style two-byte newlines can now be properly read and parsed on all platforms. nmake ignores CTRL-M characters at the end of a line allowing better integration with Windows based text editors and IDEs.
    See also - Changes Impacting alu3.9 Makefiles: CTRL-M at the end of a line.
  5. 080004 - recurse messages output too late
    There are now three distinct recurse message types: default, gnu and custom. The types are not compatible; changing type during a recursive make is not supported and will result in a warning. GNU style recurse messages (recurse_begin_message=gnu) are now output in sub-makes at the very beginning (before engine bootstrap) and very end of an nmake run. This is useful when using nmake with development tools that use the GNU recurse messages to track the current directory in recursive builds. Tools such as Eclipse can now perform accurate tracking of all errors encountered during a run including early errors output by nmake itself. The MAKELEVEL variable is now incremented in the parent make when setting up the environment, making the new value uniformly available throughout sub-make and action block execution. References to MAKELEVEL should only use the nmake variable $(MAKELEVEL).
    See also - Changes Impacting alu3.9 Makefiles: The MAKELEVEL Variable.

3.4 Operators

  1. 060005 - jdk 1.4.2 uses jdk 1.5 style class names
    JDK 1.4.2 is now supported by the :JAVA: operator. When using JDK 1.4.2 to compile Java code the flag --javaversion=1.4.2 is passed to Javadeps to generate JDK 1.4.2 style class names for the targets and dependencies. The JDK 1.4.2 style names are slightly different than both the JDK 1.4.1 and JDK 1.5. Javadeps version alu2.2.4 is required.
  2. 060020 - files with : in name break :MAKE: *
    The :MAKE: operator can now recurse to directories containing a colon (:) in their name. Previously this caused an error. Makefiles containing a colon in the name are not supported.
  3. 060059 - jar not updated when file is removed and put back
    If a class file was removed in an incremental build and then put back in another incremental build such that its time stamp didn't change then the :JAR: operator would not add the class file back to the jar after deleting it in the first incremental build. The :JAR: operator now properly handles this scenario and will add the class file back to the target jar file as expected.
  4. 070014 - JARROOT change does not trigger update
    The :JAR: operator will now regenerate a jar target with the new root when JARROOT changes but the list of prerequisite classes do not.
  5. 080003 - excessively long library creation commands
    The :LIBRARY: operator has been enhanced to use linker options where available to tell the linker to pull in all members from an archive when creating a shared library from the archive. This eliminates the huge linker command lines since each symbol is not listed on the command line. The force-load linker option is stored in the CC.MEMBERS probe variable. The new CC.MEMBERS.UNDEF probe variable contains the linker option to turn off force-load mode if one exists.

3.5 Probe

  1. 030057 - obtain and test Sun C++ 7.x series compiler
    System or compiler include directories that result in a compile error when specified with a -I flag on the compile line are no longer included on the compile line. Probe attempts to identify such include directories and lists them in the new CC.STDINCLUDE.OMIT probe variable. These directories are still searched by nmake for dependencies but are not specified as -I flags nor used by nmake cpp. Different probe files are also now generated for different OS versions using the new VERSION_OS probe attribute. This prevents nmake from using probe configuration data for another operating system version which can be different. This is useful when the nmake installation is shared among machines running different versions of the OS. The probe variable CC.VERSION_OS contains the value of the current OS version and can be overridden by exporting VERSION_OS in the environment.
    For details see - New Features and Enhancements: OS Version dependent probe files.
  2. 070034 - Studio 10 obsoletes -KPIC
    To support the new Sun Studio compiler flags, probe now detects pic flags -xcode=pic32 and -xcode=pic13 before -KPIC and -Kpic for setting the CC.PIC probe variable. Manual pages for the recent Sun Studio compilers indicate -KPIC and -Kpic are obsolete.
    See also - Changes Impacting alu3.9 Makefiles: Using -KPIC/-Kpic with Sun Studio compilers.
  3. 070041 - g++ CC.DYNAMIC probe
    The probe file comments for the CC.DYNAMIC probe variable now mention the variable may be null when the tool chain generates shared libraries by default. Checks for dynamic functionality should use CC.DIALECT.

3.6 Miscellaneous

  1. 070030 - certify Sun Studio 12
    Sun Studio 12 was tested and no issues were found.
  2. 070036 - update man pages for Alcatel-Lucent
    The Java related man pages have been updated for Alcatel-Lucent.
  3. 060065 - javadeps=1 description confusing in man page
    The description of javadeps=1 has been clarified in the :JAVA: manual page -- javadeps=1 triggers an incremental update of the Java file dependencies (out-of-date source files are rescanned for dependency information). For performance reasons the user is responsible for setting javadeps=1 whenever Java source is changed in a way that modifies the dependencies.
  4. 070039 - clarify rhs files in :JAR: man page
    The following clarification was added to the notes section of the :JAR: man page: If a rhs file contains no ksh pattern characters then pattern matching is not used to generate a list of prerequisites and the prerequisite is taken as specified. If such a file does not exist in the viewpath nmake will issue an error for the missing file. If the rhs file contains a ksh pattern then pattern matching is used to generate the prerequisite list and no errors are generated for missing files. A warning is generated if no files are found to match the rhs patterns.
  5. 080005 - missing makelog output file
    Fixed a problem in the nmakelog script where it was possible for the script to exit while logfilter was still running in the background resulting in the fifo being deleted early. The script now waits for the background process to finish before exiting.

3.7 Variables

  1. New variable CC.VERSION_OS - see 030057.
  2. New variable CC.STDINCLUDE.OMIT - see 030057.
  3. New variable CC.LIBOPTS - see 070016.
  4. New variable libopts_warning - see 070016.
  5. New variable CC.MEMBERS.UNDEF - see 080003.
  6. Change to variable MAKELEVEL - see 080004.

3.8 Options

  1. No changes to the options in this release.

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

Last Update: Friday,12-Aug-2016 12:23:51 EDT