[Rcpp-devel] C++11 Solaris cmath/math.H

Jan Wijffels jwijffels at bnosac.be
Wed Sep 6 15:10:49 CEST 2017


Small update on this question. The issue appears when exporting the Rcpp
function and the error messages are caused by RcppExports.cpp
which is generated when running Rcpp::compileAttributes()

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::export]]
CharacterVector na_locf(CharacterVector x) {
  return x;
}

This is the output from Rcpp::compileAttributes()

#include <Rcpp.h>

using namespace Rcpp;

// na_locf
CharacterVector na_locf(CharacterVector x);
RcppExport SEXP _ttt_na_locf(SEXP xSEXP) {
  BEGIN_RCPP
  Rcpp::RObject rcpp_result_gen;
  Rcpp::RNGScope rcpp_rngScope_gen;
  Rcpp::traits::input_parameter< CharacterVector >::type x(xSEXP);
  rcpp_result_gen = Rcpp::wrap(na_locf(x));
  return rcpp_result_gen;
  END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
  {"_ttt_na_locf", (DL_FUNC) &_ttt_na_locf, 1},
  {NULL, NULL, 0}
};

RcppExport void R_init_ttt(DllInfo *dll) {
  R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
  R_useDynamicSymbols(dll, FALSE);
}

My excuses for this update.

Jan


Jan Wijffels
Statistician
www.bnosac.be  | +32 486 611708

On 6 September 2017 at 15:03, Jan Wijffels <jwijffels at bnosac.be> wrote:

> Hello,
>
> I'm trying to fix the installation issue I have with the package udpipe:
> https://github.com/bnosac/udpipe but I'm getting issues on Solaris giving
> messages like this:
>
> /opt/csw/bin/g++ -std=gnu++11 -I/opt/R/R-3.4.1-patched-gcc/lib/R/include -DNDEBUG  -I"/export/home/XyG0aYI/R/Rcpp/include" -I/opt/csw/include -I/usr/local/include   -fPIC  -O2 -c RcppExports.cpp -o RcppExports.o
> In file included from /opt/csw/include/c++/5.2.0/cmath:44:0,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp/platform/compiler.h:100,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp/r/headers.h:48,
>                  from /export/home/XyG0aYI/R/Rcpp/include/RcppCommon.h:29,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp.h:27,
>                  from RcppExports.cpp:4:
> /usr/include/math.h:45:12: error: ‘std::float_t’ has not been declared
>  using std::float_t;
>             ^
> /usr/include/math.h:46:12: error: ‘std::double_t’ has not been declared
>  using std::double_t;
>
> This type of error seems to be something that has been mentioned in
> https://journal.r-project.org/archive/2011-2/RJournal_2011-2_Plummer.pdf
> but still can't seem to find the solution.
>
> To make this problem as tiny as possible, I've made a reproducible
> example. Let's say I have an R package with the following inside the src
> folder
>
> #include <Rcpp.h>
> using namespace Rcpp;
>
> // [[Rcpp::plugins(cpp11)]]
> CharacterVector na_locf(CharacterVector x) {
>   return x;
> }
>
> If the DESCRIPTION file mentions the following:
>
> Imports: Rcpp (>= 0.12.12)
> LinkingTo: Rcpp
> SystemRequirements: C++11
>
> Or if there is CXX_STD=CXX11 in the Makevars file, I get the errors like
> this when building on Solaris (see log on https://builder.r-hub.io/
> status/original/ttt_0.1.0.tar.gz-26c279a1b07047fea8ded89b4e07c6ad), using
> rhub::check(platform  = "solaris-x86-patched"), while on Ubuntu this is
> working fine.
>
> /opt/csw/bin/g++ -std=gnu++11 -I/opt/R/R-3.4.1-patched-gcc/lib/R/include -DNDEBUG  -I"/export/home/XyG0aYI/R/Rcpp/include" -I/opt/csw/include -I/usr/local/include   -fPIC  -O2 -c RcppExports.cpp -o RcppExports.o
> In file included from /opt/csw/include/c++/5.2.0/cmath:44:0,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp/platform/compiler.h:100,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp/r/headers.h:48,
>                  from /export/home/XyG0aYI/R/Rcpp/include/RcppCommon.h:29,
>                  from /export/home/XyG0aYI/R/Rcpp/include/Rcpp.h:27,
>                  from RcppExports.cpp:4:
> /usr/include/math.h:45:12: error: ‘std::float_t’ has not been declared
>  using std::float_t;
>
> I
> ​f I do not add ​SystemRequirements: C++11 and remove the Makevars file,
> this works fine on Solaris. I need however C++11 as I need it in the udpipe
> R package for building udpipe.cpp but can't add
> to that udpipe.cpp file the following types of statements due to conflicts
> on the use of the Free macro.
> #include <Rcpp.h>
> using namespace Rcpp;
> // [[Rcpp::plugins(cpp11)]]
>
> Is there anyone having similar problems that can give an indication on how
> to solve this Solaris build issue?
>
> many thanks,
> Jan
>
>
>
> Jan Wijffels
> Statistician
> www.bnosac.be  | +32 486 611708
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20170906/56a8fca0/attachment-0001.html>


More information about the Rcpp-devel mailing list