From f81ef9b2d6c010c8d9e0952f1ed6d308567bb63f Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 28 Jun 2023 15:22:23 +0200 Subject: [PATCH] Sqlite: Don't link to the internal Sqlite library If you link to the internal Sqlite library you link actually twice. That leads to strange bugs because you have an uninitialized object file. The static linking workaround is now moved to cmake. Change-Id: I51d966a623a18486ce5870d898999f3ce139f092 Reviewed-by: Tim Jenssen --- src/libs/3rdparty/sqlite/config.h | 4 --- src/libs/sqlite/CMakeLists.txt | 30 +++++++++++++------ tests/unit/tests/printers/CMakeLists.txt | 2 +- .../tests/printers/gtest-creator-printing.cpp | 2 +- .../tests/testdesignercore/CMakeLists.txt | 2 +- tests/unit/tests/unittests/CMakeLists.txt | 2 +- .../sqlite/sqlitedatabasebackend-test.cpp | 2 +- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/libs/3rdparty/sqlite/config.h b/src/libs/3rdparty/sqlite/config.h index 3672f4c5ddf..f0e73be3009 100644 --- a/src/libs/3rdparty/sqlite/config.h +++ b/src/libs/3rdparty/sqlite/config.h @@ -27,10 +27,6 @@ #include -#if defined(SQLITE_STATIC_LIBRARY) || defined(SQLITEC_STATIC_LIBRARY) -#include "sqlite_static_config.h" -#endif - #if __has_include() #include #endif diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt index 4c7cd774c60..aa33171bab1 100644 --- a/src/libs/sqlite/CMakeLists.txt +++ b/src/libs/sqlite/CMakeLists.txt @@ -1,8 +1,7 @@ -add_qtc_library(SqliteC OBJECT +add_qtc_library(SqliteInternal OBJECT PROPERTIES AUTOMOC OFF AUTOUIC OFF QT_COMPILE_OPTIONS_DISABLE_WARNINGS ON DEFINES SQLITE_CORE SQLITE_CUSTOM_INCLUDE=config.h $<$:SQLITE_DEBUG> - PROPERTIES COMPILE_OPTIONS $,/FIconfig.h,-includeconfig.h> - PUBLIC_INCLUDES + INCLUDES ../3rdparty/sqlite SOURCES ../3rdparty/sqlite @@ -11,12 +10,26 @@ add_qtc_library(SqliteC OBJECT ../3rdparty/sqlite/sqlite3ext.h ../3rdparty/sqlite/carray.c ../3rdparty/sqlite/config.h + ../3rdparty/sqlite/sqlite_static_config.h ../3rdparty/sqlite/sqlite.h ) +extend_qtc_library(SqliteInternal + CONDITION QTC_STATIC_BUILD + PROPERTIES COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h> +) + +if (APPLE) + extend_qtc_library(SqliteInternal DEFINES _BSD_SOURCE) +elseif (UNIX) + extend_qtc_library(SqliteInternal DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE) +endif() + add_qtc_library(Sqlite PROPERTIES AUTOMOC OFF AUTOUIC OFF - DEPENDS Qt::Core Threads::Threads ${CMAKE_DL_LIBS} SqliteC + DEPENDS Qt::Core Threads::Threads ${CMAKE_DL_LIBS} SqliteInternal + INCLUDES + ../3rdparty/sqlite PUBLIC_INCLUDES "${CMAKE_CURRENT_LIST_DIR}" DEFINES SQLITE_CUSTOM_INCLUDE=config.h $<$:SQLITE_REVERSE> @@ -53,8 +66,7 @@ add_qtc_library(Sqlite sqliteids.h ) -if (APPLE) - extend_qtc_library(SqliteC DEFINES _BSD_SOURCE) -elseif (UNIX) - extend_qtc_library(SqliteC DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE) -endif() +extend_qtc_library(Sqlite + CONDITION QTC_STATIC_BUILD + PROPERTIES COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h> +) diff --git a/tests/unit/tests/printers/CMakeLists.txt b/tests/unit/tests/printers/CMakeLists.txt index 62b1ad966e1..83f6812ef03 100644 --- a/tests/unit/tests/printers/CMakeLists.txt +++ b/tests/unit/tests/printers/CMakeLists.txt @@ -3,7 +3,7 @@ add_qtc_library(TestPrinters OBJECT SKIP_AUTOMOC ON PUBLIC_INCLUDES ${CMAKE_CURRENT_LIST_DIR} DEPENDS - Qt::Core Qt::Widgets SqliteC Sqlite Googletest TestDesignerCore + Qt::Core Qt::Widgets Sqlite Googletest TestDesignerCore SOURCES gtest-creator-printing.cpp gtest-creator-printing.h gtest-qt-printing.cpp gtest-qt-printing.h diff --git a/tests/unit/tests/printers/gtest-creator-printing.cpp b/tests/unit/tests/printers/gtest-creator-printing.cpp index 4f0a4171051..61922895c04 100644 --- a/tests/unit/tests/printers/gtest-creator-printing.cpp +++ b/tests/unit/tests/printers/gtest-creator-printing.cpp @@ -9,6 +9,7 @@ #include #include +#include <3rdparty/sqlite/sqlite.h> #include #include #include @@ -17,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/tests/unit/tests/testdesignercore/CMakeLists.txt b/tests/unit/tests/testdesignercore/CMakeLists.txt index 83f03c39e23..a3f1697f68a 100644 --- a/tests/unit/tests/testdesignercore/CMakeLists.txt +++ b/tests/unit/tests/testdesignercore/CMakeLists.txt @@ -5,7 +5,7 @@ add_qtc_library(TestDesignerCore OBJECT DEPENDS Qt::Core Qt::Network Qt::Widgets Qt::Xml Qt::Concurrent Qt::QmlPrivate Qt::Gui - Qt::Core5Compat Utils QmlJS Sqlite SqliteC + Qt::Core5Compat Utils QmlJS Sqlite PUBLIC_DEPENDS QmlPuppetCommunication SOURCES_PREFIX ${QmlDesignerDir}/designercore diff --git a/tests/unit/tests/unittests/CMakeLists.txt b/tests/unit/tests/unittests/CMakeLists.txt index a50a0a2a761..7f745301670 100644 --- a/tests/unit/tests/unittests/CMakeLists.txt +++ b/tests/unit/tests/unittests/CMakeLists.txt @@ -7,7 +7,7 @@ add_qtc_test(unittest GTEST DEPENDS Qt::Core Qt::Network Qt::Widgets Qt::Xml Qt::Concurrent Qt::QmlPrivate Qt::Gui - Qt::Core5Compat Utils QmlJS Sqlite SqliteC + Qt::Core5Compat Utils QmlJS Sqlite Googletest TestDesignerCore TestUtils TestMatchers TestPrinters TestMocks DEFINES GTEST_INTERNAL_HAS_STRING_VIEW diff --git a/tests/unit/tests/unittests/sqlite/sqlitedatabasebackend-test.cpp b/tests/unit/tests/unittests/sqlite/sqlitedatabasebackend-test.cpp index 7178bac34ae..b009b7a5252 100644 --- a/tests/unit/tests/unittests/sqlite/sqlitedatabasebackend-test.cpp +++ b/tests/unit/tests/unittests/sqlite/sqlitedatabasebackend-test.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include <3rdparty/sqlite/sqlite.h> #include