You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

311 lines
10 KiB

# cmake-options : -DCMAKE_DISABLE_FIND_PACKAGE_LibKonq=TRUE or FALSE; default is FALSE
add_definitions(-DTRANSLATION_DOMAIN=\"konsole\")
### Handle DragonFlyBSD here instead of using __DragonFly__
IF(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
set(HAVE_OS_DRAGONFLYBSD 1)
else()
set(HAVE_OS_DRAGONFLYBSD 0)
endif()
IF(NOT (${KF5_VERSION} VERSION_LESS "5.60.0"))
set(USE_TERMINALINTERFACEV2 1)
endif()
include(CheckIncludeFiles)
include(ECMAddAppIcon)
configure_file(config-konsole.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config-konsole.h)
### Tests
if(BUILD_TESTING)
find_package(Qt5Test ${QT_MIN_VERSION} CONFIG REQUIRED)
add_subdirectory(autotests)
add_subdirectory(tests)
endif()
### Security concerns about sendText and runCommand dbus methods being public
option(REMOVE_SENDTEXT_RUNCOMMAND_DBUS_METHODS "Konsole: remove sendText and runCommand dbus methods" OFF)
### Development tools
option(KONSOLE_BUILD_UNI2CHARACTERWIDTH "Konsole: build uni2characterwidth executable" OFF)
### Konsole source files shared between embedded terminal and main application
# qdbuscpp2xml -m Session.h -o org.kde.konsole.Session.xml
# qdbuscpp2xml -M -s ViewManager.h -o org.kde.konsole.Konsole.xml
# Generate dbus .xml files; do not store .xml in source folder
qt5_generate_dbus_interface(ViewManager.h org.kde.konsole.Window.xml OPTIONS -m)
qt5_add_dbus_adaptor(windowadaptors_SRCS
${CMAKE_CURRENT_BINARY_DIR}/org.kde.konsole.Window.xml
ViewManager.h
Konsole::ViewManager)
set(konsole_LIBS
KF5::XmlGui
Qt5::PrintSupport
Qt5::Xml
KF5::Notifications
KF5::WindowSystem
KF5::TextWidgets
KF5::GuiAddons
KF5::IconThemes
KF5::Bookmarks
KF5::I18n
KF5::Pty
KF5::KIOWidgets
KF5::DBusAddons
KF5::GlobalAccel
KF5::NewStuff
)
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
#kinfo_getfile() is in libutil
list(APPEND konsole_LIBS util)
endif()
# TODO: Move this to an internal folder if it grows too much.
# This konsoleprivate_core is the "core" library that depends in nothing from konsole itself
# so we can start to detangle the codebase.
set(konsoleprivate_core_SRCS
ShellCommand.cpp
WindowSystemInfo.cpp
)
ecm_qt_declare_logging_category(
konsoleprivate_core_SRCS
HEADER konsoledebug.h
IDENTIFIER KonsoleDebug
CATEGORY_NAME org.kde.konsole
)
add_library(konsoleprivate_core STATIC ${konsoleprivate_core_SRCS})
target_link_libraries(konsoleprivate_core ${konsole_LIBS})
set(konsolehelpers_SRCS
LabelsAligner.cpp
)
add_library(konsolehelpers
STATIC
${konsolehelpers_SRCS}
)
target_link_libraries(konsolehelpers
Qt5::Core
Qt5::Widgets
)
add_subdirectory(colorscheme)
add_subdirectory(keyboardtranslator)
add_subdirectory(profile)
add_subdirectory(session)
add_subdirectory(characters)
set(konsoleprivate_SRCS ${windowadaptors_SRCS}
BookmarkHandler.cpp
BookmarkMenu.cpp
CheckableSessionModel.cpp
CopyInputDialog.cpp
Emulation.cpp
EscapeSequenceUrlExtractor.cpp
FontDialog.cpp
decoders/HTMLDecoder.cpp
HistorySizeDialog.cpp
KeyBindingEditor.cpp
LabelsAligner.cpp
NullProcessInfo.cpp
NullProcessInfo.cpp
decoders/PlainTextDecoder.cpp
PrintOptions.cpp
PrintOptions.cpp
ProcessInfo.cpp
ProcessInfo.cpp
Pty.cpp
Pty.cpp
RenameTabDialog.cpp
SSHProcessInfo.cpp
SaveHistoryTask.cpp
Screen.cpp
ScreenWindow.cpp
ScrollState.cpp
SearchHistoryTask.cpp
ShouldApplyProperty.cpp
UnixProcessInfo.cpp
ViewManager.cpp
ViewProperties.cpp
Vt102Emulation.cpp
WindowSystemInfo.cpp
ZModemDialog.cpp
filterHotSpots/EscapeSequenceUrlFilter.cpp
filterHotSpots/EscapeSequenceUrlFilterHotSpot.cpp
filterHotSpots/FileFilter.cpp
filterHotSpots/FileFilterHotspot.cpp
filterHotSpots/Filter.cpp
filterHotSpots/FilterChain.cpp
filterHotSpots/HotSpot.cpp
filterHotSpots/RegExpFilter.cpp
filterHotSpots/RegExpFilterHotspot.cpp
filterHotSpots/TerminalImageFilterChain.cpp
filterHotSpots/UrlFilter.cpp
filterHotSpots/UrlFilterHotspot.cpp
filterHotSpots/ColorFilter.cpp
filterHotSpots/ColorFilterHotSpot.cpp
history/HistoryFile.cpp
history/HistoryScroll.cpp
history/HistoryScrollFile.cpp
history/HistoryScrollNone.cpp
history/HistoryType.cpp
history/HistoryTypeFile.cpp
history/HistoryTypeNone.cpp
history/compact/CompactHistoryBlock.cpp
history/compact/CompactHistoryBlockList.cpp
history/compact/CompactHistoryLine.cpp
history/compact/CompactHistoryScroll.cpp
history/compact/CompactHistoryType.cpp
widgets/DetachableTabBar.cpp
widgets/DetachableTabBar.cpp
widgets/EditProfileDialog.cpp
widgets/HistorySizeWidget.cpp
widgets/HistorySizeWidget.cpp
widgets/IncrementalSearchBar.cpp
widgets/IncrementalSearchBar.cpp
widgets/RenameTabWidget.cpp
widgets/RenameTabWidget.cpp
widgets/TabTitleFormatButton.cpp
terminalDisplay/extras/CompositeWidgetFocusWatcher.cpp
terminalDisplay/extras/AutoScrollHandler.cpp
terminalDisplay/TerminalDisplay.cpp
terminalDisplay/TerminalPainter.cpp
terminalDisplay/TerminalScrollBar.cpp
terminalDisplay/TerminalColor.cpp
widgets/TerminalDisplayAccessible.cpp
widgets/TerminalHeaderBar.cpp
widgets/ViewContainer.cpp
widgets/ViewSplitter.cpp
widgets/KonsolePrintManager.cpp
${CMAKE_CURRENT_BINARY_DIR}/org.kde.konsole.Window.xml)
kconfig_add_kcfg_files(konsoleprivate_SRCS settings/KonsoleSettings.kcfgc)
### Konsole Application
ki18n_wrap_ui(konsoleprivate_SRCS
CopyInputDialog.ui
HistorySizeDialog.ui
KeyBindingEditor.ui
PrintOptions.ui # Temporary to build session static library
RenameTabDialog.ui
settings/GeneralSettings.ui
settings/PartInfo.ui
settings/ProfileSettings.ui
settings/TabBarSettings.ui
settings/TemporaryFilesSettings.ui
settings/ThumbnailsSettings.ui
widgets/EditProfileAdvancedPage.ui
widgets/EditProfileAppearancePage.ui
widgets/EditProfileGeneralPage.ui
widgets/EditProfileKeyboardPage.ui
widgets/EditProfileMousePage.ui
widgets/EditProfileScrollingPage.ui
widgets/EditProfileTabsPage.ui
widgets/HistorySizeWidget.ui
widgets/RenameTabWidget.ui
)
# add the resource files for the ui files
qt5_add_resources( konsoleprivate_SRCS ../desktop/konsole.qrc)
add_library(konsoleprivate ${konsoleprivate_SRCS})
generate_export_header(konsoleprivate BASE_NAME konsoleprivate)
target_link_libraries(konsoleprivate
PUBLIC
konsoleprivate_core
konsolecolorscheme
keyboardtranslator
konsolehelpers
konsolesession
konsoleprofile
konsolecharacters
${konsole_LIBS}
)
set_target_properties(konsoleprivate PROPERTIES
VERSION ${KONSOLEPRIVATE_VERSION_STRING}
SOVERSION ${KONSOLEPRIVATE_SOVERSION}
)
install(TARGETS konsoleprivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
set(konsole_KDEINIT_SRCS
Application.cpp
MainWindow.cpp
main.cpp
settings/ConfigurationDialog.cpp
settings/ConfigDialogButtonGroupManager.cpp
settings/TemporaryFilesSettings.cpp
settings/GeneralSettings.cpp
settings/ProfileSettings.cpp
settings/TabBarSettings.cpp
settings/ThumbnailsSettings.cpp
delegates/ProfileShortcutDelegate.cpp
)
# Sets the icon on Windows and OSX
ecm_add_app_icon(kdeinit_konsole ICONS ${ICONS_SRCS})
kf5_add_kdeinit_executable(konsole ${konsole_KDEINIT_SRCS})
target_link_libraries(kdeinit_konsole
konsoleprofile
konsoleprivate
KF5::XmlGui
KF5::WindowSystem
KF5::Bookmarks
KF5::I18n
KF5::KIOWidgets
KF5::NotifyConfig
KF5::Crash
)
if(APPLE)
set_target_properties(konsole PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER "org.kde.konsole"
MACOSX_BUNDLE_BUNDLE_NAME "Konsole"
MACOSX_BUNDLE_DISPLAY_NAME "Konsole"
MACOSX_BUNDLE_INFO_STRING "Konsole, the KDE terminal emulator"
MACOSX_BUNDLE_LONG_VERSION_STRING "Konsole ${RELEASE_SERVICE_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}"
MACOSX_BUNDLE_BUNDLE_VERSION "${RELEASE_SERVICE_VERSION}"
MACOSX_BUNDLE_COPYRIGHT "1997-2020 The Konsole Developers")
endif()
install(TARGETS kdeinit_konsole konsole
${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
### Embedded Konsole KPart
set(konsolepart_PART_SRCS Part.cpp
settings/PartInfo.cpp
settings/ProfileSettings.cpp
delegates/ProfileShortcutDelegate.cpp
)
add_library(konsolepart MODULE ${konsolepart_PART_SRCS})
generate_export_header(konsolepart BASE_NAME konsole)
kcoreaddons_desktop_to_json(konsolepart ../desktop/konsolepart.desktop)
set_target_properties(konsolepart PROPERTIES DEFINE_SYMBOL KONSOLE_PART)
target_link_libraries(konsolepart
KF5::Parts
KF5::XmlGui
konsoleprofile
konsoleprivate
)
install(TARGETS konsolepart DESTINATION ${KDE_INSTALL_PLUGINDIR})