[Rcpp-devel] On Developing Header Packages

Dirk Eddelbuettel edd at debian.org
Wed Apr 8 03:15:25 CEST 2015


On 7 April 2015 at 14:51, JJ Allaire wrote:
| I think that header-only packages (where possible) are definitely
| preferable within the R package ecosystem because it allows you to
| sidestep a lot of build configuration and runtime linking complexity.
| 
| The rub is that some libraries simply can't be made header-only,
| especially if they make use of static data. I was able to convert the
| TinyThread library to header-only by simply prefacing all
| function/method definitions with the inline keyword. However that was
| a pretty small library so I'm not sure you'd have the same easy time
| of it with a larger library like clBLAS.

That may be the case:

edd at max:~$ apt-cache search lib|grep OpenCL
ocl-icd-dbg - Debug symbols for the generic OpenCL ICD Loader
ocl-icd-libopencl1 - Generic OpenCL ICD Loader
ocl-icd-opencl-dev - OpenCL development files
nvidia-libopencl1-304 - NVIDIA OpenCL Driver and ICD Loader library
nvidia-libopencl1-304-updates - NVIDIA OpenCL Driver and ICD Loader library
nvidia-libopencl1-331 - NVIDIA OpenCL Driver and ICD Loader library
nvidia-libopencl1-331-updates - NVIDIA OpenCL Driver and ICD Loader library
nvidia-opencl-dev - NVIDIA OpenCL development files
python-pyopencl - Python module to access OpenCL parallel computation API
python-pyopencl-dbg - Python module to access OpenCL API (debug extensions)
python-pyopencl-doc - module to access OpenCL parallel computation API (documentation)
python3-pyopencl - Python 3 module to access OpenCL parallel computation API
python3-pyopencl-dbg - Python 3 module to access OpenCL API (debug extensions)
beignet - Intel OpenCL library
beignet-dev - Intel OpenCL library
libclc-dev - OpenCL C language implementation - development files
libclc-ptx - OpenCL C language implementation - ptx support
libclc-r600 - OpenCL C language implementation - r600 support
libopencv-ocl2.4 - computer vision OpenCL support library
libopentk-cil-dev - Open Toolkit wrapper for OpenGL, OpenAL and OpenCL - Dev files
libopentk1.0-cil - Open Toolkit wrapper for OpenGL, OpenAL and OpenCL - Assemblies
libviennacl-dev - Scientific computing library written in C++ based on OpenCL
monodoc-opentk-manual - Open Toolkit wrapper for OpenGL, OpenAL and OpenCL - Docs
edd at max:~$ 

This shows that eg the Python OpenCL bindings come with a full debug library,
something Debian frequently does for normal shared libraries (ie we create
r-base-core-dbg for debug support R, but eg I never bothered to do the same
for r-mathlib).

So while no exhaustive "proof" of any kind, based on this JJ's talk of "a
rub" may be on to something.

Dirk

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


More information about the Rcpp-devel mailing list