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} -DINVOCATION_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/git_revision.cmake
  COMMENT "Check pastis git status"
  VERBATIM
  )

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

include_directories(${CMAKE_CURRENT_BINARY_DIR})

# Additional dependencies
add_dependencies(
  PastisUtils
  PastisGitRevison)