[Rd] SHLIB steps on a Makefile

Simon Urbanek simon.urbanek at r-project.org
Thu Dec 20 23:11:23 CET 2007


On Dec 20, 2007, at 4:49 PM, Iago Mosqueira wrote:

> I need to create a Makefile.win for a given package so as to fiddle  
> slightly with the compilation process. My Makefile works fine in  
> Linux but I am having trouble creating Makefile.win for MinGW. I  
> first looked at the commands that Rcmd SHLIB appeared to be running  
> and copied those onto the Makefile. But one step seems to be  
> missing, the creation of the _res.rc file needed by windres
> 	g++-sjlj -I$(RHOME)/include -I../inst/include/ -O2 -Wall -c pkg.cpp  
> -o pkg.o
> 	windres --preprocessor="gcc-sjlj -E -xc -DRC_INVOKED"
> -I$(RHOME)/include -I../inst/include -i pkg_res.rc -o pkg_res.o
> 	g++-sjlj -shared -s -o pkg.dll pkg.def pkg.o FL pkg_res.o -L$ 
> (RHOME)/bin -lR
> This might be fairly obvious, but it is my first attempt at  
> compiling with MinGW and my search has been fruitless.
> What is it that I need to add to replicate what Rcmd SHLIB does?

If that is the only step you're missing then you have probably missed  
the res.rc rule from MakeDll when creating your Makefile:

         @PERL5LIB=$(RHOME)/share/perl $(PERL) $(RHOME)/src/gnuwin32/ 
makeDllRes.pl $(DLLNAME) > $@


PS: Given that you can override any rule, it is usually easier to just  
write your modifications in Makevars[.win] when fiddling with the  
compilation than to replicate the whole process.

More information about the R-devel mailing list