# The Flutter tooling requires that developers have CMake 3.10 or later # installed. You should not increase this version, as doing so will cause # the plugin to fail to compile for some customers of the plugin. cmake_minimum_required(VERSION 3.14) # Project-level configuration. set(PROJECT_NAME "amplify_db_common") project(${PROJECT_NAME} LANGUAGES C CXX) # This value is used when generating builds using this plugin, so it must # not be changed. set(PLUGIN_NAME "amplify_db_common_plugin") ### # Below here, keep in sync with: https://github.com/simolus3/sqlite3.dart/blob/main/sqlite3_flutter_libs/linux/CMakeLists.txt ### include(FetchContent) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") # cmake 3.24.0 added the `DOWNLOAD_EXTRACT_TIMESTAMP` and prints an ugly warning when # the default is used, so override it to the recommended behavior. # We can't really ask users to use a cmake that recent, so there's this if here. FetchContent_Declare( sqlite3 URL https://sqlite.org/2023/sqlite-autoconf-3410200.tar.gz DOWNLOAD_EXTRACT_TIMESTAMP NEW ) else() FetchContent_Declare( sqlite3 URL https://sqlite.org/2023/sqlite-autoconf-3410200.tar.gz ) endif() FetchContent_MakeAvailable(sqlite3) add_library(${PLUGIN_NAME} SHARED "amplify_db_common_plugin.cc" "${sqlite3_SOURCE_DIR}/sqlite3.c" ) # Not applying the standard settings because we compile sqlite3 # which fails with -Wall -Werror. But we apply most of them: target_compile_features(${PLUGIN_NAME} PUBLIC cxx_std_14) target_compile_options(${PLUGIN_NAME} PRIVATE "$<$>:-O3>") set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL) target_include_directories(${PLUGIN_NAME} INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(${PLUGIN_NAME} PRIVATE flutter) # Note: Keep in sync with https://github.com/simolus3/sqlite-native-libraries/blob/master/sqlite3-native-library/cpp/CMakeLists.txt target_compile_definitions(${PLUGIN_NAME} PRIVATE SQLITE_ENABLE_FTS5 SQLITE_ENABLE_RTREE SQLITE_DQS=0 SQLITE_DEFAULT_MEMSTATUS=0 SQLITE_TEMP_STORE=2 SQLITE_MAX_EXPR_DEPTH=0 SQLITE_OMIT_AUTHORIZATION SQLITE_OMIT_DECLTYPE SQLITE_OMIT_DEPRECATED SQLITE_OMIT_GET_TABLE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_PROGRESS_CALLBACK SQLITE_OMIT_SHARED_CACHE SQLITE_OMIT_TCL_VARIABLE SQLITE_OMIT_TRACE SQLITE_USE_ALLOCA SQLITE_UNTESTABLE SQLITE_HAVE_ISNAN SQLITE_HAVE_LOCALTIME_R SQLITE_HAVE_LOCALTIME_S SQLITE_HAVE_MALLOC_USABLE_SIZE SQLITE_HAVE_STRCHRNUL )