From 695af401b16e66b8469e0367c582cf3f827173e3 Mon Sep 17 00:00:00 2001 From: Paul Nader Date: Sat, 22 Oct 2016 18:49:25 +0100 Subject: [PATCH 1/5] IOS toolchain --- 3rdparty/kde/CMakeLists.txt | 2 +- CMakeLists.txt | 11 ++----- Install.txt | 8 +++++ cmake/Toolchain-IOS.cmake | 66 +++++++++++++++++++++++++++++++++++++ probe/CMakeLists.txt | 2 +- 5 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 cmake/Toolchain-IOS.cmake diff --git a/3rdparty/kde/CMakeLists.txt b/3rdparty/kde/CMakeLists.txt index d5e07dcea2..78f0dcce03 100644 --- a/3rdparty/kde/CMakeLists.txt +++ b/3rdparty/kde/CMakeLists.txt @@ -4,7 +4,7 @@ set(gammaray_kitemmodels_srcs krecursivefilterproxymodel.cpp ) -add_library(gammaray_kitemmodels SHARED ${gammaray_kitemmodels_srcs}) +add_library(gammaray_kitemmodels ${GAMMARAY_LIBRARY_TYPE} ${gammaray_kitemmodels_srcs}) if(Qt5Core_FOUND) target_link_libraries(gammaray_kitemmodels LINK_PUBLIC Qt5::Core) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c1085609a..9a872c6ed5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,12 +34,7 @@ project(GammaRay CXX C) -if (MSVC) - cmake_minimum_required(VERSION 3.1.0) # b/c of TARGET_PDB_FILE_DIR generator expression -else() - cmake_minimum_required(VERSION 2.8.12) # b/c of ECMGeneratePriFile.cmake -endif() - +cmake_minimum_required(VERSION 2.8.12) # b/c of ECMGeneratePriFile.cmake cmake_policy(SET CMP0020 NEW) if(POLICY CMP0043) cmake_policy(SET CMP0043 NEW) @@ -233,8 +228,8 @@ endif() # linker flags if(NOT ECM_ENABLE_SANITIZERS AND (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)) if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}") - set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "-Wl, -lc ${CMAKE_SHARED_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "-Wl, -lc ${CMAKE_MODULE_LINKER_FLAGS}") endif() endif() diff --git a/Install.txt b/Install.txt index e677cd706f..a7cf8ac799 100644 --- a/Install.txt +++ b/Install.txt @@ -70,6 +70,14 @@ or $ adb forward --remove-all to remove all forwards +Building Gammaray probe for IOS (OSX "El Capitan" / Qt 5.7 / Xcode 8 / iphone SDK 10.0): +Make sure you have gdb and qmake in your path +% export QT_DIR= +% mkdir build +% cd build +% cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-IOS.cmake -DCMAKE_PREFIX_PATH=${QT_DIR}/5.7/ios -DGAMMARAY_STATIC_PROBE=TRUE -DCMAKE_INSTALL_PREFIX=$SYSROOT/usr/ -DGAMMARAY_BUILD_UI=OFF -G Xcode .. +% /usr/bin/xcodebuild -project GammaRay.xcodeproj build -target gammaray_probe -configuration Release + == Cross-compiling GammaRay == You'll find more information on this in the wiki: https://github.com/KDAB/GammaRay/wiki/Cross-compiling-GammaRay diff --git a/cmake/Toolchain-IOS.cmake b/cmake/Toolchain-IOS.cmake new file mode 100644 index 0000000000..46d4507ea7 --- /dev/null +++ b/cmake/Toolchain-IOS.cmake @@ -0,0 +1,66 @@ +# Basic cmake toolchain file for IOS +# Assumptions: toolchain is in path, $SYSROOT points to the sysroot +# + +# Copyright (c) 2013-2016 Klarälvdalens Datakonsult AB, a KDAB Group company +# All rights reserved. +# +# Author: Paul Nader +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Set the Base SDK (only change the SDKVER value, if for instance, you are building for iOS 10.0): +set(SDKVER "10.0") +set(DEVROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer") +set(SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk") +if(EXISTS ${SDKROOT}) + set(CMAKE_OSX_SYSROOT "${SDKROOT}") +else() + message("Warning, iOS Base SDK path not found: " ${SDKROOT}) +endif() + +set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)") + +set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") +set(CMAKE_MACOSX_BUNDLE YES) +set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") +set(CMAKE_XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING "NO") +set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") +set(CMAKE_XCODE_ATTRIBUTE_PRESERVE_DEAD_CODE_INITS_AND_TERMS "YES") +set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS "armv7") + +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_PROCESSOR "armv7") +set(CMAKE_C_COMPILER clang) +set(CMAKE_CXX_COMPILER clang++) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --sysroot=$ENV{SYSROOT}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=$ENV{SYSROOT}") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=$ENV{SYSROOT}") +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --sysroot=$ENV{SYSROOT}") + +set(CMAKE_FIND_ROOT_PATH "$ENV{SYSROOT}") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/probe/CMakeLists.txt b/probe/CMakeLists.txt index 5f78d35b5b..ab03087f30 100644 --- a/probe/CMakeLists.txt +++ b/probe/CMakeLists.txt @@ -28,7 +28,7 @@ endif() # probe lib if(APPLE) # DYLD_INSERT_LIBRARIES only works with real shared libraries, not modules - add_library(gammaray_probe SHARED ${gammaray_probe_srcs}) + add_library(gammaray_probe ${GAMMARAY_LIBRARY_TYPE} ${gammaray_probe_srcs}) if(NOT GAMMARAY_INSTALL_QT_LAYOUT) set_target_properties(gammaray_probe PROPERTIES INSTALL_RPATH "@loader_path/../../../Frameworks") endif() From 66b7bb3d2ceb89e79eff7a56f4427ddc2bdf472c Mon Sep 17 00:00:00 2001 From: Paul Nader Date: Sat, 22 Oct 2016 19:00:54 +0100 Subject: [PATCH 2/5] fixed CMakeLists.txt --- CMakeLists.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a872c6ed5..10212c5420 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,12 @@ project(GammaRay CXX C) -cmake_minimum_required(VERSION 2.8.12) # b/c of ECMGeneratePriFile.cmake +if (MSVC) + cmake_minimum_required(VERSION 3.1.0) # b/c of TARGET_PDB_FILE_DIR generator expression +else() + cmake_minimum_required(VERSION 2.8.12) # b/c of ECMGeneratePriFile.cmake +endif() + cmake_policy(SET CMP0020 NEW) if(POLICY CMP0043) cmake_policy(SET CMP0043 NEW) @@ -228,8 +233,8 @@ endif() # linker flags if(NOT ECM_ENABLE_SANITIZERS AND (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)) if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_SHARED_LINKER_FLAGS "-Wl, -lc ${CMAKE_SHARED_LINKER_FLAGS}") - set(CMAKE_MODULE_LINKER_FLAGS "-Wl, -lc ${CMAKE_MODULE_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "-lc ${CMAKE_SHARED_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "-lc ${CMAKE_MODULE_LINKER_FLAGS}") endif() endif() From cfce17f3ea88611c238a9b6afc55d96310f1d15f Mon Sep 17 00:00:00 2001 From: Paul Nader Date: Sat, 22 Oct 2016 19:13:06 +0100 Subject: [PATCH 3/5] extended install --- Install.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Install.txt b/Install.txt index a7cf8ac799..f7340eb801 100644 --- a/Install.txt +++ b/Install.txt @@ -72,12 +72,23 @@ to remove all forwards Building Gammaray probe for IOS (OSX "El Capitan" / Qt 5.7 / Xcode 8 / iphone SDK 10.0): Make sure you have gdb and qmake in your path -% export QT_DIR= +% export QT_DIR= <--- set to QT's home % mkdir build % cd build % cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-IOS.cmake -DCMAKE_PREFIX_PATH=${QT_DIR}/5.7/ios -DGAMMARAY_STATIC_PROBE=TRUE -DCMAKE_INSTALL_PREFIX=$SYSROOT/usr/ -DGAMMARAY_BUILD_UI=OFF -G Xcode .. % /usr/bin/xcodebuild -project GammaRay.xcodeproj build -target gammaray_probe -configuration Release +Using Gammaray on IOS: +-modify your main.cpp and include the following call from probe/hooks.h + GammaRay::Hooks::installHooks(); +- link your QT IOS app with the following libraries: + libgammaray_kitemmodels-qt5_7-arm.a + libgammaray_core-qt5_7-arm.a + libgammaray_common-qt5_7-arm.a + libgammaray_common_internal.a + gammaray_probe.a +- deploy and run your app + == Cross-compiling GammaRay == You'll find more information on this in the wiki: https://github.com/KDAB/GammaRay/wiki/Cross-compiling-GammaRay From a5dff80298843a79c59f6d090b4d15c548d4b1fe Mon Sep 17 00:00:00 2001 From: Paul Nader Date: Wed, 26 Oct 2016 21:50:25 +0100 Subject: [PATCH 4/5] restored compiler flags --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10212c5420..2c1085609a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,8 +233,8 @@ endif() # linker flags if(NOT ECM_ENABLE_SANITIZERS AND (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)) if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_SHARED_LINKER_FLAGS "-lc ${CMAKE_SHARED_LINKER_FLAGS}") - set(CMAKE_MODULE_LINKER_FLAGS "-lc ${CMAKE_MODULE_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}") endif() endif() From 3de9fb7f98ba57b652b69bea317f547f59149752 Mon Sep 17 00:00:00 2001 From: Paul Nader Date: Wed, 26 Oct 2016 21:56:12 +0100 Subject: [PATCH 5/5] removed GAMMARAY_BUILD_UI define --- Install.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Install.txt b/Install.txt index f7340eb801..1b56471e3d 100644 --- a/Install.txt +++ b/Install.txt @@ -75,7 +75,7 @@ Make sure you have gdb and qmake in your path % export QT_DIR= <--- set to QT's home % mkdir build % cd build -% cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-IOS.cmake -DCMAKE_PREFIX_PATH=${QT_DIR}/5.7/ios -DGAMMARAY_STATIC_PROBE=TRUE -DCMAKE_INSTALL_PREFIX=$SYSROOT/usr/ -DGAMMARAY_BUILD_UI=OFF -G Xcode .. +% cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-IOS.cmake -DCMAKE_PREFIX_PATH=${QT_DIR}/5.7/ios -DGAMMARAY_STATIC_PROBE=TRUE -DCMAKE_INSTALL_PREFIX=$SYSROOT/usr/ -G Xcode .. % /usr/bin/xcodebuild -project GammaRay.xcodeproj build -target gammaray_probe -configuration Release Using Gammaray on IOS: