CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
project(wxsqlite3)

include(CheckLibraryExists)

set(sqlite3_SOURCES
wxsqlite/sqlite3secure/src/sqlite3secure.c
)

add_library(sqlite3 STATIC ${sqlite3_SOURCES})
target_include_directories(sqlite3 SYSTEM PUBLIC wxsqlite3/sqlite3secure/src)

if(NOT WIN32)
check_library_exists(dl dlopen "" COMPILER_HAS_LIBDL)
check_library_exists(pthread pthread_create "" COMPILER_HAS_LIBPTHREAD)
if(COMPILER_HAS_LIBDL)
list(APPEND NIX_LIBRARIES dl)
endif(COMPILER_HAS_LIBDL)
if(COMPILER_HAS_LIBPTHREAD)
list(APPEND NIX_LIBRARIES pthread)
endif(COMPILER_HAS_LIBPTHREAD)
target_link_libraries(sqlite3 ${NIX_LIBRARIES})
endif(NOT WIN32)

set_property(TARGET sqlite3 PROPERTY C_STANDARD 11)
target_compile_definitions(sqlite3
PRIVATE
    NOPCH
    SQLITE_CORE
    SQLITE_ENABLE_FTS5
    SQLITE_ENABLE_EXTFUNC
    SQLITE_ENABLE_COLUMN_METADATA
    SQLITE_ENABLE_JSON1
    HAVE_ACOSH
    HAVE_ASINH
    HAVE_ATANH
    HAVE_ISBLANK
PUBLIC
    SQLITE_HAS_CODEC
    CODEC_TYPE=CODEC_TYPE_AES128
    WXSQLITE3_USE_SQLCIPHER_LEGACY
)

set(wxsqlite3_SOURCES
wxsqlite/src/wxsqlite3.cpp
)

add_library(wxsqlite3 STATIC ${wxsqlite3_SOURCES})
target_include_directories(wxsqlite3 SYSTEM PUBLIC wxsqlite/include)
target_link_libraries(wxsqlite3 PUBLIC ${wxWidgets_LIBRARIES} sqlite3)
target_compile_definitions(wxsqlite3
PUBLIC
    WXSQLITE3_HAVE_CODEC
    WXSQLITE3_HAVE_METADATA
    WXSQLITE3_USER_AUTHENTICATION
)

include_directories(
    ./wxsqlite/include
    ./wxsqlite/sqlite3secure/src
)

get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
set(WXSQLITE3_LIBRARIES wxsqlite3 sqlite3 CACHE INTERNAL "")
set(WXSQLITE3_INCLUDE_DIRS ${dirs} CACHE INTERNAL "")


