Nokia nmake Product Builder
Customer Support Newsletter

Issue No. 21 - January 2006
  1. Happy New Year
  2. Products Now in Bell Labs Research
  3. Platform Tier Level Changes
  4. Overview Descriptions Updated
  5. GCC 4.0 Depreciates -I-
  6. JavaDeps Benchmarks
  7. Using 'exit' in Action Blocks

Happy New Year

The nmake team would like to take a moment to wish everyone a happy New Year! We hope 2006 proves to be a prosperous and joyous year for all.


Products Now in Bell Labs Research

In the previous issue we told you the STC had changed its name to Systems Technology Center. We now report that the nmake, Sablime and Exptools teams are now in Bell Labs research. We are happy to be part of the research team and look forward to our continual development of nmake.


Platform Tier Level Changes

The platform tier changes that were announced August 29, 2005 are now in affect. The changes were made to reflect evolving development environments. The tier levels indicate how various hardware/OS platforms are supported and when their releases are made available. For the full description of the tier levels and the platforms see the original Platform Tier Level Changes announcement.


Overview Descriptions Updated

The nmake overview slides and the Features and Benefits pages have been updated since the last newsletter. The slides provide a feature-oriented overview of the product while the Features and Benefits pages list major features with descriptions and examples. The overview slides are in PDF format and are available on the Features and Benefits page.


GCC 4.0 Depreciates -I-

The gcc 4.0 documentation indicates the -I- command line argument has been depreciated. It is suggested to use -iquote instead. The following is from the gcc documentation with emphases added:

Split the include path. Any directories specified with -I options before -I- are searched only for headers requested with #include "file"; they are not searched for #include <file>. If additional directories are specified with -I options after the -I-, those directories are searched for all `#include' directives.
In addition, -I- inhibits the use of the directory of the current file directory as the first search directory for #include "file". This option has been deprecated.
-iquote dir
Search dir only for header files requested with #include "file"; they are not searched for #include <file>, before all directories specified by -I and before the standard system directories.

As far as we can tell the -iquote option is not a complete replacement for -I-. Without -I- there appears to be no way to inhibit the use of the directory of the current file as the first search directory for #include "file". This feature is used with nmake to insure the proper header files are picked up in a viewpathing environment (see the cpp FAQ for details.)

Currently -I- appears to work but the compiler issues a warning message:

$ gcc --version
gcc (GCC) 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

$ gcc -I- hello.c
cc1: note: obsolete option -I- used, please use -iquote instead

We have been in contact with the gcc developers to request reinstatement of the -I- option, but this doesn't seem likely. We will continue to monitor the situation and how it affects Lucent® nmake. Future releases of gcc may require the use the of nmake cpp and possibly ppcc for proper viewpathing (both are triggered automatically by probe when needed.) Alternatively, the quoteinclude feature could be used to restrict #include "file" directives inside the viewpath when using native preprocessors that do not support -I-.


JavaDeps Benchmarks

While working with a large java project we ran some benchmarks to compare JavaDeps lu2.1 and lu2.2.1. We see a dramatic decrease in time with version lu2.2.1. The table below shows the results.

Jdeps Version Time Number of Files
lu2.2.1 8.5 minutes 17,000
lu2.1 48 minutes 17,000
lu2.2.1 3.17 seconds 413
lu2.1 10.33 seconds 413


Using 'exit' in Action Blocks

The v3.0 release notes mentions not to use the ksh 'exit' statement but to use 'false' instead in action blocks. Unfortunately this has not been documented elsewhere and can cause some confusion. When initializing the shell nmake defines some traps in order to get the return code back from the shell process. However when 'exit' is used directly in the action block the exit code is lost and nmake does not see an error when the return code is greater than 0.

$ cat Makefile
abc :
        exit 4

$ nmake
+ exit 4

$ echo $?

Use 'false' to cause an error:

$ cat Makefile 
abc :

$ nmake
+ false
make: *** exit code 1 making abc

$ echo $?

If you need nmake to report different return codes in the output then use exit in a sub-shell:

$ cat Makefile
abc :
        ( exit 4 )

$ nmake
+ exit 4
make: *** exit code 4 making abc

$ echo $?


<<home / newsletters