Skip to content

Makevars or Makevars.in

2 messages · Paul Gilbert, Brian Ripley

#
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?)

Thanks,
Paul

====================================================================================

La version fran?aise suit le texte anglais.

------------------------------------------------------------------------------------

This email may contain privileged and/or confidential in...{{dropped:26}}
#
On Tue, 10 Nov 2009, Paul Gilbert wrote:

            
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).