if(NOT CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_BUILD_TYPE Debug)
endif()
include(ExternalProject)

# Test various combinations of USES_TERMINAL with ExternalProject_Add.

macro(DoTerminalTest _target)
  ExternalProject_Add(${_target}
    DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E echo "download"
    UPDATE_COMMAND "${CMAKE_COMMAND}" -E echo "update"
    CONFIGURE_COMMAND "${CMAKE_COMMAND}" -E echo "configure"
    BUILD_COMMAND "${CMAKE_COMMAND}" -E echo "build"
    TEST_COMMAND "${CMAKE_COMMAND}" -E echo "test"
    INSTALL_COMMAND "${CMAKE_COMMAND}" -E echo "install"
    ${ARGN}
    )
endmacro()

# USES_TERMINAL on all steps
DoTerminalTest(TerminalTest1
  USES_TERMINAL_DOWNLOAD 1
  USES_TERMINAL_UPDATE 1
  USES_TERMINAL_CONFIGURE 1
  USES_TERMINAL_BUILD 1
  USES_TERMINAL_TEST 1
  USES_TERMINAL_INSTALL 1
  )

# USES_TERMINAL on every other step, starting with download
DoTerminalTest(TerminalTest2
  USES_TERMINAL_DOWNLOAD 1
  USES_TERMINAL_CONFIGURE 1
  USES_TERMINAL_TEST 1
  )

# USES_TERMINAL on every other step, starting with update
DoTerminalTest(TerminalTest3
  USES_TERMINAL_UPDATE 1
  USES_TERMINAL_BUILD 1
  USES_TERMINAL_INSTALL 1
  )

# USES_TERMINAL on no step
DoTerminalTest(TerminalTest4)