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 devel mailing list