From simon.urbanek at r-project.org  Tue Jun  7 19:52:49 2005
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Tue Jun  7 19:52:59 2005
Subject: [Rd] alloca() on FreeBSD (PR#7890)
In-Reply-To: <42A5CD05.3080507@gwdg.de>
References: <20050606112426.3827BA3C4@slim.kubism.ku.dk>
	<42A5CD05.3080507@gwdg.de>
Message-ID: <0BBF2A4E-9FB6-4C92-88A8-2F5D5AC96D18@r-project.org>

On Jun 7, 2005, at 12:36 PM, Rainer Hurling wrote:

> One first reaction to your suggestions.
>
> ripley@stats.ox.ac.uk wrote:
>
>> On Mon, 23 May 2005 vangyzen@stat.duke.edu wrote:
>>
>>> R-2.1.0 fails to compile on the newest release of FreeBSD,  
>>> complaining about
>>> undefined references to __builtin_alloca.  On FreeBSD, alloca()  
>>> is declared in
>>> stdlib.h, not alloca.h as the R sources expect.  Therefore,  
>>> HAVE_DECL_ALLOCA
>>> does not get set, so the R sources declare alloca() after it has  
>>> already been
>>> #defined by stdlib.h.
>>>
>>> A possible fix is to modify the configure script to look for the  
>>> declaration of
>>> alloca() in stdlib.h (perhaps after it fails to find it in  
>>> alloca.h).
>>>
>> It is already supposed to, so it is not finding the declaration  
>> there either. If you look up the definition of
>> AC_CHECK_DECLS([alloca], , , [#include <alloca.h>])
>> it searches in stdlib.h.  Can you please send us the appropriate  
>> part of config.log?  It may be that this is failing because  
>> alloca.h is not found
>> (but AC_FUNC_ALLOCA is making the same assumptions).
>> Perhaps the easiest way out is to override the setting on FreeBSD:  
>> can you please confirm that manually changing
>> #define HAVE_DECL_ALLOCA 1
>> in config.h works?
>>
>
> Changing "#define HAVE_DECL_ALLOCA" to 1
> in line 81 of R-2.1.0/src/include/config.h
> gives me the following stopping:
>
>
> mkdir ../../../../library/grDevices/libs
> building package 'graphics'
> mkdir ../../../library/graphics
> mkdir ../../../library/graphics/R
> mkdir ../../../library/graphics/demo
> mkdir ../../../library/graphics/po
> mkdir ../../../library/graphics/man
> Error in dyn.load(x, as.logical(local), as.logical(now)) :
>         unable to load shared library '/usr/local/R-2.1.0/library/ 
> grDevices/libs/grDevices.so':
>   /usr/local/R-2.1.0/library/grDevices/libs/grDevices.so: Undefined  
> symbol "__builtin_alloca"
> Execution halted

Did you run a new, clean build? From the output it seems as if you  
just changed the file in your old build and typed make - obviously  
that doesn't help at all, because the setting must the changed  
*before* you start building. So if you didn't do so, please remove  
the build, unpack the sources again, run configure, change the ALLOCA  
define and then build.

Cheers,
Simon


[Rd] alloca() on FreeBSD (PR#7890)
Simon Urbanek