cmake_minimum_required (VERSION 3.6)
project(auth_service LANGUAGES C)

set(CMAKE_C_STANDARD 23)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_FLAGS "-ffunction-sections -fdata-sections -DMG_TLS=MG_TLS_OPENSSL")
if (APPLE)
elseif (UNIX)
    set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections")
endif()

include_directories(./src/lib/ ./src ${SQLite3_INCLUDE_DIRS})

FILE(GLOB SOURCES src/*.c src/lib/*.c src/file_db/*.c src/config/*.c src/api/*.c src/database/*.c src/security/*.c src/utils/*.c)

option(USE_SQLITE3 "Enable SQLite3 support" OFF)
option(USE_WERROR "Enable SQLite3 support" OFF)

if(USE_SQLITE3)
    find_package(SQLite3 REQUIRED)
    add_definitions(-DUSE_SQLITE3)
    FILE(GLOB SOURCES src/*.c src/lib/*.c src/sqlite_db/*.c src/file_db/*.c src/config/*.c src/api/*.c src/database/*.c src/security/*.c src/utils/*.c)
endif()

if(USE_WERROR)
    add_definitions(-Werror)
endif()

add_executable(
    auth_service
    ${SOURCES}
)

if(USE_SQLITE3)
    target_link_libraries(auth_service ssl crypto sqlite3 pthread)
else()
    target_link_libraries(auth_service ssl crypto pthread)
endif()
