cmake_minimum_required(VERSION 3.23)

project(ZBBSServer
    VERSION 1.0.0
)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(TARGET_GROUP production CACHE STRING "Group to build")

# Uncomment if you need to use PostgresQL
option(USE_POSTGRESQL "Use PostgreSQL instead of SQLite" OFF)

if (USE_POSTGRESQL)
  find_package(PostgreSQL REQUIRED)
  if(NOT PostgreSQL_FOUND)
    message(FATAL_ERROR "PostgreSQL not found. Please install libpq-dev or set PostgreSQL_ROOT.")
  endif()
else()
  find_package(SQLite3 REQUIRED)
  if(NOT SQLite3_FOUND)
    message(FATAL_ERROR "SQLite3 not found. Please install sqlite3-devel or set SQLite3_ROOT.")
  endif()
endif()

if(
  (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
  (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
)
  add_compile_definitions(_GNU_SOURCE) 
endif()

find_package(OpenSSL REQUIRED)
if(NOT OpenSSL_FOUND)
    message(FATAL_ERROR "OpenSSL not found. Please install libcrypto or set OpenSSL_ROOT.")
endif()

set(CURSES_NEED_NCURSES TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

add_subdirectory(src) 

# Testing
enable_testing()
include(cmake/OptionsCMocka.cmake)
add_subdirectory(external/cmocka)
add_subdirectory(test)

install(
  TARGETS zbbs-server
)