Skip to content

Commit 33e5d11

Browse files
authored
Remove bundled SQLite source, add submodule fallback, prefix CMake options with ASQL_ #61
1 parent f9c6c69 commit 33e5d11

9 files changed

Lines changed: 59 additions & 275204 deletions

File tree

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "3rdparty/sqlite"]
2+
path = 3rdparty/sqlite
3+
url = https://github.com/sqlite/sqlite

3rdparty/sqlite

Submodule sqlite added at df0e915

CMakeLists.txt

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,31 @@ endif()
3434
#
3535
# Options
3636
#
37-
option(ENABLE_MAINTAINER_CFLAGS "Enable maintainer CFlags" OFF)
38-
option(DRIVER_SQLITE "Enable Sqlite Driver" ON)
39-
if (DRIVER_SQLITE)
40-
enable_language(C)
37+
option(ASQL_ENABLE_MAINTAINER_CFLAGS "Enable maintainer CFlags" OFF)
38+
option(ASQL_DRIVER_SQLITE "Enable Sqlite Driver" ON)
39+
if (ASQL_DRIVER_SQLITE)
40+
find_package(SQLite3)
41+
if (NOT SQLite3_FOUND)
42+
set(ASQL_SQLITE3_SUBMODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/sqlite")
43+
if (EXISTS "${ASQL_SQLITE3_SUBMODULE_DIR}/sqlite3.c")
44+
message(STATUS "SQLite3 not found via find_package, using bundled submodule")
45+
enable_language(C)
46+
add_library(SQLite3_bundled STATIC "${ASQL_SQLITE3_SUBMODULE_DIR}/sqlite3.c")
47+
target_include_directories(SQLite3_bundled PUBLIC "${ASQL_SQLITE3_SUBMODULE_DIR}")
48+
add_library(SQLite3::SQLite3 ALIAS SQLite3_bundled)
49+
else()
50+
message(FATAL_ERROR
51+
"SQLite3 not found and 3rdparty/sqlite/sqlite3.c is not available.\n"
52+
"Either install the SQLite3 development package or provide the amalgamation:\n"
53+
" 1. Initialize the submodule: git submodule update --init 3rdparty/sqlite\n"
54+
" 2. Generate the amalgamation (requires tclsh): cd 3rdparty/sqlite && make sqlite3.c\n"
55+
" See https://www.sqlite.org/howtocompile.html for details.")
56+
endif()
57+
endif()
4158
endif ()
4259

43-
option(DRIVER_POSTGRES "Enable PostgreSql Driver" ON)
44-
if (DRIVER_POSTGRES)
60+
option(ASQL_DRIVER_POSTGRES "Enable PostgreSql Driver" ON)
61+
if (ASQL_DRIVER_POSTGRES)
4562
find_package(PostgreSQL REQUIRED)
4663
endif ()
4764

@@ -55,12 +72,13 @@ endif()
5572
set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Output directory for libraries")
5673

5774
option(BUILD_SHARED_LIBS "Build in shared lib mode" ON)
58-
option(BUILD_DEMOS "Build the demos" ON)
75+
option(ASQL_BUILD_DEMOS "Build the demos" ON)
76+
option(ASQL_MIGRATION_TOOL "Build the migration tool executable" ON)
5977

6078
#
6179
# Custom C flags
6280
#
63-
if (ENABLE_MAINTAINER_CFLAGS)
81+
if (ASQL_ENABLE_MAINTAINER_CFLAGS)
6482
set (MAINTAINER_CFLAGS "-Werror -Wall -Wcast-align -Wno-uninitialized -Wempty-body -Wformat-security -Wformat -Winit-self")
6583
add_definitions(${MAINTAINER_CFLAGS}
6684
-DQT_DEPRECATED_WARNINGS
@@ -107,7 +125,7 @@ install(EXPORT ASqlTargets
107125
)
108126

109127
add_subdirectory(src)
110-
if (BUILD_DEMOS)
128+
if (ASQL_BUILD_DEMOS)
111129
add_subdirectory(demos)
112130
endif ()
113131

demos/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# SPDX-FileCopyrightText: (C) 2020-2025 Daniel Nicoletti <dantti12@gmail.com>
22
# SPDX-License-Identifier: MIT
33

4-
if (DRIVER_POSTGRES)
4+
if (ASQL_DRIVER_POSTGRES)
55
add_subdirectory(async1)
66
endif()
77

8-
if (DRIVER_SQLITE)
8+
if (ASQL_DRIVER_SQLITE)
99
add_subdirectory(sqlite)
1010
endif()

src/ADriverSqlite.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "adriver.h"
55
#include "apreparedquery.h"
66
#include "aresult.h"
7-
#include "sqlite/sqlite3.h"
7+
#include "sqlite3.h"
88

99
#include <chrono>
1010
#include <optional>

src/CMakeLists.txt

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ install(TARGETS ASqlQt${QT_VERSION_MAJOR}Migrations
148148
# End Migrations Library
149149

150150
## Postgres Driver
151-
if (DRIVER_POSTGRES)
151+
if (ASQL_DRIVER_POSTGRES)
152152
set(asql_pg_SRC
153153
adriverpg.cpp
154154
adriverpg.h
@@ -213,10 +213,8 @@ if (DRIVER_POSTGRES)
213213
endif() # End Postgres Driver
214214

215215
## Sqlite Driver
216-
if (DRIVER_SQLITE)
216+
if (ASQL_DRIVER_SQLITE)
217217
set(asql_sqlite_SRC
218-
sqlite/sqlite3.c
219-
sqlite/sqlite3.h
220218
ADriverSqlite.cpp
221219
ADriverSqlite.hpp
222220
ASqlite.cpp
@@ -261,6 +259,8 @@ if (DRIVER_SQLITE)
261259
PUBLIC
262260
Qt::Core
263261
ASql::Core
262+
PRIVATE
263+
SQLite3::SQLite3
264264
)
265265

266266
set_property(TARGET ASqlQt${QT_VERSION_MAJOR}Sqlite PROPERTY PUBLIC_HEADER ${asql_sqlite_HEADERS})
@@ -273,21 +273,23 @@ if (DRIVER_SQLITE)
273273

274274
endif () # End Sqlite Driver
275275

276-
set(TARGET_ASQL_MIGRATION_CMD asql-migration${PROJECT_VERSION_MAJOR}-qt${QT_VERSION_MAJOR})
277-
add_executable(${TARGET_ASQL_MIGRATION_CMD} asql_migration.cpp)
278-
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD}
279-
PUBLIC
280-
Qt::Core
281-
ASql::Core
282-
ASql::Migrations
283-
)
284-
if (DRIVER_POSTGRES)
285-
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD} PRIVATE ASql::Pg)
286-
target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD} PRIVATE DRIVER_POSTGRES)
287-
endif()
288-
if (DRIVER_SQLITE)
289-
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD} PRIVATE ASql::Sqlite)
290-
target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD} PRIVATE DRIVER_SQLITE)
291-
endif()
292-
project_target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD})
293-
install(TARGETS ${TARGET_ASQL_MIGRATION_CMD} DESTINATION ${CMAKE_INSTALL_BINDIR})
276+
if (ASQL_MIGRATION_TOOL)
277+
set(TARGET_ASQL_MIGRATION_CMD asql-migration${PROJECT_VERSION_MAJOR}-qt${QT_VERSION_MAJOR})
278+
add_executable(${TARGET_ASQL_MIGRATION_CMD} asql_migration.cpp)
279+
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD}
280+
PUBLIC
281+
Qt::Core
282+
ASql::Core
283+
ASql::Migrations
284+
)
285+
if (ASQL_DRIVER_POSTGRES)
286+
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD} PRIVATE ASql::Pg)
287+
target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD} PRIVATE DRIVER_POSTGRES)
288+
endif()
289+
if (ASQL_DRIVER_SQLITE)
290+
target_link_libraries(${TARGET_ASQL_MIGRATION_CMD} PRIVATE ASql::Sqlite)
291+
target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD} PRIVATE DRIVER_SQLITE)
292+
endif()
293+
project_target_compile_definitions(${TARGET_ASQL_MIGRATION_CMD})
294+
install(TARGETS ${TARGET_ASQL_MIGRATION_CMD} DESTINATION ${CMAKE_INSTALL_BINDIR})
295+
endif () # End Migration Tool

0 commit comments

Comments
 (0)