----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/123179/#review78783 -----------------------------------------------------------
Hi, Yue! Do we need the same fix for krita/image/CMakeLists.txt? It also uses build_per_arch macro, so it might also be affected - Dmitry Kazakov On March 30, 2015, 7:54 a.m., Yue Liu wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/123179/ > ----------------------------------------------------------- > > (Updated March 30, 2015, 7:54 a.m.) > > > Review request for Calligra and Boudewijn Rempt. > > > Repository: calligra > > > Description > ------- > > Currently building pigment with vc 0.7.4 enabled would fail on systems not > putting qt5 headers and kf5 headers in /usr/include. This is because of vc's > cmake macro `ko_compile_for_all_implementations_no_scalar`, which I found > resulted in this piece in CMake-generated ninja code: > ``` > build libs/pigment/KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o: > CUSTOM_COMMAND > /home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops/KoOptimizedCompositeOpFactoryPerArch.cpp > > /home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops/KoOptimizedCompositeOpFactoryPerArch.cpp > || libs/koplugin/libkoplugin.so libs/pigment/pigmentcms_automoc > libs/version/libkoversion.so > COMMAND = cd /home/yue/Dev/calligra/build/libs/pigment && /usr/bin/clang++ > -std=c++0x -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts > -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor > -Woverloaded-virtual -Werror=return-type -O2 -g -DNDEBUG > -Wno-local-type-template-args -Wno-unnamed-type-template-args > -ffp-contract=fast -mtune=core2 -fPIC > -I/home/yue/Dev/calligra/src/calligra/interfaces > -I/home/yue/Dev/calligra/build -I/home/yue/Dev/calligra/src/calligra > -I/home/yue/Dev/calligra/src/calligra/libs/version > -I/home/yue/Dev/calligra/build/libs/version > -I/home/yue/Dev/calligra/src/calligra/libs/koplugin > -I/home/yue/Dev/calligra/src/calligra/libs/version > -I/home/yue/Dev/calligra/build/libs/version > -I/home/yue/Dev/calligra/src/calligra/libs/pigment > -I/home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops > -I/home/yue/Dev/calligra/src/calligra/libs/pigment/resources -I/usr/include > -I/usr/include -I/usr/include/OpenEXR -I/usr/include -mavx -DVC _IMPL=AVX -c -oKoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o /home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops/KoOptimizedCompositeOpFactoryPerArch.cpp > DESC = Building CXX object KoOptimizedCompositeOpFactoryPerArch_AVX.cpp.o > ``` > > Which is very different from ninja code generated by CMake's add_library > function: > ``` > build > libs/pigment/CMakeFiles/pigmentcms.dir/compositeops/KoOptimizedCompositeOpFactory.cpp.o: > CXX_COMPILER > /home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops/KoOptimizedCompositeOpFactory.cpp > || cmake_order_depends_target_pigmentcms > DEFINES = -DBOOST_ALL_NO_LIB -DCAN_USE_QTWEBKIT -DKCOREADDONS_LIB > -DKGUIADDONS_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_DISABLE_DEPRECATED_BEFORE=0 > -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB > -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS -DQT_WIDGETS_LIB > -DQT_XML_LIB -DSHOULD_BUILD_FONT_CONVERSION -D_GNU_SOURCE > -D_LARGEFILE64_SOURCE -Dpigmentcms_EXPORTS > DEP_FILE = > libs/pigment/CMakeFiles/pigmentcms.dir/compositeops/KoOptimizedCompositeOpFactory.cpp.o.d > FLAGS = -std=c++0x -fno-exceptions -Wall -Wextra -Wcast-align > -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef > -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -O2 -g -DNDEBUG > -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Ilibs/pigment > -I/home/yue/Dev/calligra/src/calligra/libs/pigment > -I/home/yue/Dev/calligra/src/calligra/interfaces -I. > -I/home/yue/Dev/calligra/src/calligra > -I/home/yue/Dev/calligra/src/calligra/libs/version -Ilibs/version > -I/home/yue/Dev/calligra/src/calligra/libs/koplugin > -I/home/yue/Dev/calligra/src/calligra/libs/pigment/compositeops > -I/home/yue/Dev/calligra/src/calligra/libs/pigment/resources -Ilibs/koplugin > -I/usr/include/OpenEXR -isystem /usr/include/qt -isystem > /usr/include/qt/QtCore -isystem /usr/lib/qt/mkspecs/linux-g++ -isystem > /usr/include/KF5/KDELibs4Support -isystem > /usr/include/KF5/KDELibs4Support/KDE -isystem /usr/include/KF5 -isystem > /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtGui -isystem /us r/include/qt/QtDBus -isystem /usr/include/qt/QtPrintSupport -isystem /usr/include/KF5/KCoreAddons -isystem /usr/include/KF5/KCrash -isystem /usr/include/KF5/KWidgetsAddons -isystem /usr/include/KF5/KConfigCore -isystem /usr/include/KF5/KConfigWidgets -isystem /usr/include/KF5/KCodecs -isystem /usr/include/KF5/KConfigGui -isystem /usr/include/qt/QtXml -isystem /usr/include/KF5/KAuth -isystem /usr/include/KF5/KIOCore -isystem /usr/include/KF5/KService -isystem /usr/include/KF5/KIOFileWidgets -isystem /usr/include/KF5/KIOWidgets -isystem /usr/include/KF5/KJobWidgets -isystem /usr/include/qt/QtNetwork -isystem /usr/include/KF5/KCompletion -isystem /usr/include/KF5/KBookmarks -isystem /usr/include/KF5/KItemViews -isystem /usr/include/KF5/KXmlGui -isystem /usr/include/KF5/Solid -isystem /usr/include/KF5/KI18n -isystem /usr/include/KF5/KNotifications -isystem /usr/include/KF5/KIconThemes -isystem /usr/include/KF5/KWindowSystem -isystem /usr/include/KF5/KGuiAddons -isystem /usr/include/KF5/ KUnitConversion -isystem /usr/include/KF5/KTextWidgets -isystem /usr/include/KF5/SonnetUi -isystem /usr/include/KF5/KParts -isystem /usr/include/KF5/KItemModels -isystem /usr/include/KF5/KEmoticons > OBJECT_DIR = libs/pigment/CMakeFiles/pigmentcms.dir > OBJECT_FILE_DIR = libs/pigment/CMakeFiles/pigmentcms.dir/compositeops > TARGET_COMPILE_PDB = libs/pigment/CMakeFiles/pigmentcms.dir/ > TARGET_PDB = libs/pigment/libpigmentcms.pdb > ``` > > It seems vc's `ko_compile_for_all_implementations_no_scalar` macro used its > own method to generate compiler command and arguments, which only has include > directories defined in `add_directories`, but Qt5/KF5 include directories are > added through `target_link_libraries`, which is described in [KF5 porting > notes](https://community.kde.org/Frameworks/Porting_Notes#Build_System) and > [CMake > doc](http://www.cmake.org/cmake/help/v3.2/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.html). > > I think it's something should be fixed in Vc, for now we need to manually add > Qt5/KF5 include directories in `add_directories`, and be careful about the > order of those directories, if conflicting headers exists between > `/usr/include` and other non-standard path, for example kdelibs4's `kdebug.h` > is in `/usr/include`, KF5KDELibs4Support's `kdebug.h` is in > `/usr/include/KF5/KDELibs4Support`, while a different non-cnflicting header > is located in `/usr/include` and its include directory is added before > KDELibs4Support include directory, then compiler will try `/usr/include` > first when looking for KDELibs4Support's headers. That issue doesn't exist if > compiler arguments are constructed by CMake's `add_library` because CMake > will automatically remove any `/usr/include` include directory, as shown in > the second piece of ninja code. > > > Diffs > ----- > > libs/pigment/CMakeLists.txt ae6651b82b8a26ed40d6f1ab4590ce13f753f8d9 > > Diff: https://git.reviewboard.kde.org/r/123179/diff/ > > > Testing > ------- > > Build successful on arch linux > > > Thanks, > > Yue Liu > >
_______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel