From p.dalgaard at biostat.ku.dk  Fri Sep  9 08:38:16 2005
From: p.dalgaard at biostat.ku.dk (Peter Dalgaard)
Date: 09 Sep 2005 08:38:16 +0200
Subject: [Rd] C macros and Makevars/package building
In-Reply-To: <5C1BDAE5-1DBF-45DB-B8D0-5A5AE2A2627C@stat.Berkeley.EDU>
References: <5C1BDAE5-1DBF-45DB-B8D0-5A5AE2A2627C@stat.Berkeley.EDU>
Message-ID: <x2mzmmycdj.fsf@turmalin.kubism.ku.dk>

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



[Rd] C macros and Makevars/package building
Peter Dalgaard