kcoreaddons_add_plugin: remove effectless OBJECT_DEPENDS on json file
ClosedPublic

Authored by kossebau on Feb 19 2018, 5:39 PM.

Details

Summary

The JSON file argument passed to K_PLUGIN_FACTORY_WITH_JSON ends up
being used with the macro Q_PLUGIN_METADATA, which is a no-code macro
at the C++ level and only used to note information used by moc for the
generated moc file.

So when the content of the JSON file has changed, this will not change
anything in the preprocessed source file itself. It will only change the
content of the moc file generated based on it, which already is noted
as dependency to the object file due to being a file included by the
source.

This code possibly was added hoping to solve the issue of cmake's automoc
not properly dealing with Q_OBJECT macros hidden away in other C++
preprocessor macros. But it misses to catch the issue that it is the
generated moc file which needs to be regenerated on a change of the JSON
file, not just the object file.
Regenerating the moc file is something only automoc decides about when
being run and which seems not influenced by CMakeLists.txt rules.

Cmp. https://gitlab.kitware.com/cmake/cmake/issues/17750

Test Plan

Projects like plasma-desktop still build as before.
Editing desktop files/JSON files still results in same (broken) effective rebuild
behaviour: the moc file is not regenerated, so the new JSON content
not picked up. Other than before the unneeded-because-all-sources-the-same
rebuild of the object file is skipped though.

Diff Detail

Repository
R244 KCoreAddons
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
kossebau created this revision.Feb 19 2018, 5:39 PM
Restricted Application added a project: Frameworks. · View Herald TranscriptFeb 19 2018, 5:39 PM
kossebau requested review of this revision.Feb 19 2018, 5:39 PM
kossebau edited the test plan for this revision. (Show Details)Feb 19 2018, 6:30 PM
apol added a comment.Feb 19 2018, 7:28 PM

:P could you look into an actual fix? :/

In D10665#209765, @apol wrote:

:P could you look into an actual fix? :/

The fix seems needed in automoc AFAICT. Nothing I have ever looked at, and no resources spare to do now.

At least I invested so far into filing a bug report to cmake with a test case to demo the issue, see the linked https://gitlab.kitware.com/cmake/cmake/issues/17750 ("automoc: dependencies added with AUTOGEN_TARGET_DEPENDS do not trigger moc re-run if Q_OBJECT is inside C++ preprocessor macro") :) so hoping the experts can pick up this quickly and do what is needed.

@apol So +1 on this for pushing? (sorry for possibly confusing you with all the many related review requests :) )

apol accepted this revision.Feb 23 2018, 11:29 AM
This revision is now accepted and ready to land.Feb 23 2018, 11:29 AM
This revision was automatically updated to reflect the committed changes.