Thread: Need help with autoconf
Hi! I'm trying to write an autoconf macro to figure out if the function krb5_free_unparsed_name exists (because it exists in MIT but not Heimdal), to fix a rather nasty bug in our Kerberos implementation. However, I'm failing :( I'm simply using AC_CHECK_FUNC([krb5_free_unparsed_name]) which works fine on unix, but breaks on win32. Because autoconf tries the function with no parameters, which doesn't work due to win32 decorations. The function is declared in krb5.h - is there some way to make autoconf load that header file and use the declaration from there? (If I manually set HAVE_KRB5_FREE_UNPARSED_NAME, I can perfectly well *use* the function as long as I put the correct number of arguments in there) //Magnus
Magnus Hagander <magnus@hagander.net> writes: > I'm simply using > AC_CHECK_FUNC([krb5_free_unparsed_name]) > which works fine on unix, but breaks on win32. Because autoconf tries the > function with no parameters, which doesn't work due to win32 decorations. Doesn't work why? We have dozens of other functions we check for without needing any special windoze hacks. Is it a macro? regards, tom lane
Tom Lane wrote: > Magnus Hagander <magnus@hagander.net> writes: >> I'm simply using >> AC_CHECK_FUNC([krb5_free_unparsed_name]) >> which works fine on unix, but breaks on win32. Because autoconf tries the >> function with no parameters, which doesn't work due to win32 decorations. > > Doesn't work why? We have dozens of other functions we check for > without needing any special windoze hacks. Is it a macro? No, it actually depends on how the library is compiled. Functions can either be exported decorated or not. This one is exported decorated. Also, if it just checks for a function with zero arguments, decorated and non-decorated look the same. //magnus
Magnus Hagander <magnus@hagander.net> writes: > Tom Lane wrote: >> Magnus Hagander <magnus@hagander.net> writes: >>> I'm simply using >>> AC_CHECK_FUNC([krb5_free_unparsed_name]) >>> which works fine on unix, but breaks on win32. Because autoconf tries the >>> function with no parameters, which doesn't work due to win32 decorations. >> >> Doesn't work why? We have dozens of other functions we check for >> without needing any special windoze hacks. Is it a macro? > No, it actually depends on how the library is compiled. Functions can > either be exported decorated or not. This one is exported decorated. It's still not apparent to me how this function is different from every other one we check for; but I'd suggest you write a check that looks like the ones we use for functions that might be macros, eg sigsetjmp. regards, tom lane
On Wed, Jul 11, 2007 at 01:41:56PM -0400, Tom Lane wrote: > Magnus Hagander <magnus@hagander.net> writes: > > Tom Lane wrote: > >> Magnus Hagander <magnus@hagander.net> writes: > >>> I'm simply using > >>> AC_CHECK_FUNC([krb5_free_unparsed_name]) > >>> which works fine on unix, but breaks on win32. Because autoconf tries the > >>> function with no parameters, which doesn't work due to win32 decorations. > >> > >> Doesn't work why? We have dozens of other functions we check for > >> without needing any special windoze hacks. Is it a macro? > > > No, it actually depends on how the library is compiled. Functions can > > either be exported decorated or not. This one is exported decorated. > > It's still not apparent to me how this function is different from every > other one we check for; but I'd suggest you write a check that looks > like the ones we use for functions that might be macros, eg sigsetjmp. Thanks for the pointer. Attached is what I came up with. If someone autoconfy can sign off on that it seems correct, I'll apply that. (It passes my tests on both linux and win32 now..) //Magnus
Attachment
Magnus Hagander <magnus@hagander.net> writes: > Thanks for the pointer. Attached is what I came up with. If someone > autoconfy can sign off on that it seems correct, I'll apply that. Looks reasonable to me. regards, tom lane
On Thu, Jul 12, 2007 at 09:54:28AM -0400, Tom Lane wrote: > Magnus Hagander <magnus@hagander.net> writes: > > Thanks for the pointer. Attached is what I came up with. If someone > > autoconfy can sign off on that it seems correct, I'll apply that. > > Looks reasonable to me. Thanks, applied and backpatched to 8.2. I didn't backpatch past 8.2, since I've only seen the bug affecting Windows systems. Though it's actually incorrect code in 8.1 and earlier as well, I figured we'd better leave it alone for now. //Magnus