include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR})

# ------------------- Source files --------------------

add_library(
  PastisUtils
  RevisionInfo.cpp)

# --------------- get git revision info ---------------

# Generates revision header file
add_custom_target(
  PastisGitRevison
  ALL
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
)

set_source_files_properties(
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
  PROPERTIES
  GENERATED TRUE
  HEADER_FILE_ONLY TRUE
  )

# --------- check git revision info at build ----------

add_custom_command(TARGET PastisGitRevison
  COMMAND ${CMAKE_COMMAND} -E remove -f
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
  COMMENT ""
  )
  
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
  PRE_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy_if_different
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
  COMMENT ""
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
  VERBATIM
  )

add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
  PRE_BUILD
  COMMAND ${CMAKE_COMMAND} -DCMAKE_PASTIS_VERSION=${Pastis_VERSION} -DPASTIS_SOURCE_DIR=${PASTIS_SOURCE_DIR} -P ${PASTIS_SOURCE_DIR}/cmake/GetPastisGitRevision.cmake
  COMMENT "Check pastis git status"
  VERBATIM
  )

# --------- check git revision info at build ----------

configure_file("${PASTIS_SOURCE_DIR}/utils/pastis_version.hpp.in"
  "${CMAKE_CURRENT_BINARY_DIR}/pastis_version.hpp"
  @ONLY)


list(
  APPEND
  SOURCES
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
  ${CMAKE_CURRENT_BINARY_DIR}/pastis_version.hpp
  )

include_directories(${CMAKE_CURRENT_BINARY_DIR})

# Additional dependencies
add_dependencies(
  PastisUtils
  PastisGitRevison)