From rhurlin at gwdg.de  Tue Jun  7 22:30:03 2005
From: rhurlin at gwdg.de (Rainer Hurling)
Date: Tue Jun  7 22:30:43 2005
Subject: [Rd] alloca() on FreeBSD (PR#7890)
In-Reply-To: <0BBF2A4E-9FB6-4C92-88A8-2F5D5AC96D18@r-project.org>
References: <20050606112426.3827BA3C4@slim.kubism.ku.dk>
	<42A5CD05.3080507@gwdg.de>
	<0BBF2A4E-9FB6-4C92-88A8-2F5D5AC96D18@r-project.org>
Message-ID: <42A603CB.1040509@gwdg.de>

Simon Urbanek wrote:
> 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.

Simon,
thank you, but I am absolute sure I made a new, clean built:

1.) untar R-2.1.0.tar.gz
2.) cd R-2.1.0
3.) ./configure
4.) edit src/include/config.h  [#define HAVE_DECL_ALLOCA 1]
5.) make

It seems to me that some files behave not like others in relation to 
alloca.h (resp. stdlib.h)?

Please tell me, if I can help in any way,
Rainer


[Rd] alloca() on FreeBSD (PR#7890)
Rainer Hurling