[R-SIG-Mac] Automatically detecting and setting CXX compiler using configure/Makevars

Robert Bruggner rbruggner at gmail.com
Tue Oct 8 21:00:21 CEST 2013


Hi all, 

I'm developing a package that needs to be compiled on installation but am unsure how to ensure that the proper C++ compiler is invoked when installing this package from source. Is there anyway to, at build time, auto-detect and set the available compiler using configure / Makevars? 

More specifically, I'm using the CRAN-provided  binary of R 3.02 running on Mac OS 10.8.5 with XCode 5 installed. By default, the Makeconf included with the R installation ($RHOME/Resources/Makeconf) has CXX set as:

CXX = llvm-g++-4.2 -arch x86_64

However, as llvm-g++-4.2 is no longer distributed with XCode5, package installation fails when I attempt to install from source with an expected "llvm-g++-4.2: command not found" message. 

I see that one solution is to manually set CXX in the ~/.R/Makevars file. However,  I'm wondering if it's possible to have the combination of a configure script / Makevars.in automatically detect and set the CXX variable upon installation. 

As I have it specified currently, my configure.ac script use the AC_PROG_CXX macro to detect and set CXX. 
https://github.com/nolanlab/Rclusterpp/blob/dev/configure.ac

Then, in my Makevars.in, I attempt to specify the value of CXX detected by the configure script
https://github.com/nolanlab/Rclusterpp/blob/dev/src/Makevars.in

I can then run the configure script manually and, in the produced Makevars file, it appears to detect and set CXX to the proper complier, i.e.:

CXX=g++ -arch x86_64

However, when I then try and install the package, it seems to default back to the using llvm-g++-4.2 as the compiler and thus, installation fails. 

I of course could be approaching this in completely the wrong way. Any suggestions on how I might be able to auto-detect and set the appropriate compiler at build time? 

-Rob



More information about the R-SIG-Mac mailing list