set(LLVM_OPTIONAL_SOURCES
  mlir-vulkan-runner.cpp
  vulkan-runtime-wrappers.cpp
  VulkanRuntime.cpp
  VulkanRuntime.h
  )

if (MLIR_ENABLE_VULKAN_RUNNER)
  message(STATUS "Building the Vulkan runner")

  # At first try "FindVulkan" from:
  # https://cmake.org/cmake/help/v3.7/module/FindVulkan.html
  if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
    find_package(Vulkan)
  endif()

  # If Vulkan is not found try a path specified by VULKAN_SDK.
  if (NOT Vulkan_FOUND)
    if ("$ENV{VULKAN_SDK}" STREQUAL "")
      message(FATAL_ERROR "Please use at least CMAKE 3.7.0 or provide "
                          "VULKAN_SDK path as an environment variable")
    endif()

    find_library(Vulkan_LIBRARY vulkan HINTS "$ENV{VULKAN_SDK}/lib" REQUIRED)
    if (Vulkan_LIBRARY)
      set(Vulkan_FOUND ON)
      set(Vulkan_INCLUDE_DIR "$ENV{VULKAN_SDK}/include")
      message(STATUS "Found Vulkan: " ${Vulkan_LIBRARY})
    endif()
  endif()

  if (NOT Vulkan_FOUND)
    message(FATAL_ERROR "Cannot find Vulkan library")
  endif()

  add_llvm_library(vulkan-runtime-wrappers SHARED
    vulkan-runtime-wrappers.cpp
    VulkanRuntime.cpp
  )

  target_include_directories(vulkan-runtime-wrappers
    PUBLIC
    ${Vulkan_INCLUDE_DIR}
  )

  # *IMPORTANT*: This library cannot depend on LLVM libraries. Otherwise,
  # it may cause LLVM version conflict when used together with other shared
  # libraries depending on LLVM. Notably, Mesa, who implements Vulkan
  # drivers on Linux, depends on the system libLLVM.so.
  target_link_libraries(vulkan-runtime-wrappers
    PUBLIC
    ${Vulkan_LIBRARY}
  )

  get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
  set(LIBS
    ${conversion_libs}
    MLIRAnalysis
    MLIRArithmetic
    MLIRExecutionEngine
    MLIRGPUOps
    MLIRIR
    MLIRJitRunner
    MLIRLLVMIR
    MLIRLLVMCommonConversion
    MLIRLLVMToLLVMIRTranslation
    MLIRMemRef
    MLIRMemRefToLLVM
    MLIRParser
    MLIRSPIRV
    MLIRSPIRVTransforms
    MLIRStandard
    MLIRSupport
    MLIRTargetLLVMIRExport
    MLIRTransforms
    MLIRTranslation
    ${Vulkan_LIBRARY}
  )

  # Manually expand the target library, since our MLIR libraries
  # aren't plugged into the LLVM dependency tracking. If we don't
  # do this then we can't insert the CodeGen library after ourselves
  llvm_expand_pseudo_components(TARGET_LIBS AllTargetsCodeGens)
  # Prepend LLVM in front of every target, this is how the library
  # are named with CMake
  SET(targets_to_link)
  FOREACH(t ${TARGET_LIBS})
    LIST(APPEND targets_to_link "LLVM${t}")
  ENDFOREACH(t)

  add_llvm_tool(mlir-vulkan-runner
    mlir-vulkan-runner.cpp

    DEPENDS
    vulkan-runtime-wrappers
  )
  llvm_update_compile_flags(mlir-vulkan-runner)
  target_link_libraries(mlir-vulkan-runner PRIVATE ${LIBS})

endif()
