cmake_minimum_required(VERSION 3.15)
project(SqliteCppWrapper LANGUAGES CXX)

# Postavi standard za C++
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Dodaj glavnu biblioteku
add_library(sqlitecpp STATIC
    src/sqlite3.cpp
)

# Uključi zaglavlja
target_include_directories(sqlitecpp
    PUBLIC 
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib>
        $<INSTALL_INTERFACE:include>
)

# Poveži sa SQLite3
find_package(SQLite3 REQUIRED)
target_link_libraries(sqlitecpp PRIVATE SQLite::SQLite3)

# Generiši export fajl za lokalnu upotrebu
export(TARGETS sqlitecpp
    FILE ${CMAKE_CURRENT_BINARY_DIR}/sqlitecppTargets.cmake
    NAMESPACE sqlitecpp::
)

# Generiši sqlitecppConfig.cmake
include(CMakePackageConfigHelpers)

configure_package_config_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sqlitecppConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/sqlitecppConfig.cmake
    INSTALL_DESTINATION lib/cmake/sqlitecpp
)

write_basic_package_version_file(
    ${CMAKE_CURRENT_BINARY_DIR}/sqlitecppConfigVersion.cmake
    VERSION 1.0.0
    COMPATIBILITY SameMajorVersion
)

# Instalacija za lokalnu upotrebu
install(TARGETS sqlitecpp
    EXPORT sqlitecppTargets
    ARCHIVE DESTINATION lib
    LIBRARY DESTINATION lib
    RUNTIME DESTINATION bin
)

install(EXPORT sqlitecppTargets
    FILE sqlitecppTargets.cmake
    NAMESPACE sqlitecpp::
    DESTINATION lib/cmake/sqlitecpp
)

install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/sqlitecppConfig.cmake
    ${CMAKE_CURRENT_BINARY_DIR}/sqlitecppConfigVersion.cmake
    DESTINATION lib/cmake/sqlitecpp
)

# Opcionalno dodaj testove
# enable_testing()
# add_subdirectory(test)

add_subdirectory(test)
