set(LLVM_LINK_COMPONENTS
  Analysis
  Core
  Support

  # IR reading (used by llvm-ir2vec.cpp directly)
  IRReader

  # Machine IR components (for -mode=mir)
  CodeGen
  MIRParser
  MC
  Target

  # Target initialization (required for MIR parsing)
  AllTargetsAsmParsers
  AllTargetsCodeGens
  AllTargetsDescs
  AllTargetsInfos
  TargetParser
)

# Build the utility libraries first
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib)
add_subdirectory(lib)

# Main executable
add_llvm_tool(llvm-ir2vec
  llvm-ir2vec.cpp

  DEPENDS
  intrinsics_gen
)

# Link both libraries: IR tool for IR mode, MIR tool for MIR mode
target_link_libraries(llvm-ir2vec PRIVATE LLVMIREmbUtils LLVMMIREmbUtils)

option(LLVM_IR2VEC_ENABLE_PYTHON_BINDINGS
  "Build Python bindings for llvm-ir2vec"
  OFF)

set(LLVM_IR2VEC_TEST_PYTHON_BINDINGS False CACHE INTERNAL "")

if(LLVM_IR2VEC_ENABLE_PYTHON_BINDINGS)
  add_subdirectory(Bindings)
  set(LLVM_IR2VEC_TEST_PYTHON_BINDINGS True CACHE INTERNAL "" FORCE)
endif()
