File 0009-Allow-using-system-sqlite3.patch of Package kdrive

From 2c1ee3178d477b95fb62306983753df0c864f5d9 Mon Sep 17 00:00:00 2001
From: Christophe Marin <christophe@krop.fr>
Date: Thu, 24 Apr 2025 12:21:42 +0200
Subject: [PATCH 09/10] Allow using system sqlite3

---
 CMakeLists.txt                        |   3 +
 cmake/modules/FindSQLite3.cmake       | 120 +++++++++++++++++---------
 src/libcommonserver/CMakeLists.txt    |   1 -
 src/libparms/CMakeLists.txt           |   3 +-
 src/libparms/db/parmsdb.cpp           |   2 +-
 src/libsyncengine/db/syncdb.cpp       |   2 +-
 src/libsyncengine/olddb/oldsyncdb.cpp |   2 +-
 test/libparms/CMakeLists.txt          |   1 -
 test/libsyncengine/CMakeLists.txt     |   1 -
 9 files changed, 85 insertions(+), 50 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d58f00c..b48babb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,9 @@ add_subdirectory(src/3rdparty/keychain)
 find_package(log4cplus 2.1.2)
 cmake_dependent_option(USE_SYSTEM_LOG4CPLUS "Use system log4cplus library" TRUE log4cplus_FOUND FALSE)
 
+# SQlite3
+find_package(SQLite3 3.8.0 REQUIRED)
+
 #####
 
 if(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
diff --git a/cmake/modules/FindSQLite3.cmake b/cmake/modules/FindSQLite3.cmake
index 4fd1ceb..393309c 100644
--- a/cmake/modules/FindSQLite3.cmake
+++ b/cmake/modules/FindSQLite3.cmake
@@ -1,70 +1,104 @@
-# - Try to find SQLite3
-# Once done this will define
+
 #
 #  SQLITE3_FOUND - system has SQLite3
 #  SQLITE3_INCLUDE_DIRS - the SQLite3 include directory
 #  SQLITE3_LIBRARIES - Link these to use SQLite3
 #  SQLITE3_DEFINITIONS - Compiler switches required for using SQLite3
+
+# SPDX-FileCopyrightText:  2009-2013 Andreas Schneider <asn@cryptomilk.org>
+# SPDX-FileCopyrightText: 2025 Christophe Marin <christophe@krop.fr>
 #
-#  Copyright (c) 2009-2013 Andreas Schneider <asn@cryptomilk.org>
-#
-#  Redistribution and use is allowed according to the terms of the New
-#  BSD license.
-#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
+# SPDX-License-Identifier:  BSD-2-Clause
 
+#[=======================================================================[.rst:
+FindSQLite3
+-------------
 
-if (UNIX)
-  find_package(PkgConfig)
-  if (PKG_CONFIG_FOUND)
-    pkg_check_modules(_SQLITE3 sqlite3)
-  endif (PKG_CONFIG_FOUND)
-endif (UNIX)
+Try to find SQLite3 library.
 
-find_path(SQLITE3_INCLUDE_DIR
-    NAMES
-        sqlite3.h
-    PATHS
-        ${_SQLITE3_INCLUDEDIR}
-        ${SQLITE3_INCLUDE_DIRS}
-)
+The following variables will be defined:
+
+``SQLite3_FOUND``
+    True if SQLite3 is available
+``SQLite3_VERSION``
+    SQLite3 version
+``SQLite3_LIBRARIES``
+    SQLite3 libraries. This variable can be used with target_link_libraries()
+``SQLite3_INCLUDE_DIRS``
+    Include directories of SQLite3. This variable can be used with target_include_directories()
+``SQLite3_DEFINITIONS``
+    Compiler switches required for using SQLite3
+
+If ``SQLite3_FOUND`` is TRUE, the following imported target will be defined:
+
+``SQLite3::SQLite3``
+    The SQLite3 library
+
+Using the imported targets is recommended.
+
+# Additionally, backward-compatible variables are created:
+``SQLITE3_INCLUDE_DIRS``
+    Include directories of SQLite3.
+``SQLITE3_LIBRARIES``
+    SQLite3 libraries.
 
-find_library(SQLITE3_LIBRARY
+#]=======================================================================]
+
+
+find_package(PkgConfig)
+pkg_check_modules(PC_SQLite3 QUIET IMPORTED_TARGETS sqlite3)
+
+find_library(SQLite3_LIBRARIES
     NAMES
         sqlite3 sqlite3-0
-    PATHS
-        ${_SQLITE3_LIBDIR}
-        ${SQLITE3_LIBRARIES}
+    HINTS
+        ${PC_SQLite3_LIBRARY_DIRS}
 )
 
-set(SQLITE3_INCLUDE_DIRS
-    ${SQLITE3_INCLUDE_DIR}
+find_path(SQLite3_INCLUDE_DIRS
+    NAMES
+        sqlite3.h
+    HINTS
+        ${PC_SQLite3_INCLUDE_DIRS}
 )
 
-if (SQLITE3_LIBRARY)
-    set(SQLITE3_LIBRARIES
-        ${SQLITE3_LIBRARIES}
-        ${SQLITE3_LIBRARY}
-    )
-endif (SQLITE3_LIBRARY)
-
-if (SQLite3_FIND_VERSION AND _SQLITE3_VERSION)
-    set(SQLite3_VERSION _SQLITE3_VERSION)
-endif (SQLite3_FIND_VERSION AND _SQLITE3_VERSION)
+if(SQLite3_FIND_VERSION AND PC_SQLite3_VERSION)
+    set(SQLite3_VERSION PC_SQLite3_VERSION)
+endif()
 
 if (APPLE OR WIN32)
-    set(USE_OUR_OWN_SQLITE3 TRUE)
-    set(SQLITE3_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/3rdparty/sqlite3)
-    set(SQLITE3_LIBRARIES "")
+    set(USE_OUR_OWNPC_SQLite3 TRUE)
+    set(SQLite3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/3rdparty/sqlite3)
+    set(SQLite3_LIBRARIES "")
     set(SQLITE3_SOURCE ${SQLITE3_INCLUDE_DIR}/sqlite3.c)
-    MESSAGE(STATUS "Using own sqlite3 from " ${SQLITE3_INCLUDE_DIR})
+    message(STATUS "Using own sqlite3 from " ${SQLite3_INCLUDE_DIRS})
 else()
     include(FindPackageHandleStandardArgs)
-    find_package_handle_standard_args(SQLite3 DEFAULT_MSG SQLITE3_LIBRARIES SQLITE3_INCLUDE_DIRS)
+    find_package_handle_standard_args(SQLite3
+        FOUND_VAR
+            SQLite3_FOUND
+        REQUIRED_VARS
+            SQLite3_LIBRARIES
+            SQLite3_INCLUDE_DIRS
+        VERSION_VAR
+            SQLite3_VERSION
+    )
 endif()
 
+if(SQLite3_FOUND AND NOT TARGET SQLite3::SQLite3)
+    add_library(SQLite3::SQLite3 UNKNOWN IMPORTED)
+    set_target_properties(SQLite3::SQLite3 PROPERTIES
+        IMPORTED_LOCATION "${SQLite3_LIBRARIES}"
+        INTERFACE_COMPILE_OPTIONS "${PC_SQLite3_CFLAGS}"
+        INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}"
+    )
+endif()
 
+# Backward compatible variables
+set(SQLITE3_INCLUDE_DIRS "${SQLite3_INCLUDE_DIRS}")
+set(SQLITE3_LIBRARIES "${SQLite3_LIBRARIES}")
+set(SQLITE3_FOUND SQLite3_FOUND)
 
 # show the SQLITE3_INCLUDE_DIRS and SQLITE3_LIBRARIES variables only in the advanced view
-mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
+mark_as_advanced(SQLite3_LIBRARIES SQLite3_INCLUDE_DIRS SQLite3_VERSION SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
 
diff --git a/src/libcommonserver/CMakeLists.txt b/src/libcommonserver/CMakeLists.txt
index 26ee0e2..f9c7d26 100644
--- a/src/libcommonserver/CMakeLists.txt
+++ b/src/libcommonserver/CMakeLists.txt
@@ -6,7 +6,6 @@ else()
 endif()
 
 find_package(Qt6 REQUIRED Core)
-find_package(SQLite3 3.8.0 REQUIRED)
 find_package(Poco 1.13.3 REQUIRED Foundation Net JSON Util)
 find_package(OpenSSL 3.1.0 REQUIRED SSL Crypto)
 find_package(xxHash 0.8.2 REQUIRED)
diff --git a/src/libparms/CMakeLists.txt b/src/libparms/CMakeLists.txt
index bffc15f..c5fa9fd 100644
--- a/src/libparms/CMakeLists.txt
+++ b/src/libparms/CMakeLists.txt
@@ -67,4 +67,5 @@ endif()
 # Link
 target_link_libraries(${libparms_NAME}
     ${libcommonserver_NAME}
-    Poco::Foundation)
+    Poco::Foundation
+    SQLite3::SQLite3)
diff --git a/src/libparms/db/parmsdb.cpp b/src/libparms/db/parmsdb.cpp
index 567fdb4..7a8e9d9 100644
--- a/src/libparms/db/parmsdb.cpp
+++ b/src/libparms/db/parmsdb.cpp
@@ -25,7 +25,7 @@
 #include "libcommonserver/io/iohelper.h"
 #include "libcommonserver/utility/utility.h"
 
-#include <3rdparty/sqlite3/sqlite3.h>
+#include <sqlite3.h>
 
 #include <fstream>
 #include <string>
diff --git a/src/libsyncengine/db/syncdb.cpp b/src/libsyncengine/db/syncdb.cpp
index 926944f..45f2422 100644
--- a/src/libsyncengine/db/syncdb.cpp
+++ b/src/libsyncengine/db/syncdb.cpp
@@ -28,7 +28,7 @@
 
 #include <queue>
 
-#include <3rdparty/sqlite3/sqlite3.h>
+#include <sqlite3.h>
 
 #define PRAGMA_WRITABLE_SCHEMA_ID "db1"
 #define PRAGMA_WRITABLE_SCHEMA "PRAGMA writable_schema=ON;"
diff --git a/src/libsyncengine/olddb/oldsyncdb.cpp b/src/libsyncengine/olddb/oldsyncdb.cpp
index e10260a..801deb8 100644
--- a/src/libsyncengine/olddb/oldsyncdb.cpp
+++ b/src/libsyncengine/olddb/oldsyncdb.cpp
@@ -20,7 +20,7 @@
 #include "libcommon/utility/logiffail.h"
 #include "libcommonserver/log/log.h"
 
-#include <3rdparty/sqlite3/sqlite3.h>
+#include <sqlite3.h>
 
 #define SELECT_ALL_SELECTIVESYNC_REQUEST_ID "select_selectivesync"
 #define SELECT_ALL_SELECTIVESYNC_REQUEST "SELECT path, type FROM selectivesync;"
diff --git a/test/libparms/CMakeLists.txt b/test/libparms/CMakeLists.txt
index dfdb144..917c5bd 100644
--- a/test/libparms/CMakeLists.txt
+++ b/test/libparms/CMakeLists.txt
@@ -5,7 +5,6 @@ else()
     project(testparms LANGUAGES C CXX)
 endif()
 
-find_package(SQLite3 3.8.0 REQUIRED)
 find_package(Poco REQUIRED Foundation)
 
 set(testparms_NAME ${APPLICATION_NAME}_test_parms)
diff --git a/test/libsyncengine/CMakeLists.txt b/test/libsyncengine/CMakeLists.txt
index 7a6c2de..6b2f09a 100644
--- a/test/libsyncengine/CMakeLists.txt
+++ b/test/libsyncengine/CMakeLists.txt
@@ -5,7 +5,6 @@ else()
     project(testsyncengine LANGUAGES C CXX)
 endif()
 
-find_package(SQLite3 3.8.0 REQUIRED)
 find_package(Poco REQUIRED Foundation)
 
 set(testsyncengine_NAME ${APPLICATION_NAME}_test_syncengine)
-- 
2.50.0

openSUSE Build Service is sponsored by