http://www.bell-labs.com/project/nmake/newsletters/
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.
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.
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.
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.
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:
- -I-
- 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 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ 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-.
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 |
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 $?
0
Use 'false' to cause an error:
$ cat Makefile
abc :
false
$ nmake
+ false
make: *** exit code 1 making abc
$ echo $?
1
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 $?
1
<<home / newsletters