Skip to content

Commit 3059e4c

Browse files
committed
Reworked the CMake script to only use download when necessary.
Added a cache of known Qt5 versions and their SQLite private headers/sources. Added a script for generating this cache easily.
1 parent 843f0ce commit 3059e4c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+24281
-41
lines changed

CMakeLists.txt

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,36 +42,45 @@ endif()
4242

4343
if (Qt5Sql_FOUND)
4444
message(STATUS "Found Qt5 version ${Qt5Sql_VERSION}.")
45-
if (Qt5Sql_VERSION VERSION_LESS 5.8.0)
46-
set(DOWNLOAD_PATH "src/sql/drivers/sqlite")
45+
46+
set(_PRIVATE_SOURCES_DIRECTORY "")
47+
if (EXISTS "${PROJECT_SOURCE_DIR}/qt-file-cache/${Qt5Sql_VERSION}")
48+
message(STATUS "Using cached/shipped versions of required header/source files.")
49+
set(_PRIVATE_SOURCES_DIRECTORY "${PROJECT_SOURCE_DIR}/qt-file-cache/${Qt5Sql_VERSION}")
50+
include_directories("${PROJECT_SOURCE_DIR}/qt-file-cache/${Qt5Sql_VERSION}")
4751
else()
48-
set(DOWNLOAD_PATH "src/plugins/sqldrivers/sqlite")
49-
endif()
50-
51-
set(URL_HEADER "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite_p.h")
52-
set(URL_CPP "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite.cpp")
53-
message(STATUS "URL = ${URL_HEADER}")
54-
55-
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qt-private")
56-
include_directories("${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
57-
58-
file(DOWNLOAD "${URL_HEADER}" "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qt-private/qsql_sqlite_p.h" STATUS STATUS_HEADER_LIST TLS_VERIFY on LOG LOG_HEADER)
59-
file(DOWNLOAD "${URL_CPP}" "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qt-private/qsql_sqlite.cpp" STATUS STATUS_CPP_LIST TLS_VERIFY on LOG LOG_CPP)
60-
61-
list(GET STATUS_HEADER_LIST 0 STATUS_HEADER)
62-
list(GET STATUS_CPP_LIST 0 STATUS_CPP)
63-
if ((NOT "${STATUS_HEADER}" STREQUAL "0") OR (NOT "${STATUS_CPP}" STREQUAL "0"))
64-
list(GET STATUS_HEADER_LIST 1 STATUS_HEADER_ERROR)
65-
list(GET STATUS_CPP_LIST 1 STATUS_CPP_ERROR)
66-
message(SEND_ERROR "Could not download required Qt5 private header/source files. Please report this error! Qt Version: ${Qt5Sql_VERSION}. Result Header: ${STATUS_HEADER}. Error: ${STATUS_HEADER_ERROR}. Result Source: ${STATUS_CPP}. Error: ${STATUS_CPP_ERROR}. Log Header: ${LOG_HEADER}. Log Source: ${LOG_CPP}.")
67-
else()
68-
message(STATUS "Downloaded required header/source files for your Qt5 version.")
52+
if (Qt5Sql_VERSION VERSION_LESS 5.8.0)
53+
set(DOWNLOAD_PATH "src/sql/drivers/sqlite")
54+
else()
55+
set(DOWNLOAD_PATH "src/plugins/sqldrivers/sqlite")
56+
endif()
57+
58+
set(URL_HEADER "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite_p.h")
59+
set(URL_CPP "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite.cpp")
60+
message(STATUS "URL = ${URL_HEADER}")
61+
62+
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
63+
set(_PRIVATE_SOURCES_DIRECTORY "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
64+
include_directories("${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
65+
66+
file(DOWNLOAD "${URL_HEADER}" "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qsql_sqlite_p.h" STATUS STATUS_HEADER_LIST TLS_VERIFY on LOG LOG_HEADER)
67+
file(DOWNLOAD "${URL_CPP}" "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qsql_sqlite.cpp" STATUS STATUS_CPP_LIST TLS_VERIFY on LOG LOG_CPP)
68+
69+
list(GET STATUS_HEADER_LIST 0 STATUS_HEADER)
70+
list(GET STATUS_CPP_LIST 0 STATUS_CPP)
71+
if ((NOT "${STATUS_HEADER}" STREQUAL "0") OR (NOT "${STATUS_CPP}" STREQUAL "0"))
72+
list(GET STATUS_HEADER_LIST 1 STATUS_HEADER_ERROR)
73+
list(GET STATUS_CPP_LIST 1 STATUS_CPP_ERROR)
74+
message(SEND_ERROR "Could not download required Qt5 private header/source files. Please report this error! Qt Version: ${Qt5Sql_VERSION}. Result Header: ${STATUS_HEADER}. Error: ${STATUS_HEADER_ERROR}. Result Source: ${STATUS_CPP}. Error: ${STATUS_CPP_ERROR}. Log Header: ${LOG_HEADER}. Log Source: ${LOG_CPP}.")
75+
else()
76+
message(STATUS "Downloaded required header/source files for your Qt5 version.")
77+
endif()
6978
endif()
7079
endif()
7180

7281
add_library(qsqlcipher ${LIBTYPE}
7382
smain.cpp
74-
"${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qt-private/qsql_sqlite.cpp"
83+
"${_PRIVATE_SOURCES_DIRECTORY}/qsql_sqlite.cpp"
7584
)
7685

7786
if (WIN32)

0 commit comments

Comments
 (0)