summaryrefslogtreecommitdiff
path: root/subprojects/boost-sqlite/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/boost-sqlite/CMakeLists.txt')
-rw-r--r--subprojects/boost-sqlite/CMakeLists.txt112
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()