[Rcpp-devel] Help needed for clang++ testing on OS X and Linux

Dirk Eddelbuettel edd at debian.org
Sun Oct 7 22:23:54 CEST 2012

On 7 October 2012 at 12:50, Davor Cubranic wrote:
| On 12-10-06 11:14 AM, Dirk Eddelbuettel wrote:
| > But we need to hear from OS X users with different clang++ versions, and
| > possibly clang++ users on other Linux setups --- particularly with clang++
| > 2.* and 3.1.
| >
| > The test is easy: just do 'R CMD INSTALL Rcpp_0.9.14.2.tar.gz' and it will
| > either build and exceptions.cpp finds its headers, or not.  I would
| > appreciate tests and reports back here greatly ... and I don't really want to
| > mess with five more uploads.
| But isnt' it going to use whatever C++ R was configured to use? 

Yes. If no CC and CXX is set, you get what you had a R's compile time.

But if you set CC and CXX to other values as eg per (here still commented out)

  edd at max:~$ tail -4 .R/Makevars
  #CXXFLAGS=-Wall -O3 
  #CdFLAGS=-Wall -O3
  edd at max:~$ 

then those are used.  As clang/clang++ are in fact interoperable with
gcc/g++, this is a good option (eg for better error messages).

| Typically, that's the one it was built with, and for the "official" R 
| binary on OS X, that would be "CXX=gcc". Which, depending on the version 
| of the OS, will be either gcc or gcc-llvm. If so, wouldn't one need to R 
| from source with clang as the C++ compiler in order to test this?

No, sorry for not making that clearer.  If you have another compile (be it
icc or clang++) you can just drop it (on systems where drop-in compatibility
works such as Linux and AFAIK also OS X).

The issue with clang++ "simply" is that it doesn't (yet?) ship its headers,
and exceptions_defines.h can be in a subdirectory so we had #ifdef's for
this. Martin came up with a much better direct test for "is header present"
offered by clang.

So test away if you have clang++ around, and don't worry if you don't.


Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  

More information about the Rcpp-devel mailing list