From ripley at stats.ox.ac.uk  Wed Mar 23 08:55:07 2005
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Wed Mar 23 08:55:19 2005
Subject: [Rd] forcing R CMD COMPILE
In-Reply-To: <Pine.LNX.4.58L0.0503230041170.31558@est.ufpr.br>
References: <Pine.LNX.4.58L0.0503230041170.31558@est.ufpr.br>
Message-ID: <Pine.LNX.4.61.0503230744450.29643@gannet.stats>

On Wed, 23 Mar 2005, Pedro Ribeiro de Andrade Neto wrote:

> I am developing a package with a lot of C++ code, and I have a question
> about R CMD COMPILE. As I can see, when the package's Makefile calls
>
> R CMD COMPILE foo.cpp

Why does your package have a Makefile?  And why is it calling COMPILE and 
not SHLIB?

> R verifies if foo.o exists, and if it is up to date (last modified after
> foo.cpp's last), trying to avoid recompile foo.cpp.

Not quite: COMPILE is a make facility, and it calls make with its own 
Makefiles.  This does not seem appropriate to your usage.

> But __all__ my files have other dependencies (at least a .h). The 
> Makefile verifies it, and calls COMPILE only when it is sure that foo.o 
> is not up to dated. The problem occours, for example, if I modify only 
> foo.h, and then compile again. R will say that foo.o is up to date, but 
> it is not true.
>
> Is there any way to force R CMD COMPILE?? Well, I can remove the .o file
> before COMPILE, but I think R could do something about it...

Better not to use R CMD COMPILE.  R itself does not (AFAICS): it is there 
for S-PLUS compatibility.  It seems only ROracle on CRAN does.

Note that R CMD INSTALL is usually called on fresh sources (an unpacked 
tarball) so dependencies are not usually an issue.


-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


[Rd] forcing R CMD COMPILE
Prof Brian Ripley