cmake_minimum_required(VERSION 3.20)
project(cppbessot LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(NOT DEFINED DB_SCHEMA_DIR_TO_GENERATE OR "${DB_SCHEMA_DIR_TO_GENERATE}" STREQUAL "")
  message(FATAL_ERROR
    "Set DB_SCHEMA_DIR_TO_GENERATE to the exact schema directory basename to test, for example -DDB_SCHEMA_DIR_TO_GENERATE=v1.2.")
endif()

include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/dbDependencyCheck.cmake")
cppbessot_check_dependencies()

set(CPPBESSOT_DB_SQLITE_PROD_PATH "" CACHE STRING
  "Optional SQLite DB path for DB_TARGET=prod")
set(CPPBESSOT_DB_SQLITE_DEV_PATH "" CACHE STRING
  "Optional SQLite DB path for DB_TARGET=dev")
set(CPPBESSOT_DB_SQLITE_PRODDEV_PATH "" CACHE STRING
  "Optional SQLite DB path for DB_TARGET=proddev")
set(CPPBESSOT_DB_SQLITE_TESTS_PATH "" CACHE STRING
  "Optional SQLite DB path for DB_TARGET=tests")
set(CPPBESSOT_DB_PGSQL_PROD_CONNSTR "" CACHE STRING
  "Optional PostgreSQL connstr for DB_TARGET=prod")
set(CPPBESSOT_DB_PGSQL_DEV_CONNSTR "" CACHE STRING
  "Optional PostgreSQL connstr for DB_TARGET=dev")
set(CPPBESSOT_DB_PGSQL_PRODDEV_CONNSTR "" CACHE STRING
  "Optional PostgreSQL connstr for DB_TARGET=proddev")
set(CPPBESSOT_DB_PGSQL_TESTS_CONNSTR "" CACHE STRING
  "Optional PostgreSQL connstr for DB_TARGET=tests")

include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CppBeSSOT.cmake")

if(NOT DEFINED BUILD_TESTING)
  set(BUILD_TESTING OFF CACHE BOOL "Build cppbessot tests" FORCE)
endif()

include(CTest)

if(BUILD_TESTING)
  add_subdirectory(tests)
endif()
