cmake_minimum_required(VERSION 3.5)

project(Sensor2pg)

SET(CMAKE_CXX_STANDARD 17)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

IF(NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE DEBUG)
ENDIF()

# mock and debug macro
OPTION(MOCK "Time usage each module" ON)

IF(CMAKE_BUILD_TYPE STREQUAL DEBUG)
  ADD_DEFINITIONS(-D __DEBUG__)
ELSE (CMAKE_BUILD_TYPE STREQUAL RELEASE)
  SET(MOCK OFF)
ENDIF()

IF(MOCK)
  ADD_DEFINITIONS(-D __MOCK__)
ENDIF()

SET(CMAKE_C_COMPILER "gcc")
SET(CMAKE_CXX_COMPILER "g++")

SET(CMAKE_CXX_FLAGS_PUBLIC "-fno-strict-aliasing")
SET(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3")

find_package(Threads REQUIRED)

include_directories(/usr/include/postgresql)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

FILE(GLOB SOURCE_FILES "src/*.cpp" "src/*c")

find_path(LIBPQXX_INCLUDE_DIRS NAMES pqxx/pqxx PATHS /usr/local/include)
find_library(LIBPQXX_LIBRARY NAMES pqxx PATHS /usr/local/lib REQUIRED)

find_path(LIBPQ_INCLUDE_DIRS NAMES libpq-fe.h PATHS /usr/include/postgresql)
find_library(LIBPQ_LIBRARY NAMES pq PATHS /usr/lib/aarch64-linux-gnu REQUIRED)

include_directories(${LIBPQXX_INCLUDE_DIRS} ${LIBPQ_INCLUDE_DIRS})


add_executable(Sensor2pg ${SOURCE_FILES})
target_link_libraries(Sensor2pg ${LIBPQXX_LIBRARY} ${LIBPQ_LIBRARY} Threads::Threads)

install(TARGETS Sensor2pg DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})
