# List of all GlobalISel files.
set(GLOBAL_ISEL_FILES
      CallLowering.cpp
      IRTranslator.cpp
      InstructionSelect.cpp
      InstructionSelector.cpp
      MachineIRBuilder.cpp
      LegalizerHelper.cpp
      Legalizer.cpp
      LegalizerInfo.cpp
      RegBankSelect.cpp
      RegisterBank.cpp
      RegisterBankInfo.cpp
      Utils.cpp
      )

# Add GlobalISel files to the dependencies if the user wants to build it.
if(LLVM_BUILD_GLOBAL_ISEL)
  set(GLOBAL_ISEL_BUILD_FILES ${GLOBAL_ISEL_FILES})
else()
  set(GLOBAL_ISEL_BUILD_FILES"")
  set(LLVM_OPTIONAL_SOURCES LLVMGlobalISel ${GLOBAL_ISEL_FILES})
endif()


# In LLVMBuild.txt files, it is not possible to mark a dependency to a
# library as optional. So instead, generate an empty library if we did
# not ask for it. 
add_llvm_library(LLVMGlobalISel
        ${GLOBAL_ISEL_BUILD_FILES}
        GlobalISel.cpp
        
        DEPENDS
        intrinsics_gen
  )
