Nokia Networks Home

Nokia nmake Product Builder

Quick Links

Related Products

Release Notes -- Nokia nmake lu3.6

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

3. Bug Fixes and Enhancements

3.1 Baserules

  1. 990096 - cc- does not support adding to existing CCFLAGS
    The nmake man page was updated to include the cca- feature.
  2. 020036 - allow to rename globaljavadeps
    The filename for globaljavadeps can be redefined using the GLOBALJAVADEPS variable. The default is GLOBALJAVADEPS=globaljavadeps.
  3. 020037 - default JAVACFLAGS
    The JAVACFLAGS variable no longer defaults to -O, there is no default value now. The Sun jdk1.3 man page for javac(1) indicates the -O flag does nothing, and the flag is completely absent from the jdk1.4 man page. If you still want to compile with -O you must define JAVACFLAGS manually.
  4. 020040 - shared lib warning cannot be suppressed
    When building a shared library using the double colon (::) operator, the warning message issued if the target library name does not begin with "lib" can now be suppressed by setting variable sharedlib_name_warning to null. Also note the variable name was changed from sharelib_name_warning to sharedlib_name_warning.
  5. 020042 - coshell server has no advantage for java package build
    • Job concurrency is now supported by Java builds using either coshell or the jobs option.
    • nmake will now clean up and exit on an interrupt signal during a Java build.
  6. 020045 - nmake clobbers makefiles
    Fixed a problem where running clobber would delete a makefile. This would occur when a parent makefile uses :MAKE: to recurse to children makefiles. If one of the children makefiles had an error, running clobber on the parent would remove the children makefiles.
  7. 020046 - :JAVA: eats error codes
    There were a few cases where nmake did not recognize errors codes from javac and exit the build. This has been corrected.
  8. 020053 - pass up targets in Java local build
    • When building inside a java package, the targets specified on the nmake command line will now be passed up to the package root makefile.
    • The variable java_warp_file allows a convenient shorthand for target paths specified on the command line. java_warp_target specifies an edit operation that selects local targets to be ``warped'' to their corresponding location under JAVACLASSDEST. By default java_warp_file is null. Set java_warp_file=N=*.class to warp class file targets. The following example of a local package build shows the target B.class, specified on the original command line, being warped to classdir/java/p53/B.class.
    $ nmake B.class
    /home/richb/work/src
    + nmake classdir/java/p53/B.class -f 020053.mk javasdir=java/p53 ja
    varhs=*.java javaclassdest=../../classdir
    + javac -d classdir -classpath classdir:. java/p53/B.java
    
  9. 020054 - pass up command line args in java local build
    Command line arguments are now passed up from a local, inside-package java build to the package root makefile.
  10. 020055 - recurse message in Java local build
    The standard recurse message is now printed when recursing from a local, inside-package java build to the package root. This includes support for variables recurse_begin_message recurse_end_message.
  11. 020067 - variable expands to null
    When using :cc: in conjunction with :COMMAND:, the variable set by :COMMAND: would sometimes expand to null when it should have some value. This has been fixed.
  12. 020068 - nmake creates 0 size class file when a older java file found
    A zero sized class file is no longer created when the date stamp of a .java source file is older than the previous build.
  13. 020070 - JAVA.mk needs to see jdeps exit code
    nmake now recognizes an error code from javadeps and exits when an error occurs.
  14. 020086 - unnecessary -I flags from prefixinclude
    When using prefixinclude (which is on by default) with a compiler with native support for -I- nmake would generate redundant -I flags on the compile lines. Under certain conditions nmake could also specify -I flags in the wrong order of the viewpath. Both problems are fixed.
  15. 030020 - JAVA.mk cannot set javadeps=1 in makefile
    The javadeps variable was initialized in JAVA.mk in such a way that setting javadeps in a makefile was ignored, it only worked when set on the command line. Defining javadeps in the makefile now works.
  16. 030021 - JAVA.mk does not see new java code
    The list of java files to maintain was being compiled into the makefile .mo file, which caused new java source files to not be compiled in incremental builds. JAVA.mk now builds the list of java files at run time so new source files are picked up and compiled when javadeps=1.

3.2 cpp

  1. 020076 - add new pragma which provides #line-directive line output
    A new cpp pragma, lineid, has been added which corresponds with the -D-L flag to specify the line number control output directive. The usage is: #pragma lineid line-directive

3.3 Engine

  1. 990088 - compiled global makefile does not build targets
    When using the -g flag to reference a compiled global makefile that contains metarules, nmake would not build the targets in the makefile. This is fixed.
  2. 990109 - cyclic meta-rule causes core dump
    Three or more chained metarules which result in a cycle caused nmake to core dump. nmake now displays an error message for such a chain and shows the chain so the user can identify the cycle.
  3. 010019 - directory cache problem
    After the contents of a directory was cached there was no way to clear the cache in case the directory was deleted. If the directory was deleted and a new one created that used the same inode number the contents of the old and new directories would be merged in the cache even though the old files were actually removed. The special atoms .UNBIND and -SCANNED will now clear the cache for the specified directories.
  4. 010034 - $(*) behaves differently when -F is used
    For metarules with a secondary pattern prerequisite, if a file matching the secondary prerequisite did not exist the $(*) variable would include the filename of the missing file when the -F (force) flag was used but not when -F was not used. The behavior is now consistent both when forced and not forced, and $(*) does not expand the secondary pattern prerequisite if a matching file does not exist.
  5. 010035 - $(>) only bind one prerequisite file when metarule is used
    In metarules defined with multiple prerequisites, the $(>) variable will now expand the primary prerequisite plus the out of date secondary prerequisites. Previously $(>) failed to expand any secondary prerequisites.
  6. 010070 - $(var:T=F) doesn't work right when var ending with "/"
    The :T=F variable edit operator would not expand relative directories specified with a slash (/) at the end. This has been fixed and such directories are expanded if they exist.
  7. 020017 - Variables lose auxiliary value
    A variable with an auxiliary value defined (set using &=) and no primary value would get the auxiliary value expanded on the first nmake run, but subsequent incremental builds would expand the variable to null. Now the auxiliary value is always expanded if it is defined regardless of the primary value.
  8. 020019 - prerequisite .jar file in vpath causes rebuild
    Fixed unnecessary rebuilds caused by prerequisite .jar files in the VPATH. When building in a new, empty node, the dependent class files would be rebuilt although they were already up to date. This happened when using the official :JAVA: assertion. The problem was caused by the expansion of the .SOURCE.class atom which contained the prerequisite .jar files. A new special atom has been introduced, .NOCROSSPRODUCT.%., which suppresses the cross product expansion of %.<pattern> files in the specified .SOURCE. special atom while still giving us the first occurrence of %.<pattern> in the viewpath. The following is predefined in the base rules:
  9. .SOURCE.class : .NOCROSSPRODUCT.%.jar .NOCROSSPRODUCT.%.zip
    
  10. 020035 - nmakelog doesn't work right when .MAKE is used in action
    .ACTIONWRAP could not handle .MAKE immediate rules and would generate an error from ksh trying to execute .MAKE. .MAKE rules are now handled properly by .ACTIONWRAP and thus work with nmakelog.
  11. 020043 - problems with generated header
    Under certain conditions when a header file was generated in a directory other than the current directory and the header was referenced by some source code in the same makefile, the generated header was not scanned for include files. Header files generated under these conditions are now scanned.
  12. 020050 - custom archive rule cannot handle vpath
    The $(*) variable would not expand through the viewpath when the target of the rule was an archive library. This could cause locally defined archive rules to fail when updating in the viewpath. This now works and $(*) is expanded through the viewpath for archive targets.
  13. 020061 - engine queue feature for batch compilations
    Batched and concurrent compilation are now supported at the same time. For example, java batch compiles can be run concurrently for maximum performance. New special atoms, .BATCH and .BATCHED were introduced to support this.
    See also New Features: Batched concurrent Java builds now supported,
    and New Features: Engine queue feature for batch compilations.
  14. 020069 - .IMMEDIATE doesn't trigger its action block
    .IMMEDIATE rules (with .IMMEDIATE on the lhs) will now trigger their action blocks as well as making their prerequisites.

3.4 Operators

  1. 990174 - :cc: causing unnecessary installs
    The :cc: operator will no longer cause targets of :: and :LIBRARY: to reinstall when they have not changed.
  2. 020038 - :: support for libname$(CC.SUFFIX.SHARED) target
    CC.SUFFIX.SHARED can now be used to define shared library targets with the :: operator to produce platform independent makefiles. For example, the following will make libabc.so on Solaris and libabc.sl on HP-UX.
  3. libabc$$(CC.SUFFIX.SHARED) :: a.c
    
  4. 030022 - jar file support
    Jar files can be generated and maintained using the new :JAR: operator.
    See also New Features: Jar File Support.

3.5 Probe

  1. 990167 - suppress -ptr flags with Sun C++ 6.0 compiler
    The probe variable CC.REPOSITORY is no longer set for compilers that do not use the -ptr flag to refer to the repository directory. This eliminates unnecessary -ptr flags from the compile line for such compilers.
  2. 010005 - shared libs built with aCC on HP don't work
    Shared libraries were being generated using ld. With C++ code this would sometimes result in unusable libraries. The compiler is now used for linking shared libraries and executables when the compiler supports it. In this case the probe variable CC.LD is set to the compiler instead of the ld command.
  3. 010066 - improve probe script for prelink test
    The probe script now performs a more rigorous test to check support for --prelink_copy_if_nonlocal for setting the CC.PRELINK variable. In the past it could be set for some compiler that didn't support the flag causing errors when compiling.
  4. 020020 - examine CC.STDINCLUDE directories for Solaris 2.8
    Probe now has better support for determining the standard include directories for the Sun compilers on Solaris 2.8 and 2.9.
  5. 020044 - probe HP C_STDINCLUDE should have /usr before /opt/aCC
    Some of the HP-UX aCC headers includes system headers as include/file.h which requires /usr to be searched for include files. Probe will now detect when /usr is required and include it in the default standard include directories.
  6. 020079 - add testing scripts for lineid in preprocessing
    The cpp probe now sets the line directive using the lineid pragma when necessary. See also 020076.

3.6 Variables

  1. New variable GLOBALJAVADEPS - see 020036.
  2. Variable JAVACFLAGS default changed - see 020037.
  3. Variable sharelib_name_warning changed to sharedlib_name_warning - see 020040.
  4. New variable java_warp_target - see 020053.
  5. Fix for automatic variable $(*) - see 010034, 020050.
  6. Fix for automatic variable $(>) - see 010035.
  7. Fix for variable auxiliary value - see 020017.

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

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