[Rd] SHLIB steps on a Makefile
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