Bug 71775
Summary: | [Qt] Incremental fails when using GNUmake and Q_OBJECT macro is added to a header file | ||
---|---|---|---|
Product: | WebKit | Reporter: | Csaba Osztrogonác <ossy> |
Component: | Tools / Tests | Assignee: | Tor Arne Vestbø <vestbo> |
Status: | RESOLVED FIXED | ||
Severity: | Blocker | CC: | ossy |
Priority: | P1 | Keywords: | Qt, QtTriaged |
Version: | 528+ (Nightly build) | ||
Hardware: | All | ||
OS: | All | ||
Bug Depends on: | |||
Bug Blocks: | 71222 |
Csaba Osztrogonác
error message:
/usr/bin/gold: obj/release/BrowserWindow.o: in function BrowserWindow::BrowserWindow(WindowOptions*):BrowserWindow.cpp(.text+0x58d): error: undefined reference to 'vtable for Utils'
/usr/bin/gold: obj/release/BrowserWindow.o: in function BrowserWindow::BrowserWindow(WindowOptions*):BrowserWindow.cpp(.text+0x95d): error: undefined reference to 'vtable for Utils'
revealed by: http://trac.webkit.org/changeset/99527
It is an incremental build issue, because clean build works fine.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Tor Arne Vestbø
This issue is due to the addition of the Q_OBJECT macro in a header file.
When building against Qt5 on a Unix system, we do CONFIG+=GNUmake to let the compiler generate dependency files, and we then run only "make", instead of "make qmake && make", when we build incrementally (running qmake slows the build down).
But, the compiler-generated dependency files can't catch the addition of a Q_OBJECT macro, so the only way to really guarantee a working incremental build is to always run "make qmake" before running make.
For regular development I think it's fine to leave this case up to the developer to handle, by running make qmake manually, or touching the pro file. The latter can be used to kick the bot.
Long term the bot should be configured with CONFIG-=GNUmake, to fix incremental builds, but for now we'll leave it like this to catch other regressions related to the GNUmake option.
Tor Arne Vestbø
The bot uses CONFIG-=GNUmake now