vcpkg/ports/sqlite3/portfile.cmake
arasan01 86e3ce7d29
[sqlite3] Ability to enable the database snapshot (#36925)
This PR adds a configuration option that allows you to enable snapshots
of SQLite3.

https://sqlite.org/c3ref/snapshot.html

The main use case is handling in WAL mode. Previously, SQLite3 in vcpkg
did not support database snapshot handling. This PR will extend the
functionality of SQLite3 by supporting it.

- [x] Changes comply with the [maintainer
guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md).
- [x] SHA512s are updated for each updated download.
- [x] The "supports" clause reflects platforms that may be fixed by this
new version.
- [x] Any fixed [CI
baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt)
entries are removed from that file.
- [x] Any patches that are no longer applied are deleted from the port's
directory.
- [x] The version database is fixed by rerunning `./vcpkg x-add-version
--all` and committing the result.
- [x] Only one version is added to each modified port's versions file.
2024-03-05 01:34:51 -08:00

100 lines
3.5 KiB
CMake

string(REGEX REPLACE "^([0-9]+)[.]([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\1,0\\2,0\\3,0\\4," SQLITE_VERSION "${VERSION}.0")
string(REGEX REPLACE "^([0-9]+),0*([0-9][0-9]),0*([0-9][0-9]),0*([0-9][0-9])," "\\1\\2\\3\\4" SQLITE_VERSION "${SQLITE_VERSION}")
vcpkg_download_distfile(ARCHIVE
URLS "https://sqlite.org/2024/sqlite-autoconf-${SQLITE_VERSION}.tar.gz"
FILENAME "sqlite-autoconf-${SQLITE_VERSION}.zip"
SHA512 c6bd4eaa67cada28528d1ac31aec1662c0a11048247a1bb148c1842fb0252934e2096843b56fea94bfb96c4eaaa598ec70ac31f2a5e910388f24f152b9fc4211
)
vcpkg_extract_source_archive(
SOURCE_PATH
ARCHIVE "${ARCHIVE}"
PATCHES
fix-arm-uwp.patch
add-config-include.patch
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
if(VCPKG_TARGET_IS_WINDOWS)
set(SQLITE_API "__declspec(dllimport)")
else()
set(SQLITE_API "__attribute__((visibility(\"default\")))")
endif()
else()
set(SQLITE_API "")
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
fts5 SQLITE_ENABLE_FTS5
math SQLITE_ENABLE_MATH_FUNCTIONS
zlib WITH_ZLIB
INVERTED_FEATURES
tool SQLITE3_SKIP_TOOLS
)
vcpkg_check_features(OUT_FEATURE_OPTIONS none # only using the script-mode side-effects
FEATURES
dbstat SQLITE_ENABLE_DBSTAT_VTAB
fts3 SQLITE_ENABLE_FTS3
fts4 SQLITE_ENABLE_FTS4
memsys3 SQLITE_ENABLE_MEMSYS3
memsys5 SQLITE_ENABLE_MEMSYS5
limit SQLITE_ENABLE_UPDATE_DELETE_LIMIT
rtree SQLITE_ENABLE_RTREE
session SQLITE_ENABLE_SESSION
session SQLITE_ENABLE_PREUPDATE_HOOK
snapshot SQLITE_ENABLE_SNAPSHOT
omit-load-extension SQLITE_OMIT_LOAD_EXTENSION
geopoly SQLITE_ENABLE_GEOPOLY
soundex SQLITE_SOUNDEX
INVERTED_FEATURES
json1 SQLITE_OMIT_JSON
)
if(VCPKG_TARGET_IS_WINDOWS)
set(SQLITE_OS_WIN "1")
if(VCPKG_TARGET_IS_UWP)
set(SQLITE_OS_WINRT "1")
endif()
else()
set(SQLITE_OS_UNIX "1")
endif()
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/sqlite3.pc.in" DESTINATION "${SOURCE_PATH}")
configure_file("${CMAKE_CURRENT_LIST_DIR}/sqlite3-vcpkg-config.h.in" "${SOURCE_PATH}/sqlite3-vcpkg-config.h" @ONLY)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${FEATURE_OPTIONS}
-DPKGCONFIG_VERSION=${VERSION}
OPTIONS_DEBUG
-DSQLITE3_SKIP_TOOLS=ON
MAYBE_UNUSED_VARIABLES
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_MATH_FUNCTIONS
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT} CONFIG_PATH share/unofficial-${PORT})
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
if("tool" IN_LIST FEATURES)
vcpkg_copy_tools(TOOL_NAMES sqlite3 DESTINATION "${CURRENT_PACKAGES_DIR}/tools" AUTO_CLEAN)
endif()
configure_file(
"${CMAKE_CURRENT_LIST_DIR}/sqlite3-config.in.cmake"
"${CURRENT_PACKAGES_DIR}/share/unofficial-${PORT}/unofficial-sqlite3-config.cmake"
@ONLY
)
vcpkg_fixup_pkgconfig()
vcpkg_copy_pdbs()
file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "SQLite is in the Public Domain.\nhttp://www.sqlite.org/copyright.html\n")
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")