| Karim Belabas on Thu, 06 May 2004 00:59:34 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: qsecretary notice |
* Bill Allombert [2004-05-06 00:18]:
> On Wed, May 05, 2004 at 09:00:21PM +0200, Karim Belabas wrote:
>> * Bill Allombert [2004-05-05 13:31]:
>> > 2) That does not check whether the prototype for log2 exists, only
>> > if the log2 symbol is in the library.
>>
>> This is correct, that's all we want. We do not want to try and work around
>> unknown, possibly broken or conflicting, headers. The autoconf way to do
>> things is even more paranoid:
>>
>> #ifdef __cplusplus
>> extern "C"
>> #endif
>> /* We use char because int might match the return type of a gcc2
>> builtin and then its argument prototype would still apply. */
>> char fun ();
>> int main () { fun (); return 0; }
>
> Are you sure ? I think it use
>
> char (*f) () = $ac_func;
>
> int
> main ()
> {
> return f != $ac_func;
> }
>
> which will not compile if $ac_func has no prototype since,
> char (*f) () = $ac_func will report error: `$ac_func' undeclared'.
Interesting; my autoconf setup was rather outdated. With autoconf-2.59,
I indeed get the above.
>> Anyway, it's quite unimportant to "miss" either exp2 or log2: both are
>> almost unused.
>
> We will not miss it, we will find it where it is supposed to be hidden.
> We will try to use log2() without prototype which is likely to fail
> with a C++ compiler.
Hum... A gp binary compiled with the "corrected" detection of log2/exp2 is
completely broken.
OK, the autoconf way is obviously better. I've fixed the has_log2.c and
has_exp2.c tests.
Thanks,
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]