Autoconf configure script and X checking

Ralf Corsepius rc040203 at freenet.de
Mon Feb 13 16:17:23 UTC 2006


On Mon, 2006-02-13 at 16:04 +0100, Matthias Saou wrote:
> Hi,
> 
> This is something I've seen with synergy 1.2.7 which builds fine on FC4
> and older : After an autoreconf on FC development, configure fails to
> detect X, the reason being :
> 
> (sorry, some line breaks get mangled by sylpheed...)
> 
> :^configure:5738: checking for X
> configure:5843: g++ -E  conftest.cc
> configure:5849: $? = 0
> configure:5899: g++ -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
> -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64
> -mtune=generic -g   conftest.cc -lXt  >&5 /usr/include/X11/Xlib.h: In
> function 'int main()': /usr/include/X11/Xlib.h:1492: error: too many
> arguments to function 'void XrmInitialize()' conftest.cc:46: error: at
> this point in file configure:5905: $? = 1 configure: failed program was:
> | /* confdefs.h.  */
> |
> | #define PACKAGE_NAME ""
> | #define PACKAGE_TARNAME ""
> | #define PACKAGE_VERSION ""
> | #define PACKAGE_STRING ""
> | #define PACKAGE_BUGREPORT ""
> | #define PACKAGE "synergy"
> | #define VERSION "1.2.7"
> | #ifdef __cplusplus
> | extern "C" void std::exit (int) throw (); using std::exit;
> | #endif
> | #define HAVE_POSIX_SIGWAIT 1
> | #define HAVE_PTHREAD_SIGNAL 1
> | #define HAVE_PTHREAD 1
> | #define HAVE_NANOSLEEP 1
> | #define HAVE_INET_ATON 1
> | #define STDC_HEADERS 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_SYS_STAT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_MEMORY_H 1
> | #define HAVE_STRINGS_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_STDINT_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_SYS_TIME_H 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_LOCALE_H 1
> | #define HAVE_WCHAR_H 1
> | #define HAVE_ALLOCA_H 1
> | #define HAVE_SYS_SOCKET_H 1
> | #define HAVE_SYS_SELECT_H 1
> | #define HAVE_SYS_UTSNAME_H 1
> | #define HAVE_ISTREAM 1
> | #define HAVE_OSTREAM 1
> | #define HAVE_SSTREAM 1
> | #define TIME_WITH_SYS_TIME 1
> | /* end confdefs.h.  */
> | #include <X11/Xlib.h>
> | int
> | main ()
> | {
> | XrmInitialize (0)
> |   ;
> |   return 0;
> | }
> configure:5958: result: no
> 
> After a quick glance, I see nothing weird in configure.in. Could this be
> related to the recent changes in X detection? (it used to be Intrinsic.h
> being checked IIRC).
Yes.

> If this seems to be indeed an autoconf bug,

It's a bug in RH's change.

Xlib.h contains this prototypes: 
void XrmInitialize( void );

But their hack bogusly assumes:
void XrmInitialize( int );


>  I'll gladly report it in bugzilla.
Please do so.

IMO, their change is harmful, but that's not your problem, here. They
simply screwed it.

Ralf





More information about the fedora-devel-list mailing list