#------------------------------------------------------------------------------
# CLING - the C++ LLVM-based InterpreterG :)
#
# This file is dual-licensed: you can choose to license it under the University
# of Illinois Open Source License or the GNU Lesser General Public License. See
# LICENSE.TXT for details.
#------------------------------------------------------------------------------

set( LLVM_LINK_COMPONENTS
  support
)

if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/textinput)
  set(TEXTINPUTSRC ${CMAKE_SOURCE_DIR}/core/textinput/src/)
  include_directories(${TEXTINPUTSRC})
else()
  # For cling, install textinput *.h in include/cling/UserInterface/textinput.
  install(DIRECTORY ${TEXTINPUTSRC}textinput
    DESTINATION include/cling/UserInterface
    FILES_MATCHING
    PATTERN "CMakeFiles" EXCLUDE
    PATTERN "*.cpp" EXCLUDE
    PATTERN "doc" EXCLUDE
    PATTERN "*.h"
    )
endif()

add_cling_library(clingUserInterface
  UserInterface.cpp
  ${TEXTINPUTSRC}textinput/Editor.cpp
  ${TEXTINPUTSRC}textinput/History.cpp
  ${TEXTINPUTSRC}textinput/KeyBinding.cpp
  ${TEXTINPUTSRC}textinput/Range.cpp
  ${TEXTINPUTSRC}textinput/SignalHandler.cpp
  ${TEXTINPUTSRC}textinput/StreamReader.cpp
  ${TEXTINPUTSRC}textinput/StreamReaderUnix.cpp
  ${TEXTINPUTSRC}textinput/StreamReaderWin.cpp
  ${TEXTINPUTSRC}textinput/TerminalConfigUnix.cpp
  ${TEXTINPUTSRC}textinput/TerminalDisplay.cpp
  ${TEXTINPUTSRC}textinput/TerminalDisplayUnix.cpp
  ${TEXTINPUTSRC}textinput/TerminalDisplayWin.cpp
  ${TEXTINPUTSRC}textinput/TextInput.cpp
  ${TEXTINPUTSRC}textinput/TextInputContext.cpp

  LINK_LIBS
  clingMetaProcessor
  clingInterpreter
  clingUtils
)

if( MSVC )
  # Don't use Unicode in the User Interface (command prompt)
  remove_definitions(-DUNICODE -D_UNICODE)
endif()

if(UNIX)
  set_source_files_properties(UserInterface.cpp COMPILE_FLAGS "-fexceptions")
endif()
