Nokia nmake Product Builder
Customer Support Newsletter

http://www.bell-labs.com/project/nmake/newsletters/

Issue No. 38 - July 2011
Contacts
Articles
  1. nmake 13 Beta
  2. Eclipse plugin
  3. New FAQs
  4. Strip Executables on Install
  5. Feedback and Suggestions

nmake 13 Release Schedule

The nmake 13 beta trial is currently under way. The beta includes both nmake 13 and Javadeps alu2.2.6 and is scheduled to end 7/15/2011. Feedback from the beta helps the final release maintain compatibility with existing project makefiles and build environments. If you are interested in trying the beta please let us know at nmake@alcatel-lucent.com, all feedback is welcome. Here is the current list of user visible changes in the beta.

nmake 13 beta

Javadeps alu2.2.6 beta

index

Eclipse plugin

The nmake Eclipse plugin has been certified with Eclipse 3.7 and CDT 8.0 with the GCC tool chain on Solaris and Linux. See our Eclipse support page for information on using Eclipse with nmake and our Eclipse update site to download the latest plugin.

index

New FAQs

New FAQ entries for the following topics have been added to the web site.

index

Strip Executables on Install

Here is a technique to automatically strip binary executables after they have been installed. Stripping the installed copy removes the symbol table and debugging information and reduces the file size. Stripping only the installed copy and leaving the original alone allows builds to use the -g compiler flag so developers can use the un-installed copy of an executable for debugging while the installed copy in the same build can be packaged for customers. This technique only works when the installed files are copied so the nmake link variable must not be defined for linking the installed executables.

The following .STRIP.o rule is triggered after the .DO.INSTALL rule installs a file. If the installed file was made with the .COMMAND.o rule, which links executable binaries, then the strip command is run on the file. The base rules sets the variable STRIP=strip, the variable can be changed to pick up a specific strip command if needed.

.DO.INSTALL : .STRIP.o
.STRIP.o : .AFTER .IGNORE .VIRTUAL .FORCE .REPEAT .MAKE
	if "$(**:A=.COMMAND.o)"
		.MAKE:
			$(STRIP) $(<<)
	end

The following example builds an executable, shell script and a library. It shows that only the executable is stripped after installation.

$ cat Makefile 
/* 
** strip installed binary executables created from .COMMAND.o
*/
.DO.INSTALL : .STRIP.o
.STRIP.o : .AFTER .IGNORE .VIRTUAL .FORCE .REPEAT .MAKE
        if "$(**:A=.COMMAND.o)"
                .MAKE:
                        $(STRIP) $(<<)
        end

CC = gcc
CCFLAGS += -g
LIBDIR = $(VROOT)/lib
BINDIR = $(VROOT)/bin

:ALL:

hello :: hello.c
hi :: hi.sh
libaloha.a :: aloha.c

$ nmake install
+ gcc -O -g -I- -D_TRACE_ -c hello.c
+ gcc -O -g -o hello hello.o
+ /bin/ksh -n -c ${list[level]} $(( 1 + $x ))
+ 2> /dev/null
+ cp hi.sh hi
+ chmod u+w,+x hi
+ gcc -O -g -I- -D_TRACE_ -c aloha.c
+ ar r libaloha.a aloha.o
ar: creating libaloha.a
+ rm -f aloha.o
+ cp hello ../bin/hello
+ strip ../bin/hello
+ cp hi ../bin/hi
+ cp libaloha.a ../lib/libaloha.a

$ ls -l hello ../bin/hello
-rwxr-xr-x 1 richb richb 3260 Jul  5 14:25 ../bin/hello
-rwxr-xr-x 1 richb richb 7790 Jul  5 14:25 hello

$ file hello ../bin/hello   
hello:          ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
../bin/hello:   ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped

index

Feedback and Suggestions

We are interested in any feedback you might have about nmake. Please send comments / suggestions to nmake@alcatel-lucent.com.

We're also open to suggestions for future articles. If there is anything you would like to see in the newsletter please send us a note to nmake@alcatel-lucent.com. Thanks for your support!

index

<<home / newsletters