2016-10-18 20:59:44 +02:00
|
|
|
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
|
|
|
project(qterminal)
|
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
include(GNUInstallDirs)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2017-12-05 17:30:58 +01:00
|
|
|
# qterminal version
|
|
|
|
set(STR_VERSION "0.8.0")
|
|
|
|
set(LXQTBT_MINIMUM_VERSION "0.4.0")
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2017-12-05 17:30:58 +01:00
|
|
|
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2016-10-18 20:59:44 +02:00
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
|
|
endif()
|
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
# we need qpa/qplatformnativeinterface.h for global shortcut
|
|
|
|
find_package(Qt5Gui REQUIRED)
|
|
|
|
find_package(Qt5Widgets REQUIRED)
|
|
|
|
find_package(Qt5LinguistTools REQUIRED)
|
|
|
|
if(APPLE)
|
|
|
|
elseif(UNIX)
|
|
|
|
find_package(Qt5X11Extras REQUIRED)
|
2017-12-05 17:30:58 +01:00
|
|
|
find_package(Qt5DBus)
|
2015-08-16 00:43:27 +08:00
|
|
|
endif()
|
2015-09-06 13:44:10 +02:00
|
|
|
find_package(QTermWidget5 REQUIRED)
|
2016-12-22 00:36:10 +01:00
|
|
|
find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
|
2016-10-18 20:59:44 +02:00
|
|
|
include(LXQtTranslateTs)
|
2017-12-05 17:30:58 +01:00
|
|
|
include(LXQtCompilerSettings NO_POLICY_SCOPE)
|
|
|
|
message(STATUS "Qt version: ${Qt5Core_VERSION}")
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
# TODO remove Qxt
|
|
|
|
message(STATUS "Using bundled Qxt...")
|
|
|
|
set(QXT_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src/third-party")
|
2015-08-16 00:43:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
find_library(CARBON_LIBRARY Carbon REQUIRED)
|
|
|
|
message(STATUS "CARBON_LIBRARY: ${CARBON_LIBRARY}")
|
|
|
|
elseif(UNIX)
|
|
|
|
find_package(X11 REQUIRED)
|
|
|
|
message(STATUS "X11_X11_LIB: ${X11_X11_LIB}")
|
2015-09-06 13:44:10 +02:00
|
|
|
endif()
|
2015-08-16 00:43:27 +08:00
|
|
|
|
|
|
|
add_definitions(-DSTR_VERSION=\"${STR_VERSION}\")
|
|
|
|
|
|
|
|
set(EXE_NAME qterminal)
|
|
|
|
|
|
|
|
set(QTERM_SRC
|
|
|
|
src/main.cpp
|
|
|
|
src/mainwindow.cpp
|
|
|
|
src/tabwidget.cpp
|
|
|
|
src/termwidget.cpp
|
|
|
|
src/termwidgetholder.cpp
|
2017-12-05 17:30:58 +01:00
|
|
|
src/terminalconfig.cpp
|
2015-08-16 00:43:27 +08:00
|
|
|
src/properties.cpp
|
|
|
|
src/propertiesdialog.cpp
|
|
|
|
src/bookmarkswidget.cpp
|
|
|
|
src/fontdialog.cpp
|
2017-12-05 17:30:58 +01:00
|
|
|
src/dbusaddressable.cpp
|
2015-08-16 00:43:27 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
set(QTERM_MOC_SRC
|
2017-12-05 17:30:58 +01:00
|
|
|
src/qterminalapp.h
|
2015-08-16 00:43:27 +08:00
|
|
|
src/mainwindow.h
|
|
|
|
src/tabwidget.h
|
|
|
|
src/termwidget.h
|
|
|
|
src/termwidgetholder.h
|
|
|
|
src/propertiesdialog.h
|
|
|
|
src/bookmarkswidget.h
|
|
|
|
src/fontdialog.h
|
|
|
|
)
|
|
|
|
|
2017-12-05 17:30:58 +01:00
|
|
|
|
|
|
|
if (Qt5DBus_FOUND)
|
|
|
|
add_definitions(-DHAVE_QDBUS)
|
|
|
|
QT5_ADD_DBUS_ADAPTOR(QTERM_SRC src/org.lxqt.QTerminal.Window.xml mainwindow.h MainWindow)
|
|
|
|
QT5_ADD_DBUS_ADAPTOR(QTERM_SRC src/org.lxqt.QTerminal.Tab.xml termwidgetholder.h TermWidgetHolder)
|
|
|
|
QT5_ADD_DBUS_ADAPTOR(QTERM_SRC src/org.lxqt.QTerminal.Terminal.xml termwidget.h TermWidget)
|
|
|
|
QT5_ADD_DBUS_ADAPTOR(QTERM_SRC src/org.lxqt.QTerminal.Process.xml qterminalapp.h QTerminalApp)
|
|
|
|
set(QTERM_MOC_SRC ${QTERM_MOC_SRC} src/dbusaddressable.h)
|
|
|
|
message(STATUS "Building with Qt5DBus support")
|
|
|
|
endif()
|
|
|
|
|
2015-08-16 00:43:27 +08:00
|
|
|
if(NOT QXT_FOUND)
|
|
|
|
set(QTERM_SRC ${QTERM_SRC} src/third-party/qxtglobalshortcut.cpp)
|
|
|
|
set(QTERM_MOC_SRC ${QTERM_MOC_SRC} src/third-party/qxtglobalshortcut.h)
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
set(QTERM_SRC ${QTERM_SRC} src/third-party/qxtglobalshortcut_win.cpp)
|
|
|
|
elseif(APPLE)
|
|
|
|
set(QTERM_SRC ${QTERM_SRC} src/third-party/qxtglobalshortcut_mac.cpp)
|
|
|
|
else()
|
|
|
|
set(QTERM_SRC ${QTERM_SRC} src/third-party/qxtglobalshortcut_x11.cpp)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(QTERM_UI_SRC
|
|
|
|
src/forms/qterminal.ui
|
|
|
|
src/forms/propertiesdialog.ui
|
|
|
|
src/forms/bookmarkswidget.ui
|
|
|
|
src/forms/fontdialog.ui
|
|
|
|
)
|
|
|
|
|
|
|
|
set(QTERM_RCC_SRC
|
|
|
|
src/icons.qrc
|
|
|
|
)
|
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
qt5_wrap_ui( QTERM_UI ${QTERM_UI_SRC} )
|
|
|
|
qt5_wrap_cpp( QTERM_MOC ${QTERM_MOC_SRC} )
|
|
|
|
qt5_add_resources( QTERM_RCC ${QTERM_RCC_SRC} )
|
2016-10-18 20:59:44 +02:00
|
|
|
lxqt_translate_ts(QTERM_QM
|
2017-12-05 17:30:58 +01:00
|
|
|
UPDATE_TRANSLATIONS
|
|
|
|
${UPDATE_TRANSLATIONS}
|
|
|
|
SOURCES
|
|
|
|
${QTERM_SRC}
|
|
|
|
${QTERM_UI_SRC}
|
|
|
|
${QTERM_MOC_SRC}
|
2016-10-18 20:59:44 +02:00
|
|
|
TRANSLATION_DIR "src/translations"
|
|
|
|
PULL_TRANSLATIONS
|
|
|
|
${PULL_TRANSLATIONS}
|
|
|
|
CLEAN_TRANSLATIONS
|
|
|
|
${CLEAN_TRANSLATIONS}
|
|
|
|
TRANSLATIONS_REPO
|
|
|
|
${TRANSLATIONS_REPO}
|
|
|
|
TRANSLATIONS_REFSPEC
|
|
|
|
${TRANSLATIONS_REFSPEC}
|
|
|
|
)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
include_directories(
|
2017-12-05 17:30:58 +01:00
|
|
|
"${PROJECT_SOURCE_DIR}"
|
|
|
|
"${PROJECT_SOURCE_DIR}/src"
|
|
|
|
"${PROJECT_BINARY_DIR}"
|
2015-08-16 00:43:27 +08:00
|
|
|
${QXT_INCLUDE_DIRS}
|
|
|
|
)
|
|
|
|
if(X11_FOUND)
|
|
|
|
include_directories("${X11_INCLUDE_DIR}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# TODO/FIXME: apple bundle
|
|
|
|
set(GUI_TYPE "")
|
|
|
|
set(APPLE_BUNDLE_SOURCES "")
|
|
|
|
if(APPLEBUNDLE)
|
|
|
|
add_definitions(-DAPPLE_BUNDLE)
|
|
|
|
set(GUI_TYPE MACOSX_BUNDLE)
|
|
|
|
|
|
|
|
# create Info.plist file
|
|
|
|
set(MACOSX_BUNDLE_ICON_FILE qterminal.icns)
|
|
|
|
set(MACOSX_BUNDLE_INFO_STRING "QTerminal ${STR_VERSION}")
|
|
|
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.qterminal")
|
|
|
|
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${STR_VERSION}")
|
|
|
|
set(MACOSX_BUNDLE_BUNDLE_NAME "${EXE_NAME}")
|
|
|
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${STR_VERSION}")
|
|
|
|
set(MACOSX_BUNDLE_BUNDLE_VERSION "${STR_VERSION}")
|
|
|
|
set(MACOSX_BUNDLE_COPYRIGHT "(c) Petr Vanek <petr@yarpen.cz>")
|
|
|
|
|
|
|
|
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/macosx/qterminal.icns"
|
|
|
|
PROPERTIES MACOSX_PACKAGE_LOCATION Resources
|
|
|
|
)
|
|
|
|
# use icon for app bundle to be visible in finder
|
|
|
|
set(APPLE_BUNDLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/macosx/qterminal.icns")
|
|
|
|
else()
|
2015-09-06 13:44:10 +02:00
|
|
|
set(TRANSLATIONS_DIR "${CMAKE_INSTALL_FULL_DATADIR}/qterminal/translations")
|
2015-08-16 00:43:27 +08:00
|
|
|
add_definitions(-DTRANSLATIONS_DIR=\"${TRANSLATIONS_DIR}\")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_executable(${EXE_NAME} ${GUI_TYPE}
|
|
|
|
${QTERM_SRC}
|
|
|
|
${QTERM_UI}
|
|
|
|
${QTERM_MOC}
|
|
|
|
${QTERM_RCC}
|
|
|
|
${APPLE_BUNDLE_SOURCES}
|
|
|
|
${QTERM_QM}
|
|
|
|
)
|
|
|
|
target_link_libraries(${EXE_NAME}
|
2017-12-05 17:30:58 +01:00
|
|
|
Qt5::Gui
|
|
|
|
qtermwidget5
|
2015-08-16 00:43:27 +08:00
|
|
|
util
|
|
|
|
)
|
|
|
|
if(QXT_FOUND)
|
|
|
|
target_link_libraries(${EXE_NAME} ${QXT_CORE_LIB} ${QXT_GUI_LIB})
|
|
|
|
endif()
|
|
|
|
|
2017-12-05 17:30:58 +01:00
|
|
|
if (Qt5DBus_FOUND)
|
|
|
|
target_link_libraries(${EXE_NAME} ${Qt5DBus_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
2015-08-16 00:43:27 +08:00
|
|
|
if(APPLE)
|
|
|
|
target_link_libraries(${EXE_NAME} ${CARBON_LIBRARY})
|
2015-09-06 13:44:10 +02:00
|
|
|
elseif(UNIX)
|
|
|
|
target_link_libraries(${EXE_NAME} Qt5::X11Extras)
|
2015-08-16 00:43:27 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(X11_FOUND)
|
|
|
|
target_link_libraries(${EXE_NAME} ${X11_X11_LIB})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
install(FILES
|
|
|
|
qterminal.desktop
|
|
|
|
qterminal_drop.desktop
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATADIR}/applications"
|
|
|
|
)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
2015-09-06 13:44:10 +02:00
|
|
|
install(FILES
|
|
|
|
qterminal.appdata.xml
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATADIR}/appdata"
|
|
|
|
)
|
2015-08-16 00:43:27 +08:00
|
|
|
|
|
|
|
if(NOT APPLEBUNDLE)
|
2015-09-06 13:44:10 +02:00
|
|
|
install(TARGETS ${EXE_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
2015-08-16 00:43:27 +08:00
|
|
|
install(FILES ${QTERM_QM} DESTINATION ${TRANSLATIONS_DIR})
|
2015-09-06 13:44:10 +02:00
|
|
|
install(FILES src/icons/qterminal.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/64x64/apps")
|
2015-08-16 00:43:27 +08:00
|
|
|
else()
|
|
|
|
message(STATUS "APPLEBUNDLE")
|
|
|
|
|
|
|
|
install(CODE "message(STATUS \"Cleaning previously installed bundle (rm -r)\")")
|
|
|
|
install(CODE "execute_process(COMMAND rm -r ${CMAKE_INSTALL_PREFIX}/${EXE_NAME}.app)")
|
|
|
|
|
|
|
|
install(TARGETS ${EXE_NAME} DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
|
|
|
|
|
|
|
# helper stuff to create real apple bundle.
|
|
|
|
# Black magic is summoned here...
|
|
|
|
if(APPLEBUNDLE_STANDALONE)
|
|
|
|
message(STATUS "APPLEBUNDLE_STANDALONE")
|
|
|
|
configure_file("${CMAKE_SOURCE_DIR}/bundle.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/bundle.cmake" @ONLY)
|
|
|
|
install(SCRIPT "${CMAKE_SOURCE_DIR}/bundle.cmake")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# bundle required keytabs from the qtermwidget package as well
|
|
|
|
install(CODE "message(STATUS \"Bundling (cp) keytab files from ${QTERMWIDGET_SHARE}/qtermwidget/\")")
|
|
|
|
install(CODE "execute_process(COMMAND cp -r ${QTERMWIDGET_SHARE}/qtermwidget/ ${CMAKE_INSTALL_PREFIX}/${EXE_NAME}.app/Contents/Resources)")
|
|
|
|
|
|
|
|
install(FILES ${QTERM_QM} DESTINATION ${CMAKE_INSTALL_PREFIX}/${EXE_NAME}.app/Contents/translations)
|
|
|
|
endif()
|