Nokia nmake Product Builder
Release Notes -- Nokia nmake lu3.6
[Table of Contents]
- 990096 - cc- does not support adding to existing CCFLAGS
The nmake man page was updated to include the
- 020036 - allow to rename globaljavadeps
The filename for
globaljavadeps can be redefined
GLOBALJAVADEPS variable. The default is
- 020037 - default JAVACFLAGS
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
- 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
- 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.
- 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
- 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.
- 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
is null. Set
java_warp_file=N=*.class to warp class
file targets. The following example of a local package build shows
B.class, specified on the original command
line, being warped to
$ nmake B.class
+ nmake classdir/java/p53/B.class -f 020053.mk javasdir=java/p53 ja
+ javac -d classdir -classpath classdir:. java/p53/B.java
- 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.
- 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
- 020067 - variable expands to null
:cc: in conjunction with
:COMMAND:, the variable set by
would sometimes expand to null when it should have some value.
This has been fixed.
- 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.
- 020070 - JAVA.mk needs to see jdeps exit code
nmake now recognizes an error code from javadeps and exits when
an error occurs.
- 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
-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.
- 030020 - JAVA.mk cannot set javadeps=1 in makefile
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.
- 030021 - JAVA.mk does not see new java code
The list of java files to maintain was being compiled into the
.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
- 020076 - add new pragma which provides #line-directive line output
A new cpp pragma,
lineid, has been added which corresponds
-D-L flag to specify the line number control
output directive. The usage is:
#pragma lineid line-directive
- 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.
- 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.
- 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
-SCANNED will now clear
the cache for the specified directories.
- 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.
- 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.
- 010070 - $(var:T=F) doesn't work right when var ending with "/"
: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.
- 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.
- 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
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
.SOURCE. special atom while still giving us
the first occurrence of %.<pattern> in the viewpath. The
following is predefined in the base rules:
.SOURCE.class : .NOCROSSPRODUCT.%.jar .NOCROSSPRODUCT.%.zip
- 020035 - nmakelog doesn't work right when .MAKE is used in action
.ACTIONWRAP could not handle
immediate rules and would generate an error from ksh trying to
.MAKE rules are now
handled properly by
.ACTIONWRAP and thus work
- 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.
- 020050 - custom archive rule cannot handle vpath
$(*) 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.
- 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,
.BATCHED were introduced to support this.
See also New Features: Batched concurrent Java builds now supported,
New Features: Engine queue feature for batch compilations.
- 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
- 990174 - :cc: causing unnecessary installs
:cc: operator will no longer cause targets of
:LIBRARY: to reinstall when they
have not changed.
- 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$$(CC.SUFFIX.SHARED) :: a.c
- 030022 - jar file support
Jar files can be generated and maintained using the new
See also New Features: Jar File Support.
- 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
flags from the compile line for such compilers.
- 010005 - shared libs built with aCC on HP don't work
Shared libraries were being generated using
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
- 010066 - improve probe script for prelink test
The probe script now performs a more rigorous test to check
--prelink_copy_if_nonlocal for setting
CC.PRELINK variable. In the past it could be
set for some compiler that didn't support the flag causing errors
- 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.
- 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
- 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.
- New variable
JAVACFLAGS default changed -
sharelib_name_warning changed to
- New variable
- Fix for automatic variable
- Fix for automatic variable
- Fix for variable auxiliary value -
[Table of Contents]
Last Update: Friday,12-Aug-2016 12:32:34 EDT