Bug #2183 cant make mysqlcc on Mac OS X
Submitted: 21 Dec 2003 16:04 Modified: 1 Jun 2004 0:43
Reporter: rich allen Email Updates:
Status: Closed Impact on me:
None 
Category:MySQLCC Severity:S3 (Non-critical)
Version:0.9.4 OS:MacOS (Mac OS X 10.3.2)
Assigned to: Bugs System CPU Architecture:Any

[21 Dec 2003 16:04] rich allen
Description:
Qt configure and make completed succesfully (v3.3) after running ./configure and then make on 
mysqlcc

ld: warning prebinding disabled because of undefined symbols
ld: Undefined symbols:
QPaintDevice::setX11Data(QPaintDeviceX11Data const*)
QWidget::create(unsigned long, bool, bool)
QWidget::x11Event(_XEvent*)
QPaintDevice::x11RenderHandle() const
QApplication::x11EventFilter(_XEvent*)
QApplication::x11ClientMessage(QWidget*, _XEvent*, bool)
make: *** [mysqlcc] Error 1

How to repeat:
mysqlcc

./configure
make

ld: warning prebinding disabled because of undefined symbols
ld: Undefined symbols:
QPaintDevice::setX11Data(QPaintDeviceX11Data const*)
QWidget::create(unsigned long, bool, bool)
QWidget::x11Event(_XEvent*)
QPaintDevice::x11RenderHandle() const
QApplication::x11EventFilter(_XEvent*)
QApplication::x11ClientMessage(QWidget*, _XEvent*, bool)
make: *** [mysqlcc] Error 1
[1 May 2004 16:55] fx rhaps
I have the same case.
Rich did you go forward since ?
[23 May 2004 19:11] Panu Korpela
I have the same problem. I tried compiling QT both as static and as shared, both gave the same result:

ld: warning prebinding disabled because of undefined symbols
ld: Undefined symbols:
QPaintDevice::setX11Data(QPaintDeviceX11Data const*)
QWidget::create(unsigned long, bool, bool)
QWidget::x11Event(_XEvent*)
QPaintDevice::x11RenderHandle() const
make: *** [mysqlcc.app/Contents/MacOS/mysqlcc] Error 1
[27 May 2004 8:10] Jonah Tsai
Take a look at Qt's include/qglobal.h.

If you use gcc then the compiler should define __APPLE__ and __GNUC__ (my gcc 3.3 and gcc 2.95.2 are both dated Mar. 22, 2004; I don't know if the earlier releases of Apple's dev. kits will do this or not). This, in turns, defines __MACOSX__, which in turns, defines Q_WS_MACX but does NOT define Q_WS_X11.

Now, take a look at src/widget/qwidget.h. The XEVENT thing is only switched on when Q_WS_X11 is defined. In other words, your Q_WS_X11 flag is turned on. Buzz, wrong!!!

My Qt is v.3.3.2. So, I cannot tell whther the earlier versions behave this way or not.

Try compile and run the following program with "gcc -I/Developer/qt/include -o test test.c" and see what it says. It should say:
__APPLE__ && __GNUC__
Q_OS_UNIX
Q_WS_MACX

If it says "Q_WS_X11" then that's the problem. In other words, Qt thinks your system qualifies Q_WS_X11. Then, you should find a version of gcc and Qt combination that will not spit out "Q_WS_X11". Of course, the alternative is to include -lX11 and pal libraries at link time to force feed, but that's really streching, bad dog, bad dog.

#include <stdlib.h>
#include <stdio.h>

#include <qglobal.h>

int main(int argc, char **argv)
{

#if defined(__APPLE__) && defined(__GNUC__)
  fprintf(stderr, "__APPLE__ && __GNUC__\n");
#endif

#ifdef __MACOSX__
  fprintf(stderr, "__MACOSX__\n");
#endif

#ifdef __DARWIN_X11__
  fprintf(stderr, "__DARWIN_X11__\n");
#endif

#ifdef Q_OS_UNIX
  fprintf(stderr, "Q_OS_UNIX\n");
#endif

#ifdef Q_WS_MACX
  fprintf(stderr, "Q_WS_MACX\n");
#endif

#ifdef Q_WS_X11
  fprintf(stderr, "Q_WS_X11\n");
#endif

}
[1 Jun 2004 0:43] Jorge del Conde
Hi!

MySQLCC has been discontinued and will not be developed nor maintained anymore with the exception of Critical bugs.

In the near future we will release the substitute of MySQLCC called MySQL Query Browser.