From ripley at stats.ox.ac.uk  Tue Nov 10 17:32:31 2009
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 10 Nov 2009 16:32:31 +0000 (GMT)
Subject: [Rd] Makevars or Makevars.in
In-Reply-To: <4AF990E2.7080100@bank-banque-canada.ca>
References: <4AF990E2.7080100@bank-banque-canada.ca>
Message-ID: <alpine.LFD.2.00.0911101623470.16389@gannet.stats.ox.ac.uk>

On Tue, 10 Nov 2009, Paul Gilbert wrote:

> I am just trying to adjust one of my packages so the C code builds in 
> Windows.  This is code that has been around for a long time, and I'm am only 
> a casual reader of C, so it has had the "if it is not broken don't touch it" 
> approach for many years.  The section 1.2.1 "Using Makevars"  of "Writing R 
> extensions" starts:
>
> "Sometimes writing your own configure script can be avoided by supplying a 
> file Makevars: also one of the most common uses of a configure script is to 
> make Makevars from Makevars.in." ...
>
> I am still a bit confused about whether packages src/ should have, in 
> addition to Makevars.win, a file Makevars or a file Makevars.in.  The rest of 
> the section seems to imply that the file should be Makevars, but the first 
> four examples I pulled of CRAN all have Makevars.in. My confusion is about 
> whether R scripts will automatically turn Makevars.in into Makevars or would 
> I need my own configure script to do this (and I am hoping not to need a 
> configure script).
>
> Which is preferred? (And could the first paragraph of the section be made 
> more explicit?)

I think you need to read the earlier mentions of Makevars in that 
manual: your confusion seems to be that you have jumped in to a later 
section.  The only use of src/Makevars.in is that it is a conventional 
name for a template file for configure to turn into src/Makevars.  As 
the manual says

   The default rules can be tweaked by setting macros in a file
   @file{src/Makevars} ... There are platform-specific file names on
   Windows: @file{src/Makevars.win} takes precedence over
   @file{src/Makevars}.

So to tweak the make rules you need src/Makevars: if you need a 
platform-specific version you need src/Makevars and src/Makevars.win.
You may choose to use configure (or configure.win) to make these, but 
you do not need to (and packages using e.g. LAPACK or BLAS do not do 
so).

-- 
Brian D. Ripley,                  ripley at 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] Makevars or Makevars.in
Prof Brian Ripley