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

# Code generation requirements


# Generate headers for ABI analyses
set(ABIANALYSIS_TEMPLATE
  "${CMAKE_CURRENT_SOURCE_DIR}/ABIAnalysis.template")

set(ABIANALYSIS_GRAPHS
  "DeadRegisterArgumentsOfFunction"
  "DeadReturnValuesOfFunctionCall"
  "RegisterArgumentsOfFunctionCall"
  "UsedArgumentsOfFunction"
  "UsedReturnValuesOfFunctionCall"
  "UsedReturnValuesOfFunction")

foreach(GRAPH IN LISTS ABIANALYSIS_GRAPHS)
  add_custom_command(OUTPUT "${GRAPH}.h"
    COMMAND "${CMAKE_SOURCE_DIR}/scripts/monotone_framework_lattice.py"
      ${ABIANALYSIS_TEMPLATE} "${CMAKE_CURRENT_SOURCE_DIR}/${GRAPH}.dot" > "${GRAPH}.h"
    DEPENDS "${CMAKE_SOURCE_DIR}/scripts/monotone_framework_lattice.py"
            "${CMAKE_CURRENT_SOURCE_DIR}/${GRAPH}.dot"
            ${ABIANALYSIS_TEMPLATE}
    VERBATIM)
    list(APPEND ABIANALYSIS_HEADERS "${GRAPH}.h")
endforeach()

add_custom_target(abi-analyses-headers DEPENDS ${ABIANALYSIS_HEADERS})
