From sean.mcguffee at gmail.com  Fri May 20 21:15:52 2011
From: sean.mcguffee at gmail.com (Sean Robert McGuffee)
Date: Fri, 20 May 2011 15:15:52 -0400
Subject: [Rd] Calling Rscript from Makevars
In-Reply-To: <49E76DF37649DC48A4CE882BC8CE51C901AD8398@nagmail2.nag.co.uk>
Message-ID: <C9FC3628.430F%sean.mcguffee@gmail.com>

Hi,
I've found this type of thing to be extremely confusing, myself, but I
managed to get something to work. I'm not sure how well. I also don't know
if R is running autoconf or just configure--at least I don't remember off
the top of my head. However, here are some examples of commands I put in my
configure.ac file: 
CC=`"${R_HOME}/bin/R" CMD config CC`
CXX=`"${R_HOME}/bin/R" CMD config CXX`
CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS`
PKG_LIBS=`${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"`
then you can use some preset commands such as:
AC_PROG_CC
or generic commands such as:
AC_SUBST(whateverVariableYouLike)
and make sure to put in the key command at the bottom before AC_OUTPUT:
AC_CONFIG_FILES([src/Makefile])
If R runs autoconf before ./configure when packaging or installing, you will
be fine with just the configure.ac. Otherwise you might have to run autoconf
before packaging. 
Anyway, what this will do is create a configure script when autoconf is run.
When ./configure is run by R when installing, it will execute replacement
commands on src/Makefile.in to generate the new Makefile.
Anything within two @ symbols will be replaced.
examples inside my Makefile.in:
CC = @CC@
CXX = @CXX@
I still haven't figured out how to do the Makevars thing, but I've
completely given up on R documentation. The key part from the R
documentation that I found useful was that it calls configure on install, so
you can use autoconf documentation to figure out how to set things up.
I'm sure I probably left out a ton of info, but those are my two cents.
Please feel free to ask me for more details if you are interested.
Good luck,
Sean 


On 5/20/11 12:04 PM, "Martyn Byng" <Martyn.Byng at nag.co.uk> wrote:

> Hi,
> 
> I am trying to package some code to use with R and wanted to call
> Rscript from within the Makevars file (I am trying to automate the
> setting of the location of a third party library depending on what is
> available / the system the package is being installed on).
> 
> If I just have a simple Makevars containing
> 
> 
> PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib
> 
> 
> the package is built without any errors, if I attempt to add a call to
> Rscript, for example (which I think is the way that "Writing R
> Extensions" recommends):
> 
> 
> R_SCRIPT_NAME=Rscript
> ifneq ($(R_HOME),)
>   R_SCRIPT=$(R_HOME)/bin$(R_ARCH_BIN)/$(R_SCRIPT_NAME)
> else
>   R_SCRIPT=$(R_SCRIPT_NAME)
> endif
> R_ARCH=$(shell $(R_SCRIPT) -e 'cat(R.version$$arch)')
> 
> PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib
> 
> 
> I get the following error:
> 
> * checking for file 'NAGFWrappers/DESCRIPTION' ... OK
> * preparing 'NAGFWrappers':
> * checking DESCRIPTION meta-information ... OK
> * cleaning src
> make: Nothing to be done for `clean'.
> * removing junk files
> * checking for LF line-endings in source and make files
> * checking for empty or unneeded directories
> * building binary distribution
> * installing *source* package 'NAGFWrappers' ...
> ** libs
> /usr/share/R/make/shlib.mk:3: /usr/lib64/R/etcx86_64/Makeconf: No such
> file or directory
> make: *** No rule to make target `/usr/lib64/R/etcx86_64/Makeconf'.
> Stop.
> ERROR: compilation failed for package 'NAGFWrappers'
> * removing '/tmp/Rinst1513764321/NAGFWrappers'
>  ERROR
> * installation failed
> 
> 
> Any help / pointers would be appreciated.
> 
> Cheers
> 
> Martyn
> 
> Output from R.version:
> 
> platform       x86_64-redhat-linux-gnu
> arch           x86_64
> os             linux-gnu
> system         x86_64, linux-gnu
> status           
> major          2 
> minor          11.0
> year           2010
> month          04
> day            22
> svn rev        51801
> language       R 
> version.string R version 2.11.0 (2010-04-22)
> 
> 
> ________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company registered in England
> and Wales with company number 1249803. The registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
> 
> This e-mail has been scanned for all viruses by Star. Th...{{dropped:4}}
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Calling Rscript from Makevars
Sean Robert McGuffee