cmake_minimum_required(VERSION 3.7)

project(ceev VERSION 0.1.0 DESCRIPTION "The language of the CeeV project")

execute_process(
    COMMAND git rev-parse --short HEAD
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    OUTPUT_VARIABLE GIT_COMMIT_HASH
    OUTPUT_STRIP_TRAILING_WHITESPACE)

execute_process(
    COMMAND git log -1 --pretty=%B
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    OUTPUT_VARIABLE GIT_COMMIT_MSG
    OUTPUT_STRIP_TRAILING_WHITESPACE)

set(CMAKE_CXX_STANDARD 17)

add_library(${PROJECT_NAME} SHARED src/lang.cc src/lang.h src/colors.cc
    src/colors.h)
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER
    "src/lang.h;src/colors.h")

configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/ceevConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/ceevConfig.cmake
    @ONLY
)

install(
    FILES ${CMAKE_CURRENT_BINARY_DIR}/ceevConfig.cmake
    DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/ceev
)

install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION /usr/local/lib/
    PUBLIC_HEADER DESTINATION /usr/local/include/ceev
)

target_compile_definitions(${PROJECT_NAME} PRIVATE
    "-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")

string(REPLACE "\n" "\\n" GIT_COMMIT_MSG "${GIT_COMMIT_MSG}")

target_compile_definitions(${PROJECT_NAME} PRIVATE
    "-DGIT_COMMIT_MSG=\"${GIT_COMMIT_MSG}\"")