Review Request 123874: Fix build with Qt >= 5.4.2

Harald Sitter sitter at kde.org
Fri May 22 07:57:29 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123874/#review80723
-----------------------------------------------------------


Like Thiago already suggested on kde-core-devel, this might need additional discussion in a different venue.

As for the diff itself, I am not sure hitting the compile flags with everything Qt got is a very good idea. I have no examples of when this would be undesirable but considering the position in the past was to opt-in for specific flags, as necessary, it seems a bit over the top to now simply reuse all the flags.

I did some research though and I think I found why it fails. Apparently cmake implements fPIC and fPIE mutually exclusive (at least as far as CMAKE_POSITION_INDEPENDENT_CODE goes) depending on the actual target type
https://github.com/Kitware/CMake/blob/e54d2fdf50d7e1170f9e3dcbcb62ebacc7205de6/Source/cmLocalGenerator.cxx#L2412

And that really makes the problem greater in scope because more things use that flag to enable PIC (http://lxr.kde.org/search?_filestring=&_string=CMAKE_POSITION_INDEPENDENT_CODE) and it is in fact the recommended way to handle this right now (http://doc.qt.io/qt-5/cmake-manual.html). So yeah, I think this should probably be figured out with Qt/CMake people how to best enable position independency so both PIC and PIE are enabled at the same time.
That being said, the more accruate temporary fix probably would be to manually add CMAKE_${lang}_COMPILE_OPTIONS_PIC and CMAKE_${lang}_COMPILE_OPTIONS_PIE to the flags manually (i.e. replicate what ::AddPositionIndependentFlags does but using both PIC and PIE).

- Harald Sitter


On May 22, 2015, 4:45 a.m., Hrvoje Senjan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/123874/
> -----------------------------------------------------------
> 
> (Updated May 22, 2015, 4:45 a.m.)
> 
> 
> Review request for Build System, Phonon and Harald Sitter.
> 
> 
> Repository: phonon
> 
> 
> Description
> -------
> 
> Or to be more accurate, with commit 3eca75de67b3fd2c890715b30c7899cebc096fe9
> I am not convinced this is best solution, but requires least changes to current cmake code.
> 
> 
> Diffs
> -----
> 
>   cmake/FindPhononInternal.cmake 44862b5 
> 
> Diff: https://git.reviewboard.kde.org/r/123874/diff/
> 
> 
> Testing
> -------
> 
> Builds with 5.4.2 branch, or mentioned commit backported.
> Otherwise check_qt_visibility fails:
> 
> ```
> [  126s] -- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success
> [  126s] Change Dir: /home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeFiles/CMakeTmp
> [  126s] 
> [  126s] Run Build Command:"/usr/bin/gmake" "cmTryCompileExec3719375587/fast"
> [  126s] /usr/bin/gmake -f CMakeFiles/cmTryCompileExec3719375587.dir/build.make CMakeFiles/cmTryCompileExec3719375587.dir/build
> [  126s] gmake[1]: Entering directory '/home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeFiles/CMakeTmp'
> [  126s] /usr/bin/cmake -E cmake_progress_report /home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeFiles/CMakeTmp/CMakeFiles 1
> [  126s] Building CXX object CMakeFiles/cmTryCompileExec3719375587.dir/check_qt_visibility.cpp.o
> [  126s] /usr/bin/c++    -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fvisibility=hidden  -fPIE -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I/usr/lib64/qt5/mkspecs/linux-g++ -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui    -o CMakeFiles/cmTryCompileExec3719375587.dir/check_qt_visibility.cpp.o -c /home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeTmp/check_qt_visibility.cpp
> [  126s] In file included from /usr/include/qt5/QtCore/QtGlobal:1:0,
> [  126s]                  from /home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeTmp/check_qt_visibility.cpp:1:
> [  126s] /usr/include/qt5/QtCore/qglobal.h:1051:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)."
> [  126s]  #  error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
> [  126s]     ^
> [  126s] CMakeFiles/cmTryCompileExec3719375587.dir/build.make:57: recipe for target 'CMakeFiles/cmTryCompileExec3719375587.dir/check_qt_visibility.cpp.o' failed
> [  126s] gmake[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/phonon-4.8.3/build/CMakeFiles/CMakeTmp'
> [  126s] gmake[1]: *** [CMakeFiles/cmTryCompileExec3719375587.dir/check_qt_visibility.cpp.o] Error 1
> [  126s] Makefile:117: recipe for target 'cmTryCompileExec3719375587/fast' failed
> [  126s] gmake: *** [cmTryCompileExec3719375587/fast] Error 2
> [  126s] 
> [  126s] CMake Error at cmake/FindPhononInternal.cmake:416 (message):
> [  126s]   Qt compiled without support for -fvisibility=hidden.  This will break
> [  126s]   plugins and linking of some applications.  Please fix your Qt installation
> [  126s]   (try passing --reduce-exports to configure).
> [  126s] Call Stack (most recent call first):
> [  126s]   CMakeLists.txt:47 (include)
> ```
> 
> 
> Thanks,
> 
> Hrvoje Senjan
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-buildsystem/attachments/20150522/26f9bd71/attachment.html>


More information about the Kde-buildsystem mailing list