####################################################
##
##  Files
##
####################################################

# List all sources files
set(texteditor_SOURCES
        aggregate.cpp
        autocompleter.cpp
        basetextdocument.cpp
        basetextdocumentlayout.cpp
        basetexteditor.cpp
        basetextfind.cpp
        behaviorsettings.cpp
        circularclipboard.cpp
        colorscheme.cpp
        completionsettings.cpp
        convenience.cpp
        coreplugin/idocument.cpp
        coreplugin/infobar.cpp
        coreplugin/textdocument.cpp
        displaysettings.cpp
        extraencodingsettings.cpp
        fakevim/fakevimactions.cpp
        fakevim/fakevimhandler.cpp
        find/currentdocumentfind.cpp
        find/findtoolbar.cpp
        find/ifindfilter.cpp
        find/ifindsupport.cpp
        findplaceholder.cpp
        findsystem.cpp
        fontsettings.cpp
        fontsettingspage.cpp
        generichighlighter/context.cpp
        generichighlighter/definitiondownloader.cpp
        generichighlighter/dynamicrule.cpp
        generichighlighter/highlightdefinition.cpp
        generichighlighter/highlightdefinitionhandler.cpp
        generichighlighter/highlightdefinitionmetadata.cpp
        generichighlighter/highlighter.cpp
        generichighlighter/includerulesinstruction.cpp
        generichighlighter/itemdata.cpp
        generichighlighter/keywordlist.cpp
        generichighlighter/manager.cpp
        generichighlighter/progressdata.cpp
        generichighlighter/rule.cpp
        generichighlighter/specificrules.cpp
        highlightersettings.cpp
        indenter.cpp
        itexteditor.cpp
        itextmark.cpp
        mimedatabase.cpp
        multiindexabstractitemdelegate.cpp
        normalindenter.cpp
        plaintexteditor.cpp
        refactoroverlay.cpp
        storagesettings.cpp
        syntaxhighlighter.cpp
        tabsettings.cpp
        texteditorconstants.cpp
        texteditoroverlay.cpp
        typingsettings.cpp
        utils/basevalidatinglineedit.cpp
        utils/changeset.cpp
        utils/environment.cpp
        utils/fancylineedit.cpp
        utils/filesearch.cpp
        utils/fileutils.cpp
        utils/filterlineedit.cpp
        utils/flowlayout.cpp
        utils/linecolumnlabel.cpp
        utils/pathchooser.cpp
        utils/qtcassert.cpp
        utils/savedaction.cpp
        utils/savefile.cpp
        utils/styledbar.cpp
        utils/stylehelper.cpp
        utils/synchronousprocess.cpp
        utils/textfileformat.cpp
        utils/uncommentselection.cpp
        )

# List all forms (.ui)
set(texteditor_FORMS
        find/findwidget.ui
        )

# List all resource files (.qrc)
set(texteditor_RESOURCES
        texteditor.qrc
        )


####################################################
##
##  Targets
##
####################################################

if (WIN32)
    # disable warnings caused by botan headers and set string encoding
    add_definitions(-wd4250 -wd4290)
endif (WIN32)

# Compile and link library
add_library (TextEditor SHARED
        ${texteditor_SOURCES}
        ${texteditor_FORMS}
        ${texteditor_RESOURCES}
        )

target_include_directories(TextEditor
        PUBLIC  ${CMAKE_CURRENT_SOURCE_DIR}/coreplugin
                ${CMAKE_CURRENT_SOURCE_DIR}/fakevim
                ${CMAKE_CURRENT_SOURCE_DIR}/find
                ${CMAKE_CURRENT_SOURCE_DIR}/generichighlighter
                ${CMAKE_CURRENT_SOURCE_DIR}/utils
                ${CMAKE_CURRENT_SOURCE_DIR}
        PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
        )

set_target_properties (TextEditor PROPERTIES
        DEFINE_SYMBOL    TEXTEDITOR_LIBRARY
        LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/internal/
        )

if (APPLE)
  set_target_properties (TextEditor PROPERTIES
    LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath -Wl,@loader_path/../lib -Wl,-install_name -Wl,@rpath/libTextEditor.dylib"
    )
endif ()

target_link_libraries (TextEditor
        Qt::Network
        Qt::Xml
        Qt::Widgets
        Qt::Concurrent
        Qt::PrintSupport
        )
if (${QT_VERSION_MAJOR} VERSION_GREATER_EQUAL 6)
  find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core5Compat REQUIRED)
  target_link_libraries (TextEditor
          Qt::Core5Compat
          )
endif ()

install (TARGETS TextEditor
        DESTINATION "${LGPL_INSTALL_DIR}"
        )
