#
# This file is distributed under the MIT License. See LICENSE.md for details.
#

add_custom_command(
  OUTPUT "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Types.inc"
         "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Functions.inc"
         "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Wrappers.h"
  COMMAND
    # cmake-format: off
    python "${CMAKE_SOURCE_DIR}/scripts/PipelineC_add_tracing.py"
    -i "${CMAKE_SOURCE_DIR}/include/revng/PipelineC/ForwardDeclarationsC.h"
    -i "${CMAKE_SOURCE_DIR}/include/revng/PipelineC/Prototypes.h"
    "${CMAKE_BINARY_DIR}/include/revng/PipelineC"
    # cmake-format: on
  DEPENDS "${CMAKE_SOURCE_DIR}/scripts/PipelineC_add_tracing.py"
          "${CMAKE_SOURCE_DIR}/include/revng/PipelineC/ForwardDeclarationsC.h"
          "${CMAKE_SOURCE_DIR}/include/revng/PipelineC/Prototypes.h")

add_custom_target(
  PipelineC-autogenerated
  DEPENDS "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Types.inc"
          "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Functions.inc"
          "${CMAKE_BINARY_DIR}/include/revng/PipelineC/Wrappers.h")

revng_add_library_internal(revngPipelineC SHARED PipelineC.cpp
                           Tracing/Inspector.cpp Tracing/Runner.cpp)

add_dependencies(revngPipelineC PipelineC-autogenerated)
target_link_libraries(revngPipelineC revngPipes ${LLVM_LIBRARIES})
