On Wednesday 07 August 2013 14:55:40 Jan Kundrát wrote:
> On Wednesday, 7 August 2013 07:34:54 CEST, Pali Rohár wrote:
> > Can you test to compile my gsoc branch (with decreased cmake
> > version) on your target systems? Myabe
> > POSITION_INDEPENDENT_CODE property will also work with
> > older cmake...
>
> As you said, the POSITION_INDEPENDENT_CODE property got added
> in cmake 2.8.9.
>
> Using commit ea142719e01f729fcbdfd7fd888008f3ef31f1c5, cmake
> 2.8.7, and the following changes on top of your code:
>
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index 65c1d38..ff2433c 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -1,5 +1,5 @@
> # The Qt5's qt5_use_modules and POSITION_INDEPENDENT_CODE is
> only available on 2.8.9 or later -- sweet, isn't it?
> -cmake_minimum_required(VERSION 2.8.9)
> +cmake_minimum_required(VERSION 2.8.7)
> project(trojita)
> SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
>
> I can confirm that this version builds; however, the compiler
> is invoked without -fPIC:
>
> [ 2%] Building CXX object
> CMakeFiles/Common.dir/src/Common/DeleteAfter.cpp.o
> /usr/bin/c++ -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_GUI_LIB
> -DQT_TEST_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
> -DQT_STRICT_ITERATORS -DTROJITA_HAVE_ZLIB -DHAS_GITVERSION
> -Wall -g -fvisibility=hidden -fvisibility-inlines-hidden
> -I/usr/include/qt4 -I/usr/include/qt4/QtWebKit
> -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtTest
> -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtNetwork
> -I/usr/include/qt4/QtCore
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/src
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/bui
> ld -I/usr/share/qt4/mkspecs/default
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/src/
> Gui
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/src
> /mimetypes-qt4/io
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/src
> /Harmattan/qmlapplicationviewer
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/tes
> ts
> -I/home/jkt/work/prog/_trojita-build/scratch/pali-trojita/tes
> ts/test_LibMailboxSync -o
> CMakeFiles/Common.dir/src/Common/DeleteAfter.cpp.o -c
> /home/jkt/work/prog/_trojita-build/scratch/pali-trojita/src/C
> ommon/DeleteAfter.cpp
> Ok, then POSITION_INDEPENDENT_CODE is really on 2.8.9+ > > Furtermore, when I try to build with -DWITH_KDE=1, cmake > errors out because my version of KDE apparently requires > newer cmake: > > -- Building the desktop version > CMake Error at > /usr/share/apps/cmake/modules/FindKDE4Internal.cmake:350 > (cmake_minimum_required): > CMake 2.8.9 or higher is required. You are running version > 2.8.7 Call Stack (most recent call first): > /opt/cmake-2.8.7/share/cmake-2.8/Modules/FindKDE4.cmake:95 > (FIND_PACKAGE) CMakeLists.txt:18 (find_package) > > It might be interesting to see what KDE version ships with > Ubuntu 12.04 (as used on the CI machines). > > What KDE versions and what distribution versions would you > like to support for the KDE integration? > KDE code which is in Trojita should work on any KDE4 version. Only Akonadi needs KDE4.5+. > Anyway, here are my suggestions: > > - Set the POSITION_INDEPENDENT_CODE on a global basis to > prevent excess cmake clutter. Some distributions (Fedora) > strongly suggest to enable -fPIC on applications which > process untrusted input, and Trojita qualifies. > > - When running on old cmake, check for gcc or clang and if > that is the case, manually add -fPIC to $CMAKE_CXX_FLAGS. > > Cheers, > Jan Ok. -- Pali Rohár [email protected]
signature.asc
Description: This is a digitally signed message part.
