https://bugs.kde.org/show_bug.cgi?id=416008

            Bug ID: 416008
           Summary: feature request: prepare kwin for unity build
           Product: kwin
           Version: 5.17.5
          Platform: Chakra
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: kwin-bugs-n...@kde.org
          Reporter: a....@web.de
  Target Milestone: ---

salve

'single unit compilation' or 'unity build' or 'jumbo build' are a technique to
reduce build time. 
how does unity build work, please read the explanation from the meson build
system, this explanation is imo comfortable to read because its short and exact
enough https://mesonbuild.com/Unity-builds.html
a propos meson build system, cmake 3.16 also support unity build
https://cmake.org/cmake/help/v3.16/prop_tgt/UNITY_BUILD.html

as example how fast unity builds can be i compiled kactivities 5.65 with cmake:
#with set `-DCMAKE_UNITY_BUILD=TRUE`
real 66,03 - 68,91 - 68,93
user 92,77 - 98,05 - 68,93
sys 8,80 - 8,76 - 8,95```

#as normal build
real 128,53 - 125,27 - 129,16
user 219,17 - 215,70 - 219,40
sys 15,54 - 15,68 - 16,41

unfortunately i wasn't able to build kwin as unity build it breaks with error:

In file included from /usr/include/qt5/QtCore/qobject.h:54,
                 from /usr/include/qt5/QtWidgets/qwidget.h:45,
                 from /usr/include/qt5/QtWidgets/qdialog.h:44,
                 from /usr/include/qt5/QtWidgets/QDialog:1,
                 from
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwinrules/detectwidget.h:23,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwinrules/kdeinit_kwin_rules_dialog_autogen/EWIEGA46WW/moc_detectwidget.cpp:10,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwinrules/kdeinit_kwin_rules_dialog_autogen/mocs_compilation.cpp:2,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwinrules/CMakeFiles/kdeinit_kwin_rules_dialog.dir/Unity/unity_0.cxx:3:
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwinrules/ruleswidget.cpp:42:1:
Fehler: Redefinition von »struct QMetaTypeId<NET::WindowType>«
 Q_DECLARE_METATYPE(NET::WindowType)
 ^~~~~~~~~~~~~~~~~~
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwinrules/main.cpp:35:1: Anmerkung:
vorherige Definition von »struct QMetaTypeId<NET::WindowType>«
 Q_DECLARE_METATYPE(NET::WindowType)
 ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt5/QtCore/qobject.h:54,
                 from /usr/include/qt5/QtCore/QObject:1,
                 from
/usr/include/KDecoration2/kdecoration2/decorationbutton.h:26,
                 from
/usr/include/KDecoration2/KDecoration2/DecorationButton:1,
                 from
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwindecoration/declarative-plugin/buttonsmodel.h:23,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwindecoration/kcm_kwindecoration_autogen/IEE35O66SJ/moc_buttonsmodel.cpp:10,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwindecoration/kcm_kwindecoration_autogen/mocs_compilation.cpp:2,
                 from
/tmp/makepkg/kwin/src/build/kcmkwin/kwindecoration/CMakeFiles/kcm_kwindecoration.dir/Unity/unity_0.cxx:3:
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwindecoration/kcm.cpp:42:1: Fehler:
Redefinition von »struct QMetaTypeId<KDecoration2::BorderSize>«
 Q_DECLARE_METATYPE(KDecoration2::BorderSize)
 ^~~~~~~~~~~~~~~~~~
/usr/include/KDecoration2/kdecoration2/decorationsettings.h:147:1: Anmerkung:
vorherige Definition von »struct QMetaTypeId<KDecoration2::BorderSize>«
 Q_DECLARE_METATYPE(KDecoration2::BorderSize)
 ^~~~~~~~~~~~~~~~~~
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwinrules/detectwidget.cpp:39:1:
Fehler: Redefinition von »struct QMetaTypeId<NET::WindowType>«
 Q_DECLARE_METATYPE(NET::WindowType)
 ^~~~~~~~~~~~~~~~~~
/tmp/makepkg/kwin/src/kwin-5.17.5/kcmkwin/kwinrules/main.cpp:35:1: Anmerkung:
vorherige Definition von »struct QMetaTypeId<NET::WindowType>«
 Q_DECLARE_METATYPE(NET::WindowType)
 ^~~~~~~~~~~~~~~~~~
make[2]: ***
[kcmkwin/kwindecoration/CMakeFiles/kcm_kwindecoration.dir/build.make:63:
kcmkwin/kwindecoration/CMakeFiles/kcm_kwindecoration.dir/Unity/unity_0.cxx.o]
Fehler 1
make[1]: *** [CMakeFiles/Makefile2:4821:
kcmkwin/kwindecoration/CMakeFiles/kcm_kwindecoration.dir/all] Fehler 2
make[1]: *** Es wird auf noch nicht beendete Prozesse gewartet....
make[2]: ***
[kcmkwin/kwinrules/CMakeFiles/kdeinit_kwin_rules_dialog.dir/build.make:104:
kcmkwin/kwinrules/CMakeFiles/kdeinit_kwin_rules_dialog.dir/Unity/unity_0.cxx.o]
Fehler 1
make[1]: *** [CMakeFiles/Makefile2:4956:
kcmkwin/kwinrules/CMakeFiles/kdeinit_kwin_rules_dialog.dir/all] Fehler 2
[ 35%] Built target kdecorationprivatedeclarative
make: *** [Makefile:130: all] Fehler 2

unfortunately again it will need some time to debug and review the code but the
expected saved time is tremendous 

sincerely tom

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to