From edd at debian.org  Sat Mar 18 15:55:56 2017
From: edd at debian.org (Dirk Eddelbuettel)
Date: Sat, 18 Mar 2017 09:55:56 -0500
Subject: [Rd] Experimental CXX_STD problem in R 3.4
In-Reply-To: <CABFfbXuox21GEDFMVAwzrHYbodRo3+eWAacz7dyRqnudMkPnrQ@mail.gmail.com>
References: <CABFfbXuox21GEDFMVAwzrHYbodRo3+eWAacz7dyRqnudMkPnrQ@mail.gmail.com>
Message-ID: <22733.19068.582932.665707@max.eddelbuettel.com>


On 18 March 2017 at 14:21, Jeroen Ooms wrote:
| R 3.4 has 'experimental' support for setting CXX_STD to CXX98 / CXX11
| / CXX14 / CXX17.

R 3.1.0 introduced CXX11 support.  R 3.4.0 will have CXX14 support.  So I
would only refer to the CXX17 part as experimental.

| However on most platforms, the R configuration seems to leave the
| CXX1Y and CXX1Z fields blank in "${R_HOME}/etc/Makeconf" (rather than
| falling back on default CXX). Therefore specifying e.g CXX_STD= CXX14
| will fail build with cryptic errors (due to compiling with CXX="")

That depends of course on the compiler found on the system. On my box (with
g++ being g++-6.2 which _defaults_ to C++14) all is well up to CXX1Y.

But I also have CXX1Z empty. 
 
| I don't think this is intended? Some examples from r-devel on Windows:
| 
| CXX11: https://win-builder.r-project.org/R8gg703OQSq5/
| CXX98: https://win-builder.r-project.org/mpVfXxk79FaN/
| CXX14: https://win-builder.r-project.org/L3BSMgAk4cQ7/
| CXX17: https://win-builder.r-project.org/3ETZXrgkg77I/

You can't expect CXX14 and CXX17 to work with the only available compiler
there, g++-4.9.3.
 
| Similar problems appear on Linux. I think the problem is that Makeconf
| contains e.g:
| 
| CXX1Z =
| CXX1ZFLAGS =
| CXX1ZPICFLAGS =
| CXX1ZSTD =
| 
| When CXX_STD contains any other unsupported value (e.g. CXX24) R
| simply falls back on the default CXX configuration. The same should
| probably happen for e.g. CXX17 when CXX1Z is unset in Makeconf?

Probably.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org



[Rd] Experimental CXX_STD problem in R 3.4
Dirk Eddelbuettel