cmake_minimum_required(VERSION 3.2)
project(CHATOPERA)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -fpermissive")

# prefer static library
IF(WIN32)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
ELSE(WIN32)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
ENDIF(WIN32)

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
    ${PROJECT_SOURCE_DIR}/cmake/modules)

# Patch build information
## build date
execute_process(
  COMMAND date "+%Y-%m-%d %H:%M:%S"
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_BUILD_DATE
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_BUILD_DATE=\"${GIT_BUILD_DATE}\"")

## Get the current working branch
execute_process(
  COMMAND git rev-parse --abbrev-ref HEAD
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_COMMIT_BRANCH
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_COMMIT_BRANCH=\"${GIT_COMMIT_BRANCH}\"")

## git commit hash macro
## https://stackoverflow.com/questions/1435953/how-can-i-pass-git-sha1-to-compiler-as-definition-using-cmake
execute_process(
  COMMAND git rev-parse --short HEAD
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_COMMIT_HASH
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")

execute_process(
  COMMAND git config user.name
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_USER_NAME
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_USER_NAME=\"${GIT_USER_NAME}\"")

execute_process(
  COMMAND git config user.email
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GIT_USER_EMAIL
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_USER_EMAIL=\"${GIT_USER_EMAIL}\"")

execute_process(
  COMMAND gcc -dumpversion
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  OUTPUT_VARIABLE GCC_DUMP_VERSION
  OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGCC_DUMP_VERSION=\"${GCC_DUMP_VERSION}\"")


# Install third party libs
include(${PROJECT_SOURCE_DIR}/cmake/default.cmake)

set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR})

set(ROOT_INSTALL_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(ROOT_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set(ROOT_INSTALL_LIB_DIR ${PROJECT_SOURCE_DIR}/lib)
set(CHATOPERA_UTILS_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src/utils)

include_directories(${ROOT_INSTALL_INCLUDE_DIR})
include_directories(${CHATOPERA_UTILS_INCLUDE_DIR})

add_subdirectory(src)

# IF DUMP MORE INFO TO CORE FILE
#SET(CMAKE_BUILD_TYPE "Debug") 
#SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
#SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")