Skip to content

Commit 3182f5b

Browse files
committed
Use CPM instead of conan
1 parent 7fca9ee commit 3182f5b

12 files changed

Lines changed: 231 additions & 37 deletions

CMakeLists.txt

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ cmake_minimum_required(VERSION 3.16)
22
cmake_policy(SET CMP0071 NEW)
33
project(SailfishConnect VERSION 0.8.0 LANGUAGES C CXX)
44

5-
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
6-
conan_basic_setup(TARGETS)
7-
85
set(CMAKE_CXX_STANDARD 17)
96
set(SAILFISHOS ON)
107
set(BUILD_SHARED_LIBS OFF)
@@ -36,12 +33,77 @@ set(CMAKE_AUTOMOC_DEPEND_FILTERS
3633
)
3734

3835
# compile definitions
39-
add_definitions(-DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050600 -DQT_USE_QSTRINGBUILDER)
36+
add_definitions(-DQT_USE_QSTRINGBUILDER)
4037
if (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
4138
add_definitions(-DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG)
4239
endif()
4340
add_definitions(-DSAILFISHOS)
4441

42+
# add dependencies
43+
include(cmake/CPM.cmake)
44+
45+
function(AddKF5Package)
46+
set(options )
47+
set(oneValueArgs NAME VERSION)
48+
set(multiValueArgs PATCHES)
49+
cmake_parse_arguments(PARSE_ARGV 0 arg
50+
"${options}" "${oneValueArgs}" "${multiValueArgs}"
51+
)
52+
53+
string(TOLOWER "${arg_NAME}" LOWERCASE_NAME)
54+
string(REGEX MATCH "^[0-9]+\\.[0-9]+" SHORT_VERSION "${arg_VERSION}")
55+
CPMAddPackage(
56+
NAME "KF5${arg_NAME}"
57+
URL "https://download.kde.org/stable/frameworks/${SHORT_VERSION}/k${LOWERCASE_NAME}-${arg_VERSION}.zip"
58+
VERSION "${arg_VERSION}"
59+
PATCHES "${arg_PATCHES}"
60+
EXCLUDE_FROM_ALL ON
61+
SYSTEM ON
62+
OPTIONS "BUILD_QCH OFF" "BUILD_TESTING OFF"
63+
)
64+
file(WRITE
65+
${CMAKE_FIND_PACKAGE_REDIRECTS_DIR}/kf5${LOWERCASE_NAME}-config-version.cmake
66+
"include(\"${${CPM_LAST_PACKAGE_NAME}_BINARY_DIR}/${CPM_LAST_PACKAGE_NAME}ConfigVersion.cmake\")\n")
67+
endfunction()
68+
69+
AddKF5Package(
70+
NAME CoreAddons VERSION 5.36.0
71+
PATCHES "cmake/kcoreaddons.patch"
72+
)
73+
74+
AddKF5Package(
75+
NAME I18n VERSION 5.36.0
76+
PATCHES "cmake/ki18n.patch"
77+
)
78+
79+
AddKF5Package(
80+
NAME Config VERSION 5.36.0
81+
PATCHES "cmake/kconfig.patch"
82+
)
83+
84+
set(LIBSSH_VERSION 0.11.0)
85+
string(REGEX MATCH "^[0-9]+\\.[0-9]+" LIBSSH_SHORT_VERSION "${LIBSSH_VERSION}")
86+
CPMAddPackage(
87+
NAME libssh
88+
URL "https://www.libssh.org/files/${LIBSSH_SHORT_VERSION}/libssh-${LIBSSH_VERSION}.tar.xz"
89+
VERSION ${LIBSSH_VERSION}
90+
EXCLUDE_FROM_ALL ON
91+
SYSTEM ON
92+
OPTIONS
93+
"WITH_ZLIB ON"
94+
"WITH_SFTP ON"
95+
"WITH_SERVER ON"
96+
"BUILD_STATIC_LIB ON"
97+
"UNIT_TESTING OFF"
98+
"WITH_EXAMPLES OFF"
99+
"WITH_PCAP OFF"
100+
"WITH_SYMBOL_VERSIONING OFF"
101+
"WITH_ABI_BREAK ON"
102+
)
103+
if(libssh_ADDED)
104+
target_compile_definitions(ssh-static INTERFACE LIBSSH_STATIC=1 WITH_SERVER=1)
105+
endif()
106+
45107
# Sailfish Connect
46108
find_package(ECM 5.99 REQUIRED NO_MODULE)
47109
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})

app/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ add_definitions(-DTRANSLATION_DOMAIN=\"sailfishconnect-app\")
33
# Qt
44
find_package(Qt5 COMPONENTS Core Network Qml Sql Gui Quick DBus REQUIRED)
55
6+
add_definitions(-DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050600)
7+
68
set(CMAKE_AUTOMOC ON)
79
set(CMAKE_INCLUDE_CURRENT_DIR ON)
810

cmake/CPM.cmake

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: MIT
2+
#
3+
# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
4+
5+
set(CPM_DOWNLOAD_VERSION 0.40.5)
6+
set(CPM_HASH_SUM "c46b876ae3b9f994b4f05a4c15553e0485636862064f1fcc9d8b4f832086bc5d")
7+
8+
if(CPM_SOURCE_CACHE)
9+
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
10+
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
11+
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
12+
else()
13+
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
14+
endif()
15+
16+
# Expand relative path. This is important if the provided path contains a tilde (~)
17+
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
18+
19+
file(DOWNLOAD
20+
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
21+
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
22+
)
23+
24+
include(${CPM_DOWNLOAD_LOCATION})

cmake/kconfig.patch

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index d95a9e8b..eca18868 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1,4 +1,6 @@
6+
cmake_minimum_required(VERSION 3.0)
7+
+cmake_policy(SET CMP0071 OLD)
8+
+cmake_policy(SET CMP0115 OLD)
9+
10+
set(KF5_VERSION "5.36.0") # handled by release scripts
11+
project(KConfig VERSION ${KF5_VERSION})
12+
diff --git a/autotests/kconfig_compiler/CMakeLists.txt b/autotests/kconfig_compiler/CMakeLists.txt
13+
index 590c7700..a8c19332 100644
14+
--- a/autotests/kconfig_compiler/CMakeLists.txt
15+
+++ b/autotests/kconfig_compiler/CMakeLists.txt
16+
@@ -10,7 +10,7 @@ endif()
17+
# make sure the generated headers can be found
18+
include_directories(${KCFG_OUTPUT_DIR})
19+
20+
-include(${CMAKE_SOURCE_DIR}/KF5ConfigMacros.cmake)
21+
+include(${PROJECT_SOURCE_DIR}/KF5ConfigMacros.cmake)
22+
macro(GEN_KCFG_TEST_SOURCE _testName _srcs)
23+
KCONFIG_ADD_KCFG_FILES(${_srcs} ${_testName}.kcfgc ${ARGN})
24+
endmacro()

cmake/kcoreaddons.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
2+
index 28f40e28..5bd72b8c 100644
3+
--- a/autotests/CMakeLists.txt
4+
+++ b/autotests/CMakeLists.txt
5+
@@ -55,7 +55,7 @@ if(NOT CMAKE_CROSSCOMPILING)
6+
)
7+
endif()
8+
9+
-set(ktexttohtmltest_SRCS ktexttohtmltest.cpp ${CMAKE_SOURCE_DIR}/src/lib/text/ktexttohtml.cpp)
10+
+set(ktexttohtmltest_SRCS ktexttohtmltest.cpp ${PROJECT_SOURCE_DIR}/src/lib/text/ktexttohtml.cpp)
11+
ecm_add_test(${ktexttohtmltest_SRCS} TEST_NAME ktexttohtmltest LINK_LIBRARIES Qt5::Test)
12+
# include the binary dir in order to get kcoreaddons_export.h
13+
target_include_directories(ktexttohtmltest PRIVATE ${KCoreAddons_BINARY_DIR}/src/lib)

cmake/ki18n.patch

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 54fcaa0..6edefdc 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1,4 +1,4 @@
6+
-cmake_minimum_required(VERSION 3.0)
7+
+cmake_minimum_required(VERSION 3.16)
8+
9+
set(KF5_VERSION "5.36.0") # handled by release scripts
10+
project(KI18n VERSION ${KF5_VERSION})
11+
@@ -46,9 +46,6 @@ set_package_properties(LibIntl PROPERTIES TYPE REQUIRED
12+
PURPOSE "Needed for building KI18n unless glibc is the system libc implementation"
13+
)
14+
15+
-# usually is called using find_package(KF5I18n),
16+
-# KF5I18NMacros.cmake needs to know the scripts directory
17+
-set(KF5I18n_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake)
18+
include(cmake/KF5I18NMacros.cmake)
19+
20+
remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
21+
diff --git a/cmake/KF5I18NMacros.cmake b/cmake/KF5I18NMacros.cmake
22+
index 6168b2a..df627fa 100644
23+
--- a/cmake/KF5I18NMacros.cmake
24+
+++ b/cmake/KF5I18NMacros.cmake
25+
@@ -26,10 +26,9 @@
26+
# SUCH DAMAGE.
27+
28+
find_package(Gettext REQUIRED)
29+
-find_package(PythonInterp REQUIRED)
30+
+find_package(Python3 REQUIRED)
31+
32+
-set(_ki18n_pmap_compile_script ${CMAKE_CURRENT_LIST_DIR}/ts-pmap-compile.py)
33+
-set(_ki18n_uic_script ${CMAKE_CURRENT_LIST_DIR}/kf5i18nuic.cmake)
34+
+set(KI18N_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "")
35+
36+
#create the implementation files from the ui files and add them to the list of sources
37+
#usage: KI18N_WRAP_UI(foo_SRCS ${ui_files})
38+
@@ -50,7 +49,7 @@ macro (KI18N_WRAP_UI _sources )
39+
-DKDE_UIC_FILE:FILEPATH=${_tmp_FILE}
40+
-DKDE_UIC_H_FILE:FILEPATH=${_header}
41+
-DKDE_UIC_BASENAME:STRING=${_basename}
42+
- -P ${_ki18n_uic_script}
43+
+ -P ${KI18N_CMAKE_DIR}/kf5i18nuic.cmake
44+
MAIN_DEPENDENCY ${_tmp_FILE}
45+
)
46+
list(APPEND ${_sources} ${_header})
47+
@@ -109,16 +108,16 @@ function(KI18N_INSTALL podir)
48+
-DGETTEXT_MSGFMT_EXECUTABLE=${GETTEXT_MSGFMT_EXECUTABLE}
49+
-DCOPY_TO=${CMAKE_CURRENT_BINARY_DIR}/${dirname}
50+
-DPO_DIR=${absolute_podir}
51+
- -P ${KF5I18n_DIR}/build-pofiles.cmake
52+
+ -P ${KI18N_CMAKE_DIR}/build-pofiles.cmake
53+
)
54+
add_custom_target(tsfiles-${pathmd5} ALL
55+
COMMENT "Generating ts..."
56+
COMMAND ${CMAKE_COMMAND}
57+
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
58+
- -D_ki18n_pmap_compile_script=${_ki18n_pmap_compile_script}
59+
+ -D_ki18n_pmap_compile_script=${KI18N_CMAKE_DIR}/ts-pmap-compile.py
60+
-DCOPY_TO=${CMAKE_CURRENT_BINARY_DIR}/${dirname}
61+
-DPO_DIR=${absolute_podir}
62+
- -P ${KF5I18n_DIR}/build-tsfiles.cmake
63+
+ -P ${KI18N_CMAKE_DIR}/build-tsfiles.cmake
64+
)
65+
66+
if (NOT TARGET pofiles)
67+
@@ -159,7 +158,7 @@ function(KI18N_INSTALL_TS_FILES lang scripts_dir)
68+
COMMAND ${PYTHON_EXECUTABLE}
69+
ARGS
70+
-B
71+
- ${_ki18n_pmap_compile_script}
72+
+ ${KI18N_CMAKE_DIR}/ts-pmap-compile.py
73+
${CMAKE_CURRENT_SOURCE_DIR}/${pmap_file}
74+
${pmapc_file}
75+
DEPENDS ${pmap_file})
76+
diff --git a/cmake/build-tsfiles.cmake b/cmake/build-tsfiles.cmake
77+
index b65b5e8..7d03aca 100644
78+
--- a/cmake/build-tsfiles.cmake
79+
+++ b/cmake/build-tsfiles.cmake
80+
@@ -46,14 +46,14 @@ foreach(pmap_file ${pmap_files})
81+
82+
message(STATUS "building... ${pmap_file} to ${pmapc_file}" )
83+
execute_process(
84+
- COMMAND ${PYTHON_EXECUTABLE}
85+
+ COMMAND ${Python3_EXECUTABLE}
86+
-B
87+
${_ki18n_pmap_compile_script}
88+
${PO_DIR}/${pmap_file}
89+
${pmapc_file}
90+
RESULT_VARIABLE code
91+
)
92+
- if(code)
93+
+ if(NOT code STREQUAL "Success")
94+
message(FATAL_ERROR "failed at creating ${pmap_file}...")
95+
endif()
96+
endforeach()

cmake/patch_policies.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cmake_policy(SET CMP0071 OLD)

kdeconnect-kde

Submodule kdeconnect-kde updated from f78f09e to f10bbcd

plugins/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
include(../kdeconnect-kde/KDEConnectMacros.cmake)
22

33
add_definitions(-DTRANSLATION_DOMAIN=\"sailfishconnect-plugins\")
4+
add_definitions(-DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050600)
45
set(CMAKE_AUTOMOC ON)
56
set(CMAKE_INCLUDE_CURRENT_DIR ON)
67

plugins/sftpserver/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ kdeconnect_add_plugin(
33
JSON sailfishconnect_sftpserver.json
44
SOURCES sftpserverplugin.cpp sftpserver.cpp sftpservercommands.cpp)
55

6-
add_definitions(-DWITH_SERVER -DLIBSSH_STATIC)
7-
86
target_link_libraries(sailfishconnect_sftpserver
97
PRIVATE
108
kdeconnectcore
119
KF5::I18n
12-
CONAN_PKG::libssh
10+
ssh::static
1311
)
1412
target_include_directories(sailfishconnect_sftpserver
1513
SYSTEM PRIVATE ${ContextkitStatefs_INCLUDE_DIRS}

0 commit comments

Comments
 (0)