@@ -380,15 +380,24 @@ compileAttributes <- function(pkgdir = ".", verbose = getOption("verbose")) {
380380 linkingTo <- .readPkgDescField(pkgDesc , " LinkingTo" )
381381 includes <- .linkingToIncludes(linkingTo , TRUE )
382382
383- # if a master include file is defined for the package then include it
384- pkgHeader <- paste(pkgname , " .h" , sep = " " )
383+ # if a master include file or types file is in inst/include then use it
384+ typesHeader <- c(paste0(pkgname , " _types.h" ), paste0(pkgname , " _types.hpp" ))
385+ pkgHeader <- c(paste0(pkgname , " .h" ), typesHeader )
385386 pkgHeaderPath <- file.path(pkgdir , " inst" , " include" , pkgHeader )
386- if (file.exists(pkgHeaderPath )) {
387+ pkgHeader <- pkgHeader [file.exists(pkgHeaderPath )]
388+ if (length(pkgHeader ) > 0 ) {
387389 pkgInclude <- paste(" #include \" ../inst/include/" ,
388390 pkgHeader , " \" " , sep = " " )
389391 includes <- c(pkgInclude , includes )
390392 }
391393
394+ # if a _types file is in src then include it
395+ pkgHeader <- typesHeader
396+ pkgHeaderPath <- file.path(pkgdir , " src" , pkgHeader )
397+ pkgHeader <- pkgHeader [file.exists(pkgHeaderPath )]
398+ if (length(pkgHeader ) > 0 )
399+ includes <- c(paste0(" #include \" " , pkgHeader ," \" " ), includes )
400+
392401 # generate exports
393402 invisible (.Call(" compileAttributes" , PACKAGE = " Rcpp" ,
394403 pkgdir , pkgname , depends , cppFiles , cppFileBasenames ,
0 commit comments