macro(pythonize_bool var)
  if (${var})
    set(${var} True)
  else()
    set(${var} False)
  endif()
endmacro()

include(FindPythonInterp)
if(PYTHONINTERP_FOUND)
  set(LIT_EXECUTABLE "" CACHE FILEPATH "Path to LLVM's lit.py.")
  set(LIT_ARGS_DEFAULT "-sv")
  if (MSVC OR XCODE)
    set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
  endif()
  set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}"
      CACHE STRING "Default options for lit")
  set(LIT_ARGS "${LLVM_LIT_ARGS}")
  separate_arguments(LIT_ARGS)

  set(LIBCXX_COMPILER ${CMAKE_CXX_COMPILER})
  set(LIBCXX_SOURCE_DIR ${CMAKE_SOURCE_DIR})
  set(LIBCXX_BINARY_DIR ${CMAKE_BINARY_DIR})
  set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
  pythonize_bool(LIBCXX_ENABLE_SHARED)
  pythonize_bool(LIBCXX_HAS_STDCXX0X_FLAG)

  set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")

  configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
    ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
    @ONLY)

  add_custom_target(check
    COMMAND ${PYTHON_EXECUTABLE}
            ${LIT_EXECUTABLE}
            ${LIT_ARGS}
            ${CMAKE_CURRENT_BINARY_DIR}
    DEPENDS
    COMMENT "Running libcxx tests")
else()
  message(WARNING "Could not find Python, no check target will be available!")
endif()
