mirror of
https://github.com/tursodatabase/libsql.git
synced 2024-11-23 17:56:18 +00:00
c8902c3bf6
The SQLCipher cipher does not work with frame injection: https://github.com/tursodatabase/libsql/issues/1122 Therefore, disable the cipher for now and switch default to "aes256cbc".
449 lines
15 KiB
CMake
449 lines
15 KiB
CMake
cmake_minimum_required(VERSION 3.18.0.0)
|
|
project(sqlite3mc)
|
|
|
|
# Helper macro
|
|
macro(_Enable_MT _target)
|
|
target_compile_options(${_target} PRIVATE
|
|
$<$<CONFIG:Release>:/MT>$<$<CONFIG:Debug>:/MTd>
|
|
)
|
|
endmacro()
|
|
|
|
set(_SQLITE3MC_REQUIRE_ZLIB OFF)
|
|
|
|
OPTION(SQLITE3MC_STATIC_RUNTIME_LINK "Link the c++ runtime statically" OFF)
|
|
OPTION(SQLITE3MC_STATIC "Build SQLITE3MC as a static library" OFF)
|
|
OPTION(SQLITE3MC_BUILD_SHELL "Builds the SQLITE3MC Shell" ON)
|
|
OPTION(SQLITE3MC_WITH_ICU "Builds SQLITE3MC with the ICU library. Will use the FindICU function to locate the library. (https://cmake.org/cmake/help/latest/module/FindICU.html)" OFF)
|
|
|
|
OPTION(SQLITE_ENABLE_DEBUG "Enable SQLite debugging" OFF)
|
|
OPTION(SQLITE_SOUNDEX "Enable the soundex() SQL function" ON)
|
|
OPTION(SQLITE_ENABLE_COLUMN_METADATA "Enable convenient access to meta-data about tables and queries" ON)
|
|
OPTION(SQLITE_SECURE_DELETE "Enable secure delete to overwrite deleted content with zeros" ON)
|
|
OPTION(SQLITE_ENABLE_FTS3 "Enable version 3 of the full-text search engine" ON)
|
|
OPTION(SQLITE_ENABLE_FTS3_PARENTHESIS "Support operators AND and NOT and nested parenthesis" ON)
|
|
OPTION(SQLITE_ENABLE_FTS4 "Enable version 4 of the full-text search engine" ON)
|
|
OPTION(SQLITE_ENABLE_FTS5 "Enable version 5 of the full-text search engine" ON)
|
|
|
|
OPTION(SQLITE_ENABLE_CARRAY "Enable extension 'carray'" ON)
|
|
OPTION(SQLITE_ENABLE_CSV "Enable extension 'csv'" ON)
|
|
OPTION(SQLITE_ENABLE_EXTFUNC "Enable extension 'extfunc'" ON)
|
|
OPTION(SQLITE_ENABLE_GEOPOLY "Enable extension 'geopoly'" ON)
|
|
OPTION(SQLITE_ENABLE_JSON1 "Enable extension 'json1'" ON)
|
|
OPTION(SQLITE_ENABLE_RTREE "Enable extension 'rtree'" ON)
|
|
OPTION(SQLITE_ENABLE_UUID "Enable extension 'uuid'" ON)
|
|
OPTION(SQLITE_USE_URI "Enable the URI filename process logic" ON)
|
|
OPTION(SQLITE_USER_AUTHENTICATION "Enable extension 'user authentication'" ON)
|
|
OPTION(SQLITE_ENABLE_PREUPDATE_HOOK "Enable preupdate hooks" OFF)
|
|
OPTION(SQLITE_ENABLE_SESSION "Enable session extension" OFF)
|
|
OPTION(SQLITE_SHELL_IS_UTF8 "Shell command line arguments in UTF-8 encoding" ON)
|
|
|
|
# Options for library only
|
|
OPTION(SQLITE_ENABLE_FILEIO "Enable extension 'fileio'" ON)
|
|
OPTION(SQLITE_ENABLE_REGEXP "Enable extension 'regexp'" ON)
|
|
OPTION(SQLITE_ENABLE_SERIES "Enable extension 'series'" ON)
|
|
OPTION(SQLITE_ENABLE_SHA3 "Enable extension 'sha3'" ON)
|
|
|
|
# Options for shell only (compatibility with official SQLite shell)
|
|
OPTION(SQLITE_ENABLE_EXPLAIN_COMMENTS "Insert comment text into the output of EXPLAIN (shell only)" ON)
|
|
OPTION(SQLITE_ENABLE_DBPAGE_VTAB "Enable the SQLITE_DBPAGE virtual table (shell only)" ON)
|
|
OPTION(SQLITE_ENABLE_DBSTAT_VTAB "Enable the dbstat virtual table (shell only)" ON)
|
|
OPTION(SQLITE_ENABLE_STMTVTAB "Enable the SQLITE_STMT virtual table (shell only)" ON)
|
|
OPTION(SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION "Suppress 'unknown function' errors when running an EXPLAIN or EXPLAIN QUERY PLAN (shell only)" ON)
|
|
|
|
# Embedded Compression
|
|
OPTION(SQLITE3MC_USE_MINIZ "Use builtin ZLIB replacement" OFF)
|
|
|
|
# Compression/Options that require ZLIB
|
|
OPTION(SQLITE_ENABLE_COMPRESS "Enable extension 'compress'" OFF)
|
|
OPTION(SQLITE_ENABLE_SQLAR "Enable extension 'sqlar'" OFF)
|
|
OPTION(SQLITE_ENABLE_ZIPFILE "Enable extension 'zipfile'" OFF)
|
|
|
|
# Legacy Encryption Extensions
|
|
OPTION(SQLITE3MC_USE_SQLEET_LEGACY "Use sqleet legacy mode as default" OFF)
|
|
OPTION(SQLITE3MC_USE_SQLCIPHER_LEGACY "Use sqlcipher legacy mode as default" OFF)
|
|
|
|
# Additional memory security (filling freed memory allocations with zeros or random data)
|
|
OPTION(SQLITE3MC_SECURE_MEMORY "Enable pragma to secure freed memory" OFF)
|
|
OPTION(SQLITE3MC_USE_RANDOM_FILL_MEMORY "Fill freed memory with random data" OFF)
|
|
|
|
# Omit AES hardware support
|
|
OPTION(SQLITE3MC_OMIT_AES_HARDWARE_SUPPORT "Omit AES hardware support" OFF)
|
|
|
|
# Enable Wasm runtime
|
|
OPTION(LIBSQL_ENABLE_WASM_RUNTIME "Enable libSQL Wasm runtime" OFF)
|
|
|
|
# TCL
|
|
#OPTION(SQLITE_ENABLE_TCL "Enable TCL interface" OFF)
|
|
|
|
set(SQLITE_MAX_ATTACHED "10" CACHE STRING "Max number of attached files (must be in the range 0..125)")
|
|
|
|
set(SQLITE_DQS "0" CACHE STRING "Allow double-quoted string literals")
|
|
set_property(CACHE SQLITE_DQS PROPERTY STRINGS 0 1 2 3)
|
|
|
|
set(SQLITE_THREADSAFE 1 CACHE STRING "Set threading mode (0 = single-threaded, 1 = serialized, 2 = multi-threaded)")
|
|
set_property(CACHE SQLITE_THREADSAFE PROPERTY STRINGS 0 1 2)
|
|
|
|
set(CODEC_TYPE CHACHA20 CACHE STRING "Set default codec type")
|
|
set_property(CACHE CODEC_TYPE PROPERTY STRINGS AES128 AES256 CHACHA20 SQLCIPHER RC4 ASCON128)
|
|
|
|
if(SQLITE_ENABLE_COMPRESS OR SQLITE_ENABLE_SQLAR OR SQLITE_ENABLE_ZIPFILE)
|
|
if(NOT SQLITE3MC_USE_MINIZ)
|
|
set(_SQLITE3MC_REQUIRE_ZLIB ON)
|
|
endif()
|
|
endif()
|
|
|
|
# Setup the options
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
$<$<BOOL:${SQLITE_SHELL_IS_UTF8}>:SQLITE_SHELL_IS_UTF8=1>
|
|
CODEC_TYPE=CODEC_TYPE_${CODEC_TYPE}
|
|
SQLITE_DQS=${SQLITE_DQS}
|
|
SQLITE_MAX_ATTACHED=${SQLITE_MAX_ATTACHED}
|
|
$<$<BOOL:${SQLITE_USER_AUTHENTICATION}>:SQLITE_USER_AUTHENTICATION=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_DEBUG}>:SQLITE_ENABLE_DEBUG=1>
|
|
SQLITE_THREADSAFE=${SQLITE_THREADSAFE}
|
|
$<$<BOOL:${SQLITE_SOUNDEX}>:SQLITE_SOUNDEX=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_COLUMN_METADATA}>:SQLITE_ENABLE_COLUMN_METADATA=1>
|
|
$<$<BOOL:${SQLITE_SECURE_DELETE}>:SQLITE_SECURE_DELETE=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_FTS3}>:SQLITE_ENABLE_FTS3=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_FTS3_PARENTHESIS}>:SQLITE_ENABLE_FTS3_PARENTHESIS=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_FTS4}>:SQLITE_ENABLE_FTS4=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_FTS5}>:SQLITE_ENABLE_FTS5=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_JSON1}>:SQLITE_ENABLE_JSON1=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_RTREE}>:SQLITE_ENABLE_RTREE=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_GEOPOLY}>:SQLITE_ENABLE_GEOPOLY=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_EXTFUNC}>:SQLITE_ENABLE_EXTFUNC=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_CARRAY}>:SQLITE_ENABLE_CARRAY=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_UUID}>:SQLITE_ENABLE_UUID=1>
|
|
SQLITE_TEMP_STORE=2
|
|
$<$<BOOL:${SQLITE_USE_URI}>:SQLITE_USE_URI=1>
|
|
$<$<BOOL:${SQLITE_USER_AUTHENTICATION}>:SQLITE_USER_AUTHENTICATION=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_PREUPDATE_HOOK}>:SQLITE_ENABLE_PREUPDATE_HOOK=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_SESSION}>:SQLITE_ENABLE_SESSION=1>
|
|
$<$<BOOL:${SQLITE3MC_USE_MINIZ}>:SQLITE3MC_USE_MINIZ=1>
|
|
$<$<BOOL:${SQLITE3MC_OMIT_AES_HARDWARE_SUPPORT}>:SQLITE3MC_OMIT_AES_HARDWARE_SUPPORT=1>
|
|
$<$<BOOL:${LIBSQL_ENABLE_WASM_RUNTIME}>:LIBSQL_ENABLE_WASM_RUNTIME=1>
|
|
LIBSQL_EXTRA_PRAGMAS=1
|
|
LIBSQL_CUSTOM_PAGER_CODEC=1
|
|
|
|
SQLITE_ENABLE_DBSTAT_VTAB=1
|
|
SQLITE_ENABLE_DBPAGE_VTAB=1
|
|
SQLITE_ENABLE_STMTVTAB=1
|
|
SQLITE_DEFAULT_FOREIGN_KEYS=1
|
|
|
|
HAVE_CIPHER_AES_128_CBC=0
|
|
HAVE_CIPHER_AES_256_CBC=1
|
|
HAVE_CIPHER_CHACHA20=0
|
|
HAVE_CIPHER_SQLCIPHER=0
|
|
HAVE_CIPHER_RC4=0
|
|
HAVE_CIPHER_ASCON128=0
|
|
# $<$<BOOL:${SQLITE_USE_TCL}>:SQLITE_USE_TCL=1>
|
|
)
|
|
|
|
set(SQLITE3MC_LIBONLY_DEFINITIONS
|
|
$<$<BOOL:${SQLITE_ENABLE_FILEIO}>:SQLITE_ENABLE_FILEIO=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_REGEXP}>:SQLITE_ENABLE_REGEXP=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_SERIES}>:SQLITE_ENABLE_SERIES=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_SHA3}>:SQLITE_ENABLE_SHA3=1>
|
|
)
|
|
|
|
set(SQLITE3MC_ZLIB_DEFINITIONS
|
|
)
|
|
|
|
set(SQLITE3MC_SHELL_DEFINITIONS
|
|
$<$<BOOL:${SQLITE_SHELL_IS_UTF8}>:SQLITE_SHELL_IS_UTF8=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_EXPLAIN_COMMENTS}>:SQLITE_ENABLE_EXPLAIN_COMMENTS=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_DBPAGE_VTAB}>:SQLITE_ENABLE_DBPAGE_VTAB=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_DBSTAT_VTAB}>:SQLITE_ENABLE_DBSTAT_VTAB=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_STMTVTAB}>:SQLITE_ENABLE_STMTVTAB=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION}>:SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION=1>
|
|
)
|
|
|
|
if(SQLITE3MC_USE_SQLEET_LEGACY)
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
SQLITE3MC_USE_SQLEET_LEGACY=1
|
|
)
|
|
endif()
|
|
if(SQLITE3MC_USE_SQLCIPHER_LEGACY)
|
|
if(NOT DEFINED SQLCIPHER_VERSION_DEFAULT)
|
|
set(SQLCIPHER_VERSION_DEFAULT "4")
|
|
endif()
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
SQLITE3MC_USE_SQLCIPHER_LEGACY=1
|
|
SQLCIPHER_VERSION_DEFAULT=${SQLCIPHER_VERSION_DEFAULT}
|
|
)
|
|
endif()
|
|
|
|
if(SQLITE3MC_SECURE_MEMORY)
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
SQLITE3MC_SECURE_MEMORY=1
|
|
)
|
|
endif()
|
|
if(SQLITE3MC_USE_RANDOM_FILL_MEMORY)
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
SQLITE3MC_USE_RANDOM_FILL_MEMORY=1
|
|
)
|
|
endif()
|
|
|
|
if(SQLITE3MC_USE_MINIZ OR _SQLITE3MC_REQUIRE_ZLIB)
|
|
if(_SQLITE3MC_REQUIRE_ZLIB)
|
|
# Use ZLIB_ROOT to specify the location to look
|
|
find_package(ZLIB)
|
|
if(NOT ZLIB_FOUND)
|
|
message( FATAL_ERROR "One of the flags specified requires zlib. Zlib is not found. Try specifying the ZLIB_ROOT environment variable.")
|
|
endif()
|
|
endif()
|
|
if(SQLITE3MC_USE_MINIZ OR ZLIB_FOUND)
|
|
set(SQLITE3MC_BASE_DEFINITIONS
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
$<$<BOOL:${SQLITE_ENABLE_COMPRESS}>:SQLITE_ENABLE_COMPRESS=1>
|
|
)
|
|
set(SQLITE3MC_ZLIB_DEFINITIONS
|
|
${SQLITE3MC_ZLIB_DEFINITIONS}
|
|
$<$<BOOL:${SQLITE_ENABLE_SQLAR}>:SQLITE_ENABLE_SQLAR=1>
|
|
$<$<BOOL:${SQLITE_ENABLE_ZIPFILE}>:SQLITE_ENABLE_ZIPFILE=1>
|
|
)
|
|
set(SQLITE3MC_SHELL_DEFINITIONS
|
|
${SQLITE3MC_SHELL_DEFINITIONS}
|
|
SQLITE_HAVE_ZLIB=1
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(SQLITE3MC_WITH_ICU)
|
|
find_package(ICU REQUIRED COMPONENTS data i18n io uc)
|
|
if(ICU_FOUND)
|
|
set(SQLITE3MC_ICU_DEFINITIONS
|
|
SQLITE_ENABLE_ICU=1
|
|
)
|
|
else()
|
|
message( FATAL_ERROR "ICU not found.")
|
|
endif()
|
|
endif()
|
|
|
|
# Only generate Debug and Release configuration types.
|
|
set(CMAKE_CONFIGURATION_TYPES Debug Release)
|
|
|
|
set(SQLITE3MC_PUBLIC_HEADERS
|
|
src/sqlite3.h
|
|
src/sqlite3ext.h
|
|
src/sqlite3mc.h
|
|
src/sqlite3mc_version.h
|
|
src/sqlite3mc_vfs.h
|
|
src/sqlite3userauth.h
|
|
)
|
|
|
|
set(SQLITE3MC_BASE_SRCS
|
|
src/sqlite3mc.c
|
|
src/cipher_common.h
|
|
src/cipher_config.h
|
|
src/fastpbkdf2.h
|
|
src/mystdint.h
|
|
src/rijndael.h
|
|
src/sha1.h
|
|
src/sha2.h
|
|
src/test_windirent.h
|
|
${SQLITE3MC_PUBLIC_HEADERS}
|
|
)
|
|
set(SQLITE3MC_DLLRES_SRCS
|
|
src/sqlite3mc.rc
|
|
)
|
|
set(SQLITE3MC_SHELL_SRCS
|
|
src/shell.c
|
|
src/sqlite3mc.c
|
|
src/sqlite3mc_shell.rc
|
|
)
|
|
|
|
set(SQLITE3MC_INCLUDEDIRS
|
|
src
|
|
)
|
|
|
|
set(SQLITE3MC_LINK_LIBRARIES )
|
|
|
|
set(SQLITE3MC_DLL_DEFINITIONS )
|
|
|
|
set(SQLITE3MC_SHELL_SYSTEM_LINKS )
|
|
|
|
if(MSVC)
|
|
set(SQLITE3MC_DLL_DEFINITIONS
|
|
_USRDLL
|
|
)
|
|
endif()
|
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux"
|
|
OR CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
|
|
# Do not set `-maes -msee4.2` when we are on arm which doesn't support
|
|
# this instruction set.
|
|
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64"
|
|
OR CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
else()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -maes")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -maes")
|
|
endif()
|
|
|
|
set(SQLITE3MC_LINK_LIBRARIES
|
|
pthread
|
|
dl
|
|
m
|
|
)
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
list(APPEND SQLITE3MC_LINK_LIBRARIES "-framework Security")
|
|
endif()
|
|
set(SHARED_LIB_EXPORT_DEFINITION "__attribute__((visibility(\"default\")))")
|
|
else()
|
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -maes")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -maes")
|
|
endif()
|
|
set(SHARED_LIB_EXPORT_DEFINITION "__declspec(dllexport)")
|
|
endif()
|
|
|
|
if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -maes -Wno-error=incompatible-function-pointer-types")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -maes")
|
|
endif()
|
|
|
|
set(_LIB_DIFINITIONS
|
|
_LIB
|
|
)
|
|
|
|
set(_DEFAULT_DEFINITIONS
|
|
_CRT_SECURE_NO_WARNINGS
|
|
_CRT_SECURE_NO_DEPRECATE
|
|
_CRT_NONSTDC_NO_WARNINGS
|
|
_CRT_NONSTDC_NO_DEPRECATE
|
|
_UNICODE
|
|
UNICODE
|
|
)
|
|
|
|
set(SQLITE3MC_SHELL_TARGET "sqlite3mc_shell")
|
|
|
|
if(SQLITE3MC_STATIC)
|
|
set(SQLITE3MC_LINK "STATIC")
|
|
set(SQLITE3MC_TARGET "sqlite3mc_static")
|
|
else()
|
|
set(SQLITE3MC_LINK "SHARED")
|
|
set(SQLITE3MC_TARGET "sqlite3mc")
|
|
list(APPEND SQLITE3MC_BASE_SRCS ${SQLITE3MC_DLLRES_SRCS})
|
|
endif()
|
|
|
|
# Lib Project
|
|
add_library(${SQLITE3MC_TARGET} ${SQLITE3MC_LINK}
|
|
${SQLITE3MC_BASE_SRCS}
|
|
)
|
|
target_include_directories(${SQLITE3MC_TARGET} PRIVATE
|
|
${SQLITE3MC_INCLUDEDIRS}
|
|
)
|
|
target_compile_definitions(${SQLITE3MC_TARGET} PRIVATE
|
|
${_LIB_DIFINITIONS}
|
|
${_DEFAULT_DEFINITIONS}
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
${SQLITE3MC_LIBONLY_DEFINITIONS}
|
|
${SQLITE3MC_ZLIB_DEFINITIONS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_TARGET} PRIVATE
|
|
${SQLITE3MC_LINK_LIBRARIES}
|
|
)
|
|
|
|
if(NOT SQLITE3MC_STATIC)
|
|
target_compile_definitions(${SQLITE3MC_TARGET} PRIVATE
|
|
SQLITE_API=${SHARED_LIB_EXPORT_DEFINITION}
|
|
)
|
|
endif()
|
|
|
|
if(ZLIB_FOUND)
|
|
target_include_directories(${SQLITE3MC_TARGET} PRIVATE
|
|
${ZLIB_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_TARGET} PRIVATE
|
|
${ZLIB_LIBRARIES}
|
|
)
|
|
message(${ZLIB_LIBRARIES})
|
|
endif()
|
|
|
|
if(SQLITE3MC_WITH_ICU)
|
|
target_compile_definitions(${SQLITE3MC_TARGET} PRIVATE
|
|
${SQLITE3MC_ICU_DEFINITIONS}
|
|
)
|
|
target_include_directories(${SQLITE3MC_TARGET} PRIVATE
|
|
${ICU_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_TARGET} PRIVATE
|
|
${ICU_LIBRARIES}
|
|
)
|
|
message("Will build ${SQLITE3MC_TARGET} with ICU")
|
|
endif()
|
|
|
|
if(SQLITE3MC_STATIC_RUNTIME_LINK)
|
|
message("Will build ${SQLITE3MC_TARGET} with static runtime link")
|
|
_Enable_MT(${SQLITE3MC_TARGET})
|
|
endif()
|
|
message("Will build ${SQLITE3MC_TARGET} as ${SQLITE3MC_LINK}")
|
|
|
|
set_target_properties(${SQLITE3MC_TARGET} PROPERTIES PUBLIC_HEADER "${SQLITE3MC_PUBLIC_HEADERS}")
|
|
INSTALL(TARGETS ${SQLITE3MC_TARGET}
|
|
ARCHIVE DESTINATION lib
|
|
LIBRARY DESTINATION lib
|
|
PUBLIC_HEADER DESTINATION include/${CMAKE_PROJECT_NAME}
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
|
|
# Shell Executable project
|
|
if(SQLITE3MC_BUILD_SHELL)
|
|
add_executable(${SQLITE3MC_SHELL_TARGET}
|
|
${SQLITE3MC_SHELL_SRCS}
|
|
)
|
|
target_include_directories(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${SQLITE3MC_INCLUDEDIRS}
|
|
)
|
|
target_compile_definitions(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${_DEFAULT_DEFINITIONS}
|
|
${SQLITE3MC_BASE_DEFINITIONS}
|
|
${SQLITE3MC_SHELL_DEFINITIONS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${SQLITE3MC_SHELL_SYSTEM_LINKS}
|
|
${SQLITE3MC_LINK_LIBRARIES}
|
|
)
|
|
if(ZLIB_FOUND)
|
|
target_include_directories(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${ZLIB_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${ZLIB_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
if(SQLITE3MC_WITH_ICU)
|
|
target_compile_definitions(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${SQLITE3MC_ICU_DEFINITIONS}
|
|
)
|
|
target_include_directories(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${ICU_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(${SQLITE3MC_SHELL_TARGET} PRIVATE
|
|
${ICU_LIBRARIES}
|
|
)
|
|
message("Will build ${SQLITE3MC_SHELL_TARGET} with ICU")
|
|
endif()
|
|
|
|
if(SQLITE3MC_RUNTIME_LINK)
|
|
message("Will build ${SQLITE3MC_SHELL_TARGET} with static runtime")
|
|
_Enable_MT(${SQLIT3MC_SHELL_TARGET})
|
|
endif()
|
|
message("Will build ${SQLITE3MC_SHELL_TARGET}")
|
|
|
|
INSTALL(TARGETS ${SQLITE3MC_SHELL_TARGET}
|
|
ARCHIVE DESTINATION lib
|
|
LIBRARY DESTINATION lib
|
|
PUBLIC_HEADER DESTINATION include/${CMAKE_PROJECT_NAME}
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
endif()
|