C macros and Makevars/package building
Kasper Daniel Hansen <khansen at stat.berkeley.edu> writes:
Hi
We are currently embedding a rather large C++ library in R (BioC),
and we want some comments on the portability of how we have approach
this.
First of, we are not really able to do much about the portability of
the basic library, which of course is the main question :) We have an
approach which seems to work, I just want a bit of feedback on it....
The way we integrate it into R is simply by having a subdirectory /
src/sdk together with a Makevars file. This file basically looks like
PKG_CPPFLAGS+=\
-imacros R_affx_constants.h\
-Isdk/files\
(... + a lot of other -I statements telling CPP to include
subdirectories of src/sdk)
Then we have a
SOURCES.SDK = \
sdk/files/FileIO.cpp \
(... + a lot of other .cpp files)
SOURCES.OURS = \
R_affx_cdf.cpp
and then finally a
OBJS=$(SOURCES.SDK:.cpp=.o) $(SOURCES.OURS:cpp:.o)
We seem to need the last statement since it seems that .cpp is not
automatically a C++ suffix (but is it done the "right" way for
portability?).
Er, I don't think it has to do with .cpp being a known suffix or not.
If it wasn't, you would use SUFFIXES and a .cpp.o rule. The last line
comes from specifying sources, rather than objects.
Traditional make style would be
OBJS.SDK = \
sdk/files/FileIO.o \
(... + a lot of other .cpp files)
OBJS.OURS = \
R_affx_cdf.o
OBJS = $(OBJS.SDK) $(OBJS.OURS)
from which the suffix rules would deduce the source files.
We need the -imacro statement in order to include some macros from Rconfig.h (big endian checks) which are then translated from the WORDS_BIGENDIAN used in R to the IS_BIG_ENDIAN used in the library. Comments on the portability? Kasper
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907