react-native-nitro-sqlite
Version:
Fast SQLite library for React Native built using Nitro Modules
91 lines (78 loc) • 2.45 kB
Plain Text
cmake_minimum_required(VERSION 3.13)
project(RNNitroSQLite)
set (CMAKE_VERBOSE_MAKEFILE ON)
set (CMAKE_CXX_STANDARD 20)
add_definitions(
${SQLITE_FLAGS}
)
file(GLOB_RECURSE cpp_files RELATIVE ${CMAKE_SOURCE_DIR}
"../cpp/**.c"
"../cpp/**.cpp"
"cpp-adapter.cpp"
)
# Create library "RNNitroSQLite" and add all C++ files to it
add_library(${CMAKE_PROJECT_NAME} SHARED
${cpp_files}
)
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/RNNitroSQLite+autolinking.cmake)
# Specifies a path to native header files.
include_directories(
../cpp
../cpp/hybridObjects
../cpp/sqlite
src/main/cpp
)
# Opt-in: compile the companion's sqlite-vec into this library (shared single sqlite3).
if(NITRO_SQLITE_VEC)
message(STATUS "[react-native-nitro-sqlite] vector search ENABLED (sqlite-vec from ${NITRO_SQLITE_VEC_CPP_DIR})")
set(NITRO_SQLITE_VEC_SOURCES
"${NITRO_SQLITE_VEC_CPP_DIR}/sqlite-vec/sqlite-vec.c"
"${NITRO_SQLITE_VEC_CPP_DIR}/registerVectorExtensions.cpp"
)
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${NITRO_SQLITE_VEC_SOURCES})
# SQLITE_CORE: link against our bundled sqlite3; SQLITE_VEC_STATIC: drop Windows dllexport.
set_source_files_properties(${NITRO_SQLITE_VEC_SOURCES}
PROPERTIES COMPILE_DEFINITIONS "SQLITE_CORE;SQLITE_VEC_STATIC")
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE "${NITRO_SQLITE_VEC_CPP_DIR}")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE NITRO_SQLITE_VEC)
endif()
set_target_properties(
${CMAKE_PROJECT_NAME} PROPERTIES
CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
)
find_package(ReactAndroid REQUIRED CONFIG)
find_package(fbjni REQUIRED CONFIG)
find_library(LOG_LIB log)
target_link_libraries(
${CMAKE_PROJECT_NAME}
${LOG_LIB}
android
fbjni::fbjni
ReactAndroid::jsi
)
# https://github.com/react-native-community/discussions-and-proposals/discussions/816
# This if-then-else can be removed once this library does not support version below .76
if (REACTNATIVE_MERGED_SO OR ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
target_link_libraries(
${CMAKE_PROJECT_NAME}
ReactAndroid::reactnative
)
else()
target_link_libraries(
${CMAKE_PROJECT_NAME}
ReactAndroid::turbomodulejsijni
ReactAndroid::react_nativemodule_core
)
endif()
target_compile_options(
${CMAKE_PROJECT_NAME}
PRIVATE
-fexceptions
-frtti
-fstack-protector-all
-O2
-Wall
-DONANDROID
)