From 45b21ae0af6e016f8eb55db92c3f5ee801c6da7e Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sat, 3 Aug 2024 07:19:32 -0500 Subject: [PATCH] updated build system --- cmake/libraries/sqlite.cmake | 47 ++++++++++++++++++++++++++++-------- cmake/versions.cmake | 1 + docker/x86_64/mingw64 | 18 ++++++++++++++ scripts/options.sh | 2 +- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/cmake/libraries/sqlite.cmake b/cmake/libraries/sqlite.cmake index 140c3b7c..945fc9c8 100644 --- a/cmake/libraries/sqlite.cmake +++ b/cmake/libraries/sqlite.cmake @@ -2,18 +2,45 @@ if(PROJECT_ENABLE_SQLITE) if(PROJECT_BUILD) add_definitions(-DPROJECT_ENABLE_SQLITE) - set(SQLITE_SYSTEM_ROOT - ${PROJECT_BUILD_DIR}/external/src/sqlite_project - ) + if(PROJECT_BUILD_SHARED_LIBS) + find_package(SQLite3 REQUIRED ${SQLITE_VERSION2}) - include_directories(SYSTEM BEFORE - ${SQLITE_SYSTEM_ROOT} - ) + include_directories(${SQLite3_INCLUDE_DIRS}) + link_libraries(SQLite::SQLite3) + else() + include_directories(SYSTEM BEFORE + ${PROJECT_BUILD_DIR}/external/src/sqlite_project + ) - set(PROJECT_ADDITIONAL_SOURCES - ${PROJECT_ADDITIONAL_SOURCES} - ${SQLITE_SYSTEM_ROOT}/sqlite3.c - ) + set(PROJECT_ADDITIONAL_SOURCES + ${PROJECT_ADDITIONAL_SOURCES} + ${SQLITE_SYSTEM_ROOT}/sqlite3.c + ) + endif() + elseif(PROJECT_BUILD_SHARED_LIBS) + if(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) + if(PROJECT_IS_MINGW) + set(SQLITE_TYPE mingw64) + else() + set(SQLITE_TYPE linux) + endif() + + ExternalProject_Add(sqlite_project + PREFIX external + URL ${PROJECT_3RD_PARTY_DIR}/sqlite-${SQLITE_VERSION2}.tar.gz + URL_HASH SHA256=ae85b5545f6171694f4d7f915e8e87a936fcb1a56409e5fb3da89d52e3c224cc + BUILD_IN_SOURCE 1 + LIST_SEPARATOR | + CONFIGURE_COMMAND ${PROJECT_3RD_PARTY_DIR}/sqlite_configure.sh + ${SQLITE_TYPE} + ${PROJECT_MARCH} + ${PROJECT_EXTERNAL_BUILD_ROOT} + BUILD_COMMAND make -j1 + INSTALL_COMMAND make install + ) + + list(APPEND PROJECT_DEPENDENCIES sqlite_project) + endif() else() ExternalProject_Add(sqlite_project PREFIX external diff --git a/cmake/versions.cmake b/cmake/versions.cmake index 8e98987a..4ddd5cfb 100644 --- a/cmake/versions.cmake +++ b/cmake/versions.cmake @@ -40,6 +40,7 @@ set(SECP256K1_VERSION 0.1.0.20) set(SFML_VERSION 2.6.1) set(SPDLOG_VERSION 1.14.1) set(SQLITE_VERSION 3460000) +set(SQLITE_VERSION2 3.46.0) set(STDUUID_VERSION 1.2.3) set(VORBIS_VERSION 1.3.7) set(WXWIDGETS_VERSION 3.2.5) diff --git a/docker/x86_64/mingw64 b/docker/x86_64/mingw64 index d7b4d298..b59310d1 100644 --- a/docker/x86_64/mingw64 +++ b/docker/x86_64/mingw64 @@ -941,6 +941,24 @@ RUN if [ -f "/3rd_party/sdl-${MY_SDL_VERSION}.tar.gz" ]; then \ && rm -r SDL-release-${MY_SDL_VERSION} \ ; fi +ARG SQLITE_VERSION2 +ENV MY_SQLITE_VERSION2=${SQLITE_VERSION2} +RUN if [ -f "/3rd_party/sqlite-${MY_SQLITE_VERSION2}.tar.gz" ]; then \ + tar xvzf /3rd_party/sqlite-${MY_SQLITE_VERSION2}.tar.gz \ + && cd sqlite-version-${MY_SQLITE_VERSION2} \ + && CFLAGS="-O3 -m64 -mtune=generic" ./configure \ + --disable-amalgamation \ + --disable-tcl \ + --enable-shared \ + --enable-static \ + --host=${MY_MINGW_PREFIX} \ + --prefix=${MY_MINGW_DIR} \ + && make -j${MY_NUM_JOBS} \ + && make install \ + && cd ${MY_WORKDIR} \ + && rm -r cd sqlite-version-${MY_SQLITE_VERSION2} \ + ; fi + RUN (mv ${MY_MINGW_DIR}/lib/*.dll ${MY_MINGW_DIR}/bin || echo "no dll's found") \ && chmod 0777 -R ${MY_MINGW_DIR} \ && rm -rf /3rd_party diff --git a/scripts/options.sh b/scripts/options.sh index 3a593954..cb82506b 100755 --- a/scripts/options.sh +++ b/scripts/options.sh @@ -28,7 +28,7 @@ PROJECT_CLEANUP[LIBSODIUM]="libsodium*" PROJECT_CLEANUP[OPENSSL]="openssl-*" PROJECT_CLEANUP[PUGIXML]="pugixml-*" PROJECT_CLEANUP[SPDLOG]="spdlog-*" -PROJECT_CLEANUP[SQLITE]="sqlite-*" +PROJECT_CLEANUP[SQLITE]="sqlite*" PROJECT_CLEANUP[STDUUID]="stduuid-*" PROJECT_CLEANUP[TESTING]="googletest-*" PROJECT_CLEANUP[WINFSP]="winfsp-*"