Files
seer/src/CMakeLists.txt
T
2026-04-10 23:46:35 +02:00

366 lines
12 KiB
CMake

cmake_minimum_required(VERSION 3.10.0)
project(seergdb VERSION 2.8.0 LANGUAGES CXX)
set(PROJECT_NAME seergdb)
if(NOT DEFINED QTVERSION)
set(QTVERSION "QT6" CACHE STRING "" FORCE)
endif()
if(${QTVERSION} STREQUAL "QT6")
message("-- Compile with QT6")
elseif(${QTVERSION} STREQUAL "QT5")
message("-- Compile with QT5")
else()
message(FATAL_ERROR "-- Use -DQTVERSION=QT5|QT6 not \"${QTVERSION}\"")
endif()
# Find includes in the build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_PREFIX_PATH ${QTDIR})
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
if(${QTVERSION} STREQUAL "QT6")
find_package(Qt6 COMPONENTS REQUIRED Core)
find_package(Qt6 COMPONENTS REQUIRED Gui)
find_package(Qt6 COMPONENTS REQUIRED Widgets)
find_package(Qt6 COMPONENTS REQUIRED PrintSupport)
find_package(Qt6 COMPONENTS REQUIRED Charts)
find_package(Qt6 COMPONENTS REQUIRED Svg)
find_package(Qt6 COMPONENTS REQUIRED OpenGL)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
elseif(${QTVERSION} STREQUAL "QT5")
find_package(Qt5 COMPONENTS REQUIRED Core)
find_package(Qt5 COMPONENTS REQUIRED Gui)
find_package(Qt5 COMPONENTS REQUIRED Widgets)
find_package(Qt5 COMPONENTS REQUIRED PrintSupport)
find_package(Qt5 COMPONENTS REQUIRED Charts)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
# Define the source location of header files
set(HEADER_FILES
GdbMonitor.h
QProcessInfo.h
QProcessInfoWidget.h
QProgressIndicator.h
QColorButton.h
QColorSwatch.h
QDetachTabWidget.h
QZoomChartView.h
QZoomChart.h
QClearLineEdit.h
QIndexTreeWidget.h
QStringPair.h
QHistoryLineEdit.h
QEditDelegate.h
QHContainerWidget.h
QImageViewer.h
QAnsiTextEdit.h
SeerUtl.h
SeerArgumentsDialog.h
SeerBreakpointCreateDialog.h
SeerMessagesBrowserWidget.h
SeerBreakpointsBrowserWidget.h
SeerCatchpointCreateDialog.h
SeerCatchpointsBrowserWidget.h
SeerPrintpointCreateDialog.h
SeerPrintpointsBrowserWidget.h
SeerCheckpointsBrowserWidget.h
SeerCommandLogsWidget.h
SeerSeerLogWidget.h
SeerConsoleWidget.h
SeerConfigDialog.h
SeerGdbConfigPage.h
SeerRRConfigPage.h
SeerEditorConfigPage.h
SeerSourceConfigPage.h
SeerAssemblyConfigPage.h
SeerSeerConfigPage.h
SeerKeysConfigPage.h
SeerCloseSourceDialog.h
SeerDebugDialog.h
SeerDirectoryFilterProxyModel.h
SeerEditorManagerEntry.h
SeerEditorManagerWidget.h
SeerEditorWidgetSource.h
SeerEditorWidgetAssembly.h
SeerExecutableFilterProxyModel.h
SeerGdbWidget.h
SeerHexWidget.h
SeerAsmWidget.h
SeerArrayWidget.h
SeerMarixWidget.h
SeerLogWidget.h
SeerMainWindow.h
SeerArrayVisualizerWidget.h
SeerMatrixVisualizerWidget.h
SeerMemoryVisualizerWidget.h
SeerStructVisualizerWidget.h
SeerVarVisualizerWidget.h
SeerImageVisualizerWidget.h
SeerRegisterValuesBrowserWidget.h
SeerRegisterEditValueDialog.h
SeerRegisterProfileDialog.h
SeerRegisterTreeWidgetItem.h
SeerSignalValuesBrowserWidget.h
SeerSignalProfileDialog.h
SeerSignalEditValueDialog.h
SeerRunStatusIndicator.h
SeerLibraryBrowserWidget.h
SeerSourceBrowserWidget.h
SeerFunctionBrowserWidget.h
SeerTypeBrowserWidget.h
SeerStaticBrowserWidget.h
SeerSkipBrowserWidget.h
SeerSkipCreateDialog.h
SeerSourceSymbolLibraryManagerWidget.h
SeerStackArgumentsBrowserWidget.h
SeerStackFramesBrowserWidget.h
SeerStackLocalsBrowserWidget.h
SeerStackDumpBrowserWidget.h
SeerStackDumpSettingsDialog.h
SeerStackManagerWidget.h
SeerThreadFramesBrowserWidget.h
SeerThreadIdsBrowserWidget.h
SeerThreadGroupsBrowserWidget.h
SeerAdaTasksBrowserWidget.h
SeerAdaExceptionsBrowserWidget.h
SeerThreadManagerWidget.h
SeerGdbLogWidget.h
SeerTildeLogWidget.h
SeerVariableLoggerBrowserWidget.h
SeerVariableManagerWidget.h
SeerVariableTrackerBrowserWidget.h
SeerWatchpointCreateDialog.h
SeerWatchpointsBrowserWidget.h
SeerSourceHighlighter.h
SeerAdaSourceHighlighter.h
SeerCppSourceHighlighter.h
SeerOdinSourceHighlighter.h
SeerRustSourceHighlighter.h
SeerAboutDialog.h
SeerSlashProcDialog.h
SeerHighlighterSettings.h
SeerKeySettings.h
SeerPlainTextEdit.h
SeerHelpPageDialog.h
SeerProgressIndicator.h
SeerMessagesDialog.h
SeerAssemblyPreferenceDialog.h
SeerHistoryLineEdit.h
SeerMacroEditorDialog.h
SeerMacroToolButton.h
)
# Define the source location of source files
set(SOURCE_FILES
GdbMonitor.cpp
QProcessInfo.cpp
QProcessInfoWidget.cpp
QProgressIndicator.cpp
QColorButton.cpp
QColorSwatch.cpp
QDetachTabWidget.cpp
QZoomChartView.cpp
QZoomChart.cpp
QClearLineEdit.cpp
QIndexTreeWidget.cpp
QHistoryLineEdit.cpp
QEditDelegate.cpp
QHContainerWidget.cpp
QImageViewer.cpp
QAnsiTextEdit.cpp
SeerUtl.cpp
SeerArgumentsDialog.cpp
SeerBreakpointCreateDialog.cpp
SeerMessagesBrowserWidget.cpp
SeerBreakpointsBrowserWidget.cpp
SeerCatchpointCreateDialog.cpp
SeerCatchpointsBrowserWidget.cpp
SeerPrintpointCreateDialog.cpp
SeerPrintpointsBrowserWidget.cpp
SeerCheckpointsBrowserWidget.cpp
SeerCommandLogsWidget.cpp
SeerSeerLogWidget.cpp
SeerConsoleWidget.cpp
SeerConfigDialog.cpp
SeerGdbConfigPage.cpp
SeerRRConfigPage.cpp
SeerEditorConfigPage.cpp
SeerSourceConfigPage.cpp
SeerAssemblyConfigPage.cpp
SeerSeerConfigPage.cpp
SeerKeysConfigPage.cpp
SeerCloseSourceDialog.cpp
SeerDebugDialog.cpp
SeerEditorManagerWidget.cpp
SeerEditorWidgetSource.cpp
SeerEditorWidgetSourceAreas.cpp
SeerEditorWidgetAssembly.cpp
SeerEditorWidgetAssemblyAreas.cpp
SeerGdbWidget.cpp
SeerHexWidget.cpp
SeerAsmWidget.cpp
SeerArrayWidget.cpp
SeerMatrixWidget.cpp
SeerLogWidget.cpp
SeerMainWindow.cpp
SeerArrayVisualizerWidget.cpp
SeerMatrixVisualizerWidget.cpp
SeerMemoryVisualizerWidget.cpp
SeerStructVisualizerWidget.cpp
SeerVarVisualizerWidget.cpp
SeerImageVisualizerWidget.cpp
SeerRegisterValuesBrowserWidget.cpp
SeerRegisterEditValueDialog.cpp
SeerRegisterProfileDialog.cpp
SeerRegisterTreeWidgetItem.cpp
SeerSignalValuesBrowserWidget.cpp
SeerSignalProfileDialog.cpp
SeerSignalEditValueDialog.cpp
SeerRunStatusIndicator.cpp
SeerLibraryBrowserWidget.cpp
SeerSourceBrowserWidget.cpp
SeerFunctionBrowserWidget.cpp
SeerTypeBrowserWidget.cpp
SeerStaticBrowserWidget.cpp
SeerSkipBrowserWidget.cpp
SeerSkipCreateDialog.cpp
SeerSourceSymbolLibraryManagerWidget.cpp
SeerStackArgumentsBrowserWidget.cpp
SeerStackFramesBrowserWidget.cpp
SeerStackLocalsBrowserWidget.cpp
SeerStackDumpBrowserWidget.cpp
SeerStackDumpSettingsDialog.cpp
SeerStackManagerWidget.cpp
SeerThreadFramesBrowserWidget.cpp
SeerThreadIdsBrowserWidget.cpp
SeerThreadGroupsBrowserWidget.cpp
SeerAdaTasksBrowserWidget.cpp
SeerAdaExceptionsBrowserWidget.cpp
SeerThreadManagerWidget.cpp
SeerGdbLogWidget.cpp
SeerTildeLogWidget.cpp
SeerVariableLoggerBrowserWidget.cpp
SeerVariableManagerWidget.cpp
SeerVariableTrackerBrowserWidget.cpp
SeerWatchpointCreateDialog.cpp
SeerWatchpointsBrowserWidget.cpp
SeerSourceHighlighter.cpp
SeerAdaSourceHighlighter.cpp
SeerCppSourceHighlighter.cpp
SeerOdinSourceHighlighter.cpp
SeerRustSourceHighlighter.cpp
SeerAboutDialog.cpp
SeerSlashProcDialog.cpp
SeerHighlighterSettings.cpp
SeerKeySettings.cpp
SeerPlainTextEdit.cpp
SeerHelpPageDialog.cpp
SeerProgressIndicator.cpp
SeerMessagesDialog.cpp
SeerAssemblyPreferenceDialog.cpp
SeerHistoryLineEdit.cpp
SeerMacroEditorDialog.cpp
SeerMacroToolButton.cpp
seergdb.cpp
)
if(${QTVERSION} STREQUAL "QT6")
qt6_add_resources(SOURCE_FILES resource.qrc resources/qdarkstyle/dark/darkstyle.qrc resources/qdarkstyle/light/lightstyle.qrc)
elseif(${QTVERSION} STREQUAL "QT5")
qt5_add_resources(SOURCE_FILES resource.qrc resources/qdarkstyle/dark/darkstyle.qrc resources/qdarkstyle/light/lightstyle.qrc)
endif()
# Set non-Debug build as GUI application.
# Debug build remains consle application.
if(NOT CMAKE_BUILD_TYPE MATCHES Debug) #Release, RelWithDebInfo and MinSizeRel
if(WIN32) # Check if we are on Windows
set(SYSTEM_TYPE WIN32)
endif()
message("-- System type is " ${SYSTEM_TYPE})
endif()
# for Linux, BSD, Solaris, Minix
if(UNIX AND NOT APPLE)
add_compile_options(-Wall -Wextra -Wunused-result -pedantic) # -Werror -Wdeprecated-copy
endif()
add_definitions(-DQT_DISABLE_DEPRECATED_UP_TO=0x060300)
add_executable(${PROJECT_NAME} ${SYSTEM_TYPE} ${SOURCE_FILES})
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
if(${QTVERSION} STREQUAL "QT6")
target_link_libraries(${PROJECT_NAME} Qt6::Widgets Qt6::Gui Qt6::Core Qt6::PrintSupport Qt6::Charts Qt6::Svg Qt6::OpenGL)
elseif(${QTVERSION} STREQUAL "QT5")
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Gui Qt5::Core Qt5::PrintSupport Qt5::Charts)
endif()
# Handle gdb logout debugging. Turn CONFIG_SEER_GDB_LOGOUT=1 to enable gdb logout
# -DCONFIG_SEER_GDB_LOGOUT=1
if(NOT DEFINED CONFIG_SEER_GDB_LOGOUT)
set(CONFIG_SEER_GDB_LOGOUT 0)
endif()
target_compile_definitions(${PROJECT_NAME} PRIVATE
SEER_GDB_LOGOUT=${CONFIG_SEER_GDB_LOGOUT}
)
# Handle default gdb binary name and location.
# -DCONFIG_SEER_GDB_NAME=/app/bin/gdb
if(NOT DEFINED CONFIG_SEER_GDB_NAME)
set(CONFIG_SEER_GDB_NAME "/usr/bin/gdb")
endif()
target_compile_definitions(${PROJECT_NAME} PRIVATE
SEER_GDB_NAME=${CONFIG_SEER_GDB_NAME}
)
# Handle default gdb binary launcher (for flatpak, et al)
# -DCONFIG_SEER_GDB_LAUNCHER="flatpak-spawn --host"
if(NOT DEFINED CONFIG_SEER_GDB_LAUNCHER)
set(CONFIG_SEER_GDB_LAUNCHER "")
endif()
target_compile_definitions(${PROJECT_NAME} PRIVATE
SEER_GDB_LAUNCHER=${CONFIG_SEER_GDB_LAUNCHER}
)
# Install icons to standard XDG icon directories
# -DCONFIG_SEER_INSTALL_ICONS=1
if(CONFIG_SEER_INSTALL_ICONS)
message("-- Will install icons to system")
install(FILES "${CMAKE_SOURCE_DIR}/resources/icons/hicolor/32x32/seergdb.png" DESTINATION "share/icons/hicolor/32x32/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/icons/hicolor/64x64/seergdb.png" DESTINATION "share/icons/hicolor/64x64/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/icons/hicolor/128x128/seergdb.png" DESTINATION "share/icons/hicolor/128x128/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/icons/hicolor/256x256/seergdb.png" DESTINATION "share/icons/hicolor/256x256/apps")
endif()
# Install flathub icons to standard XDG icon directories
# -DCONFIG_SEER_INSTALL_FLATHUB_FILES=1
if(CONFIG_SEER_INSTALL_FLATHUB_FILES)
message("-- Will install flathub icons+files to system")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/icons/hicolor/32x32/io.github.epasveer.seer.png" DESTINATION "share/icons/hicolor/32x32/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/icons/hicolor/64x64/io.github.epasveer.seer.png" DESTINATION "share/icons/hicolor/64x64/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/icons/hicolor/128x128/io.github.epasveer.seer.png" DESTINATION "share/icons/hicolor/128x128/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/icons/hicolor/256x256/io.github.epasveer.seer.png" DESTINATION "share/icons/hicolor/256x256/apps")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/io.github.epasveer.seer.metainfo.xml" DESTINATION "share/metainfo")
install(FILES "${CMAKE_SOURCE_DIR}/resources/flathub/io.github.epasveer.seer.desktop" DESTINATION "share/applications")
endif()