diff options
author | John Turner <jturner.usa@gmail.com> | 2025-09-14 00:16:10 -0400 |
---|---|---|
committer | John Turner <jturner.usa@gmail.com> | 2025-09-14 00:16:10 -0400 |
commit | 13e0821fd783a1d5083d825af53cf20e8dcbfd76 (patch) | |
tree | 1ea363b0f13b3e87d177100e6ae6b9f30a2de1b8 /subprojects/boost-sqlite/CMakeLists.txt | |
parent | aa55cb93036a89c64c08e08f4e1de4fa1fd5a775 (diff) | |
parent | efcea3a80da7c4479d5fe168435ecc9fd06bdc72 (diff) | |
download | sqlite-kv-bench-13e0821fd783a1d5083d825af53cf20e8dcbfd76.tar.gz |
Merge commit 'efcea3a80da7c4479d5fe168435ecc9fd06bdc72' as 'subprojects/boost-sqlite'
Diffstat (limited to 'subprojects/boost-sqlite/CMakeLists.txt')
-rw-r--r-- | subprojects/boost-sqlite/CMakeLists.txt | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/subprojects/boost-sqlite/CMakeLists.txt b/subprojects/boost-sqlite/CMakeLists.txt new file mode 100644 index 0000000..34a7463 --- /dev/null +++ b/subprojects/boost-sqlite/CMakeLists.txt @@ -0,0 +1,112 @@ +cmake_minimum_required(VERSION 3.12...3.20) + +set(BOOST_SQLITE_VERSION 1) +if(BOOST_SUPERPROJECT_VERSION) + set(BOOST_SQLITE_VERSION ${BOOST_SUPERPROJECT_VERSION}) +endif() + +project(boost_sqlite + VERSION "${BOOST_SQLITE_VERSION}" + DESCRIPTION "A sqlite C++ library" + LANGUAGES CXX) + +set(BOOST_SQLITE_IS_ROOT OFF) +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(BOOST_SQLITE_IS_ROOT ON) +endif() + +set(BOOST_SQLITE_SOURCES + src/detail/exception.cpp + src/backup.cpp + src/blob.cpp + src/connection.cpp + src/error.cpp + src/field.cpp + src/meta_data.cpp + src/resultset.cpp + src/row.cpp + src/value.cpp +) + +find_package(SQLite3) +if(NOT SQLite3_FOUND) + message(STATUS "Boost.sqlite has been disabled, because the required package Sqlite3 hasn't been found") + return() +endif() + +if (BOOST_SQLITE_IS_ROOT) + if(NOT BOOST_SUPERPROJECT_VERSION) + option(BOOST_SQLITE_INSTALL "Install boost::sqlite files" ON) + option(BOOST_SQLITE_BUILD_TESTS "Build boost::sqlite tests" ON) + option(BOOST_SQLITE_BUILD_EXAMPLES "Build boost::sqlite examples" ON) + else() + set(BOOST_SQLITE_BUILD_TESTS ${BUILD_TESTING}) + endif() + + find_package(Threads REQUIRED) + find_package(Boost REQUIRED json OPTIONAL_COMPONENTS url unit_test_framework) + +endif() + +add_library(boost_sqlite ${BOOST_SQLITE_SOURCES}) +target_include_directories(boost_sqlite PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_link_libraries(boost_sqlite PUBLIC Boost::headers SQLite::SQLite3) +add_library(Boost::sqlite ALIAS boost_sqlite) + +add_library(boost_sqlite_ext ${BOOST_SQLITE_SOURCES} src/ext.cpp) +target_include_directories(boost_sqlite_ext PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_link_libraries(boost_sqlite_ext PUBLIC Boost::headers SQLite::SQLite3) +target_compile_definitions(boost_sqlite_ext PUBLIC BOOST_SQLITE_COMPILE_EXTENSION=1) +set_property(TARGET boost_sqlite_ext PROPERTY POSITION_INDEPENDENT_CODE ON) +add_library(Boost::sqlite_ext ALIAS boost_sqlite_ext) + +if (NOT BOOST_SQLITE_IS_ROOT) + if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") + set(BOOST_SQLITE_BUILD_TESTS ON) + endif() + target_link_libraries(boost_sqlite PUBLIC Boost::callable_traits Boost::config Boost::core Boost::describe Boost::pfr Boost::system) + target_link_libraries(boost_sqlite_ext PUBLIC Boost::callable_traits Boost::config Boost::core Boost::describe Boost::pfr Boost::system) +else() + if(NOT BOOST_SUPERPROJECT_VERSION) + option(BOOST_SQLITE_INSTALL "Install boost::sqlite files" ON) + option(BOOST_SQLITE_BUILD_TESTS "Build boost::sqlite tests" ON) + option(BOOST_SQLITE_BUILD_EXAMPLES "Build boost::sqlite examples" ON) + else() + set(BOOST_SQLITE_BUILD_TESTS ${BUILD_TESTING}) + endif() + + file(GLOB_RECURSE ADOC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.adoc) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html + COMMAND asciidoctor ${CMAKE_CURRENT_SOURCE_DIR}/doc/index.adoc -b html5 -a generate-diagram -o ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html + DEPENDS ${ADOC_FILES}) + + add_custom_target(boost_sqlite_doc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc/index.html) + +endif() + + +if(BUILD_SHARED_LIBS) + target_compile_definitions(boost_sqlite PUBLIC BOOST_SQLITE_DYN_LINK=1) + target_compile_definitions(boost_sqlite_ext PUBLIC BOOST_SQLITE_DYN_LINK=1) +else() + target_compile_definitions(boost_sqlite PUBLIC BOOST_SQLITE_STATIC_LINK=1) + target_compile_definitions(boost_sqlite_ext PUBLIC BOOST_SQLITE_STATIC_LINK=1) +endif() + +if(BOOST_SQLITE_INSTALL AND NOT BOOST_SUPERPROJECT_VERSION) + install(TARGETS boost_sqlite + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) +endif() + +if(BUILD_TESTING) + enable_testing() + add_subdirectory(test) +endif() + + +if(BOOST_SQLITE_BUILD_EXAMPLES) + add_subdirectory(example) +endif() |