From pgilbert902 at gmail.com  Mon Feb 20 03:32:15 2012
From: pgilbert902 at gmail.com (Paul Gilbert)
Date: Sun, 19 Feb 2012 21:32:15 -0500
Subject: [Rd] include <R.h>
In-Reply-To: <463AE38F-71E6-4DAD-BBF5-E2A411DBD0AE@r-project.org>
References: <4F415146.6020508@gmail.com>
	<463AE38F-71E6-4DAD-BBF5-E2A411DBD0AE@r-project.org>
Message-ID: <4F41B0AF.70804@gmail.com>



On 12-02-19 04:56 PM, Simon Urbanek wrote:
> Paul,
>
> On Feb 19, 2012, at 2:45 PM, Paul Gilbert wrote:
>
>> I am trying to add
>>
>> #include<R.h>
>>
>> to a .c file in one of my package, so I can call error() without a complaint about implicit defined function. The src/ has a Makefile, to build some exec/ files that are needed. Without the include, my Makefile target
>>
>> OBJS = $(SRC:.c=.o)
>>
>> $(PKGNAME).so: $(OBJS) rpcx.h
>> 	$(R_HOME)/bin/R CMD SHLIB  $(OBJS)
>>
>> seems to work fine, and I do not need a target for the .o's, the default works. But when I add the include, the location of R.h does not get passed along. How am I suppose to specify $(R_HOME)lib/R/include so that it gets passed along by R CMD SHLIB ?
>>
>
> I assume you know that the above general approach won't work very well, so I won't go there... (you don't need Makefile to just add targets).

Simon

I'm not sure if I understand this. I know I could add targets in 
Makevars or Makerules, but do you means something else?  I also need to 
build some executables and move then into exec/, which I think also 
implies I need to change the default target in src/. Isn't a Makefile 
the only way to do that? (I know you said you won't go here, but now I' 
curious.)

> But your immediate problem is that you want to use R CMD SHLIB $(SRC) and not $(OBJS), otherwise you'll be missing all C*FLAGS (which includes -I that is needed for the headers) since the compilation will be done by your Makefile and not R.

Thanks, that fixed it!
Paul

> Cheers,
> Simon
>



[Rd] include <R.h>
Paul Gilbert