mirror of
https://github.com/rizinorg/cutter.git
synced 2025-01-22 12:28:51 +00:00
556 lines
18 KiB
CMake
556 lines
18 KiB
CMake
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/CutterConfig.h.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/CutterConfig.h")
|
|
|
|
set(SOURCES
|
|
Main.cpp
|
|
core/Cutter.cpp
|
|
dialogs/EditStringDialog.cpp
|
|
dialogs/WriteCommandsDialogs.cpp
|
|
widgets/DisassemblerGraphView.cpp
|
|
widgets/OverviewView.cpp
|
|
common/RichTextPainter.cpp
|
|
dialogs/InitialOptionsDialog.cpp
|
|
dialogs/AboutDialog.cpp
|
|
dialogs/CommentsDialog.cpp
|
|
dialogs/EditInstructionDialog.cpp
|
|
dialogs/FlagDialog.cpp
|
|
dialogs/RemoteDebugDialog.cpp
|
|
dialogs/NativeDebugDialog.cpp
|
|
dialogs/XrefsDialog.cpp
|
|
core/MainWindow.cpp
|
|
common/Helpers.cpp
|
|
common/Highlighter.cpp
|
|
common/MdHighlighter.cpp
|
|
common/DirectionalComboBox.cpp
|
|
dialogs/preferences/AsmOptionsWidget.cpp
|
|
dialogs/NewFileDialog.cpp
|
|
common/AnalTask.cpp
|
|
widgets/CommentsWidget.cpp
|
|
widgets/ConsoleWidget.cpp
|
|
widgets/Dashboard.cpp
|
|
widgets/EntrypointWidget.cpp
|
|
widgets/ExportsWidget.cpp
|
|
widgets/FlagsWidget.cpp
|
|
widgets/FunctionsWidget.cpp
|
|
widgets/ImportsWidget.cpp
|
|
widgets/Omnibar.cpp
|
|
widgets/RelocsWidget.cpp
|
|
widgets/SectionsWidget.cpp
|
|
widgets/SegmentsWidget.cpp
|
|
widgets/StringsWidget.cpp
|
|
widgets/SymbolsWidget.cpp
|
|
menus/DisassemblyContextMenu.cpp
|
|
menus/DecompilerContextMenu.cpp
|
|
widgets/DisassemblyWidget.cpp
|
|
widgets/HexdumpWidget.cpp
|
|
common/Configuration.cpp
|
|
common/Colors.cpp
|
|
common/TempConfig.cpp
|
|
common/SvgIconEngine.cpp
|
|
common/SyntaxHighlighter.cpp
|
|
widgets/DecompilerWidget.cpp
|
|
widgets/VisualNavbar.cpp
|
|
widgets/GraphView.cpp
|
|
dialogs/preferences/PreferencesDialog.cpp
|
|
dialogs/preferences/AppearanceOptionsWidget.cpp
|
|
dialogs/preferences/GraphOptionsWidget.cpp
|
|
dialogs/preferences/PreferenceCategory.cpp
|
|
dialogs/preferences/InitializationFileEditor.cpp
|
|
widgets/QuickFilterView.cpp
|
|
widgets/ClassesWidget.cpp
|
|
widgets/ResourcesWidget.cpp
|
|
widgets/VTablesWidget.cpp
|
|
widgets/TypesWidget.cpp
|
|
widgets/HeadersWidget.cpp
|
|
widgets/SearchWidget.cpp
|
|
CutterApplication.cpp
|
|
dialogs/RizinPluginsDialog.cpp
|
|
widgets/CutterDockWidget.cpp
|
|
widgets/CutterTreeWidget.cpp
|
|
widgets/GraphWidget.cpp
|
|
widgets/OverviewWidget.cpp
|
|
common/JsonTreeItem.cpp
|
|
common/JsonModel.cpp
|
|
dialogs/VersionInfoDialog.cpp
|
|
widgets/ZignaturesWidget.cpp
|
|
common/AsyncTask.cpp
|
|
dialogs/AsyncTaskDialog.cpp
|
|
widgets/StackWidget.cpp
|
|
widgets/RegistersWidget.cpp
|
|
widgets/ThreadsWidget.cpp
|
|
widgets/ProcessesWidget.cpp
|
|
widgets/BacktraceWidget.cpp
|
|
dialogs/MapFileDialog.cpp
|
|
common/CommandTask.cpp
|
|
common/ProgressIndicator.cpp
|
|
common/RizinTask.cpp
|
|
dialogs/RizinTaskDialog.cpp
|
|
widgets/DebugActions.cpp
|
|
widgets/MemoryMapWidget.cpp
|
|
dialogs/preferences/DebugOptionsWidget.cpp
|
|
dialogs/preferences/PluginsOptionsWidget.cpp
|
|
widgets/BreakpointWidget.cpp
|
|
dialogs/BreakpointsDialog.cpp
|
|
dialogs/AttachProcDialog.cpp
|
|
widgets/RegisterRefsWidget.cpp
|
|
dialogs/SetToDataDialog.cpp
|
|
dialogs/EditVariablesDialog.cpp
|
|
dialogs/EditFunctionDialog.cpp
|
|
widgets/CutterTreeView.cpp
|
|
widgets/ComboQuickFilterView.cpp
|
|
dialogs/HexdumpRangeDialog.cpp
|
|
common/CutterSeekable.cpp
|
|
common/RefreshDeferrer.cpp
|
|
dialogs/WelcomeDialog.cpp
|
|
common/RunScriptTask.cpp
|
|
dialogs/EditMethodDialog.cpp
|
|
dialogs/TypesInteractionDialog.cpp
|
|
widgets/SdbWidget.cpp
|
|
plugins/PluginManager.cpp
|
|
common/BasicBlockHighlighter.cpp
|
|
common/BasicInstructionHighlighter.cpp
|
|
dialogs/LinkTypeDialog.cpp
|
|
widgets/ColorPicker.cpp
|
|
common/ColorThemeWorker.cpp
|
|
widgets/ColorThemeComboBox.cpp
|
|
widgets/ColorThemeListView.cpp
|
|
dialogs/preferences/ColorThemeEditDialog.cpp
|
|
common/UpdateWorker.cpp
|
|
widgets/MemoryDockWidget.cpp
|
|
common/BugReporting.cpp
|
|
common/HighDpiPixmap.cpp
|
|
widgets/GraphGridLayout.cpp
|
|
widgets/HexWidget.cpp
|
|
common/SelectionHighlight.cpp
|
|
common/Decompiler.cpp
|
|
menus/AddressableItemContextMenu.cpp
|
|
common/AddressableItemModel.cpp
|
|
widgets/ListDockWidget.cpp
|
|
dialogs/MultitypeFileSaveDialog.cpp
|
|
widgets/BoolToggleDelegate.cpp
|
|
common/IOModesController.cpp
|
|
common/SettingsUpgrade.cpp
|
|
dialogs/LayoutManager.cpp
|
|
common/CutterLayout.cpp
|
|
widgets/GraphHorizontalAdapter.cpp
|
|
common/ResourcePaths.cpp
|
|
widgets/CutterGraphView.cpp
|
|
widgets/SimpleTextGraphView.cpp
|
|
widgets/RizinGraphWidget.cpp
|
|
widgets/CallGraph.cpp
|
|
widgets/AddressableDockWidget.cpp
|
|
dialogs/preferences/AnalOptionsWidget.cpp
|
|
common/DecompilerHighlighter.cpp
|
|
)
|
|
set(HEADER_FILES
|
|
core/Cutter.h
|
|
core/CutterCommon.h
|
|
core/CutterDescriptions.h
|
|
dialogs/EditStringDialog.h
|
|
dialogs/WriteCommandsDialogs.h
|
|
widgets/DisassemblerGraphView.h
|
|
widgets/OverviewView.h
|
|
common/RichTextPainter.h
|
|
common/CachedFontMetrics.h
|
|
dialogs/AboutDialog.h
|
|
dialogs/preferences/AsmOptionsWidget.h
|
|
dialogs/CommentsDialog.h
|
|
dialogs/EditInstructionDialog.h
|
|
dialogs/FlagDialog.h
|
|
dialogs/RemoteDebugDialog.h
|
|
dialogs/NativeDebugDialog.h
|
|
dialogs/XrefsDialog.h
|
|
common/Helpers.h
|
|
core/MainWindow.h
|
|
common/Highlighter.h
|
|
common/MdHighlighter.h
|
|
common/DirectionalComboBox.h
|
|
dialogs/InitialOptionsDialog.h
|
|
dialogs/NewFileDialog.h
|
|
common/AnalTask.h
|
|
widgets/CommentsWidget.h
|
|
widgets/ConsoleWidget.h
|
|
widgets/Dashboard.h
|
|
widgets/EntrypointWidget.h
|
|
widgets/ExportsWidget.h
|
|
widgets/FlagsWidget.h
|
|
widgets/FunctionsWidget.h
|
|
widgets/ImportsWidget.h
|
|
widgets/Omnibar.h
|
|
widgets/RelocsWidget.h
|
|
widgets/SectionsWidget.h
|
|
widgets/SegmentsWidget.h
|
|
widgets/StringsWidget.h
|
|
widgets/SymbolsWidget.h
|
|
menus/DisassemblyContextMenu.h
|
|
menus/DecompilerContextMenu.h
|
|
widgets/DisassemblyWidget.h
|
|
widgets/HexdumpWidget.h
|
|
common/Configuration.h
|
|
common/Colors.h
|
|
common/TempConfig.h
|
|
common/SvgIconEngine.h
|
|
common/SyntaxHighlighter.h
|
|
widgets/DecompilerWidget.h
|
|
widgets/VisualNavbar.h
|
|
widgets/GraphView.h
|
|
dialogs/preferences/PreferencesDialog.h
|
|
dialogs/preferences/AppearanceOptionsWidget.h
|
|
dialogs/preferences/PreferenceCategory.h
|
|
dialogs/preferences/GraphOptionsWidget.h
|
|
dialogs/preferences/InitializationFileEditor.h
|
|
widgets/QuickFilterView.h
|
|
widgets/ClassesWidget.h
|
|
widgets/ResourcesWidget.h
|
|
CutterApplication.h
|
|
widgets/VTablesWidget.h
|
|
widgets/TypesWidget.h
|
|
widgets/HeadersWidget.h
|
|
widgets/SearchWidget.h
|
|
dialogs/RizinPluginsDialog.h
|
|
widgets/CutterDockWidget.h
|
|
widgets/CutterTreeWidget.h
|
|
widgets/GraphWidget.h
|
|
widgets/OverviewWidget.h
|
|
common/JsonTreeItem.h
|
|
common/JsonModel.h
|
|
dialogs/VersionInfoDialog.h
|
|
widgets/ZignaturesWidget.h
|
|
common/AsyncTask.h
|
|
dialogs/AsyncTaskDialog.h
|
|
widgets/StackWidget.h
|
|
widgets/RegistersWidget.h
|
|
widgets/ThreadsWidget.h
|
|
widgets/ProcessesWidget.h
|
|
widgets/BacktraceWidget.h
|
|
dialogs/MapFileDialog.h
|
|
common/StringsTask.h
|
|
common/FunctionsTask.h
|
|
common/CommandTask.h
|
|
common/ProgressIndicator.h
|
|
plugins/CutterPlugin.h
|
|
common/RizinTask.h
|
|
dialogs/RizinTaskDialog.h
|
|
widgets/DebugActions.h
|
|
widgets/MemoryMapWidget.h
|
|
dialogs/preferences/DebugOptionsWidget.h
|
|
dialogs/preferences/PluginsOptionsWidget.h
|
|
widgets/BreakpointWidget.h
|
|
dialogs/BreakpointsDialog.h
|
|
dialogs/AttachProcDialog.h
|
|
widgets/RegisterRefsWidget.h
|
|
dialogs/SetToDataDialog.h
|
|
common/InitialOptions.h
|
|
dialogs/EditVariablesDialog.h
|
|
dialogs/EditFunctionDialog.h
|
|
widgets/CutterTreeView.h
|
|
widgets/ComboQuickFilterView.h
|
|
dialogs/HexdumpRangeDialog.h
|
|
common/CutterSeekable.h
|
|
common/RefreshDeferrer.h
|
|
dialogs/WelcomeDialog.h
|
|
common/RunScriptTask.h
|
|
common/Json.h
|
|
dialogs/EditMethodDialog.h
|
|
common/CrashHandler.h
|
|
dialogs/TypesInteractionDialog.h
|
|
widgets/SdbWidget.h
|
|
plugins/PluginManager.h
|
|
common/BasicBlockHighlighter.h
|
|
common/BasicInstructionHighlighter.h
|
|
common/UpdateWorker.h
|
|
widgets/ColorPicker.h
|
|
common/ColorThemeWorker.h
|
|
widgets/ColorThemeComboBox.h
|
|
widgets/MemoryDockWidget.h
|
|
widgets/ColorThemeListView.h
|
|
dialogs/preferences/ColorThemeEditDialog.h
|
|
dialogs/LinkTypeDialog.h
|
|
common/BugReporting.h
|
|
common/HighDpiPixmap.h
|
|
widgets/GraphLayout.h
|
|
widgets/GraphGridLayout.h
|
|
widgets/HexWidget.h
|
|
common/SelectionHighlight.h
|
|
common/Decompiler.h
|
|
menus/AddressableItemContextMenu.h
|
|
common/AddressableItemModel.h
|
|
widgets/ListDockWidget.h
|
|
widgets/AddressableItemList.h
|
|
dialogs/MultitypeFileSaveDialog.h
|
|
widgets/BoolToggleDelegate.h
|
|
common/IOModesController.h
|
|
common/SettingsUpgrade.h
|
|
dialogs/LayoutManager.h
|
|
common/CutterLayout.h
|
|
common/BinaryTrees.h
|
|
common/LinkedListPool.h
|
|
widgets/GraphHorizontalAdapter.h
|
|
common/ResourcePaths.h
|
|
widgets/CutterGraphView.h
|
|
widgets/SimpleTextGraphView.h
|
|
widgets/RizinGraphWidget.h
|
|
widgets/CallGraph.h
|
|
widgets/AddressableDockWidget.h
|
|
dialogs/preferences/AnalOptionsWidget.h
|
|
common/DecompilerHighlighter.h
|
|
)
|
|
set(UI_FILES
|
|
dialogs/AboutDialog.ui
|
|
dialogs/EditStringDialog.ui
|
|
dialogs/Base64EnDecodedWriteDialog.ui
|
|
dialogs/DuplicateFromOffsetDialog.ui
|
|
dialogs/IncrementDecrementDialog.ui
|
|
dialogs/preferences/AsmOptionsWidget.ui
|
|
dialogs/CommentsDialog.ui
|
|
dialogs/EditInstructionDialog.ui
|
|
dialogs/FlagDialog.ui
|
|
dialogs/RemoteDebugDialog.ui
|
|
dialogs/NativeDebugDialog.ui
|
|
dialogs/XrefsDialog.ui
|
|
dialogs/NewFileDialog.ui
|
|
dialogs/InitialOptionsDialog.ui
|
|
dialogs/EditFunctionDialog.ui
|
|
core/MainWindow.ui
|
|
widgets/ConsoleWidget.ui
|
|
widgets/Dashboard.ui
|
|
widgets/EntrypointWidget.ui
|
|
widgets/FlagsWidget.ui
|
|
widgets/StringsWidget.ui
|
|
widgets/HexdumpWidget.ui
|
|
dialogs/preferences/PreferencesDialog.ui
|
|
dialogs/preferences/AppearanceOptionsWidget.ui
|
|
dialogs/preferences/GraphOptionsWidget.ui
|
|
dialogs/preferences/InitializationFileEditor.ui
|
|
widgets/QuickFilterView.ui
|
|
widgets/DecompilerWidget.ui
|
|
widgets/ClassesWidget.ui
|
|
widgets/VTablesWidget.ui
|
|
widgets/TypesWidget.ui
|
|
widgets/SearchWidget.ui
|
|
dialogs/RizinPluginsDialog.ui
|
|
dialogs/VersionInfoDialog.ui
|
|
widgets/ZignaturesWidget.ui
|
|
dialogs/AsyncTaskDialog.ui
|
|
dialogs/RizinTaskDialog.ui
|
|
widgets/StackWidget.ui
|
|
widgets/RegistersWidget.ui
|
|
widgets/ThreadsWidget.ui
|
|
widgets/ProcessesWidget.ui
|
|
widgets/BacktraceWidget.ui
|
|
dialogs/MapFileDialog.ui
|
|
dialogs/preferences/DebugOptionsWidget.ui
|
|
widgets/BreakpointWidget.ui
|
|
dialogs/BreakpointsDialog.ui
|
|
dialogs/AttachProcDialog.ui
|
|
widgets/RegisterRefsWidget.ui
|
|
dialogs/SetToDataDialog.ui
|
|
dialogs/EditVariablesDialog.ui
|
|
widgets/CutterTreeView.ui
|
|
widgets/ComboQuickFilterView.ui
|
|
dialogs/HexdumpRangeDialog.ui
|
|
dialogs/WelcomeDialog.ui
|
|
dialogs/EditMethodDialog.ui
|
|
dialogs/TypesInteractionDialog.ui
|
|
widgets/SdbWidget.ui
|
|
dialogs/LinkTypeDialog.ui
|
|
widgets/ColorPicker.ui
|
|
dialogs/preferences/ColorThemeEditDialog.ui
|
|
widgets/ListDockWidget.ui
|
|
dialogs/LayoutManager.ui
|
|
widgets/RizinGraphWidget.ui
|
|
dialogs/preferences/AnalOptionsWidget.ui
|
|
)
|
|
set(QRC_FILES
|
|
resources.qrc
|
|
themes/native/native.qrc
|
|
themes/qdarkstyle/dark.qrc
|
|
themes/midnight/midnight.qrc
|
|
themes/lightstyle/light.qrc
|
|
)
|
|
|
|
if (CUTTER_ENABLE_PYTHON)
|
|
list(APPEND SOURCES common/QtResImporter.cpp common/PythonManager.cpp common/PythonAPI.cpp)
|
|
list(APPEND HEADER_FILES common/QtResImporter.h common/PythonManager.h common/PythonAPI.h)
|
|
endif()
|
|
|
|
if(CUTTER_ENABLE_CRASH_REPORTS)
|
|
list(APPEND SOURCES common/CrashHandler.cpp)
|
|
endif()
|
|
|
|
if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
|
set(BINDINGS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bindings")
|
|
set(BINDINGS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/bindings")
|
|
|
|
configure_file("${BINDINGS_SRC_DIR}/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.xml" COPYONLY) # trigger reconfigure if file changes
|
|
|
|
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${BINDINGS_SRC_DIR}/src_list.py" cmake "${BINDINGS_BUILD_DIR}" OUTPUT_VARIABLE BINDINGS_SOURCE)
|
|
|
|
set_property(SOURCE ${BINDINGS_SOURCE} PROPERTY SKIP_AUTOGEN ON)
|
|
|
|
include_directories("${BINDINGS_BUILD_DIR}/CutterBindings")
|
|
|
|
set(SHIBOKEN_OPTIONS)
|
|
if (WIN32)
|
|
list(APPEND SHIBOKEN_OPTIONS --avoid-protected-hack)
|
|
endif()
|
|
|
|
add_custom_command(OUTPUT ${BINDINGS_SOURCE}
|
|
COMMAND Shiboken2::shiboken2 --project-file="${BINDINGS_BUILD_DIR}/bindings.txt" ${SHIBOKEN_OPTIONS} ${SHIBOKEN_EXTRA_OPTIONS}
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/bindings/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.txt"
|
|
IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR}/bindings/bindings.h"
|
|
COMMENT "Generating Python bindings with shiboken2")
|
|
else()
|
|
set(BINDINGS_SOURCE "")
|
|
endif()
|
|
|
|
|
|
if (TARGET Graphviz::GVC)
|
|
list(APPEND SOURCES widgets/GraphvizLayout.cpp)
|
|
list(APPEND HEADER_FILES widgets/GraphvizLayout.h)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set(PLATFORM_RESOURCES "img/cutter.rc")
|
|
else()
|
|
set(PLATFORM_RESOURCES "")
|
|
endif()
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
|
|
OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
add_definitions(-Wall -Wextra)
|
|
set_source_files_properties(${BINDINGS_SOURCE} PROPERTIES COMPILE_FLAGS -w)
|
|
endif()
|
|
|
|
|
|
add_executable(Cutter ${UI_FILES} ${QRC_FILES} ${PLATFORM_RESOURCES} ${SOURCES} ${HEADER_FILES} ${BINDINGS_SOURCE})
|
|
set_target_properties(Cutter PROPERTIES
|
|
OUTPUT_NAME cutter
|
|
RUNTIME_OUTPUT_DIRECTORY ..
|
|
PDB_OUTPUT_DIRECTORY ..
|
|
ENABLE_EXPORTS ON
|
|
CXX_VISIBILITY_PRESET hidden)
|
|
target_compile_definitions(Cutter PRIVATE CUTTER_SOURCE_BUILD)
|
|
|
|
set(CUTTER_INCLUDE_DIRECTORIES core widgets common plugins menus .)
|
|
foreach(_dir ${CUTTER_INCLUDE_DIRECTORIES})
|
|
target_include_directories(Cutter PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${_dir}>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cutter/${_dir}>
|
|
)
|
|
endforeach()
|
|
|
|
if (TARGET Graphviz::GVC)
|
|
target_link_libraries(Cutter PRIVATE Graphviz::GVC)
|
|
target_compile_definitions(Cutter PRIVATE CUTTER_ENABLE_GRAPHVIZ)
|
|
endif()
|
|
|
|
if(CUTTER_ENABLE_CRASH_REPORTS)
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(Cutter PRIVATE Threads::Threads)
|
|
|
|
add_definitions(-DCUTTER_ENABLE_CRASH_REPORTS)
|
|
if (NOT WIN32)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g ")
|
|
endif()
|
|
find_package(Breakpad REQUIRED)
|
|
target_link_libraries(Cutter PRIVATE Breakpad::client)
|
|
endif()
|
|
|
|
target_link_libraries(Cutter PUBLIC ${QT_PREFIX}::Core ${QT_PREFIX}::Widgets ${QT_PREFIX}::Gui PRIVATE ${QT_PREFIX}::Svg ${QT_PREFIX}::Network)
|
|
target_link_libraries(Cutter PUBLIC ${RIZIN_TARGET})
|
|
if(CUTTER_ENABLE_PYTHON)
|
|
if (WIN32)
|
|
# On windows some of the Python STABLE API functions are in seperate library
|
|
# which isn't added by CMake.
|
|
foreach(_PYTHON_LIBRARY ${PYTHON_LIBRARIES})
|
|
# Skip extra "optimized" and "debug" values that are only meant for passing to target_link_libraries()
|
|
if((NOT _PYTHON_LIBRARY STREQUAL "optimized") AND (NOT _PYTHON_LIBRARY STREQUAL "debug"))
|
|
get_filename_component(_PYTHON_LIB_DIR ${_PYTHON_LIBRARY} DIRECTORY)
|
|
message(STATUS "Add extra library dir for Python: ${_PYTHON_LIB_DIR}")
|
|
target_link_directories(Cutter PRIVATE ${_PYTHON_LIB_DIR})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
target_link_libraries(Cutter PRIVATE ${PYTHON_LIBRARIES})
|
|
if(CUTTER_ENABLE_PYTHON_BINDINGS)
|
|
target_link_libraries(Cutter PRIVATE Shiboken2::libshiboken PySide2::pyside2)
|
|
|
|
get_target_property(RAW_BINDINGS_INCLUDE_DIRS Cutter INCLUDE_DIRECTORIES)
|
|
set(BINDINGS_INCLUDE_DIRS "")
|
|
foreach(_dir ${RAW_BINDINGS_INCLUDE_DIRS})
|
|
string(REGEX REPLACE "\\$<BUILD_INTERFACE:(.*)>" "\\1" _dir ${_dir})
|
|
string(REGEX REPLACE "\\$<INSTALL_INTERFACE:(.*)>" "" _dir ${_dir})
|
|
if (NOT "${_dir}" STREQUAL "")
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${_dir}")
|
|
endif()
|
|
endforeach()
|
|
|
|
if(APPLE AND _qt5Core_install_prefix)
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${_qt5Core_install_prefix}/include")
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${_qt5Core_install_prefix}/include/QtCore")
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${_qt5Core_install_prefix}/include/QtGui")
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${_qt5Core_install_prefix}/include/QtWidgets")
|
|
endif()
|
|
list(APPEND BINDINGS_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS})
|
|
list(APPEND BINDINGS_INCLUDE_DIRS ${Rizin_INCLUDE_DIRS})
|
|
list(APPEND BINDINGS_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
if (NOT WIN32)
|
|
string(REPLACE ";" ":" BINDINGS_INCLUDE_DIRS "${BINDINGS_INCLUDE_DIRS}")
|
|
endif()
|
|
|
|
configure_file("${BINDINGS_SRC_DIR}/bindings.txt.in" "${BINDINGS_BUILD_DIR}/bindings.txt")
|
|
add_compile_definitions(WIN32_LEAN_AND_MEAN)
|
|
endif()
|
|
endif()
|
|
|
|
if(TARGET KF5::SyntaxHighlighting)
|
|
target_link_libraries(Cutter PRIVATE KF5::SyntaxHighlighting)
|
|
target_compile_definitions(Cutter PRIVATE CUTTER_ENABLE_KSYNTAXHIGHLIGHTING)
|
|
endif()
|
|
|
|
if (CUTTER_APPIMAGE_BUILD)
|
|
target_compile_definitions(Cutter PRIVATE APPIMAGE)
|
|
endif()
|
|
|
|
if (CUTTER_PACKAGE_JSDEC)
|
|
target_compile_definitions(Cutter PRIVATE CUTTER_BUNDLE_JSDEC)
|
|
endif()
|
|
|
|
if(APPLE AND CUTTER_ENABLE_PACKAGING AND CUTTER_USE_BUNDLED_RIZIN)
|
|
target_compile_definitions(Cutter PRIVATE MACOS_RZ_BUNDLED)
|
|
endif()
|
|
|
|
include(Translations)
|
|
|
|
# Install files
|
|
install(TARGETS Cutter
|
|
EXPORT CutterTargets
|
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|
BUNDLE DESTINATION "." # needs to be tested
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Devel
|
|
)
|
|
install(EXPORT CutterTargets
|
|
NAMESPACE Cutter::
|
|
DESTINATION "${ConfigPackageLocation}"
|
|
COMPONENT Devel)
|
|
install(FILES
|
|
../cmake/CutterConfig.cmake
|
|
DESTINATION ${ConfigPackageLocation}
|
|
COMPONENT Devel
|
|
)
|
|
foreach(_file ${HEADER_FILES})
|
|
# Can't use target PUBLIC_HEADER option for installing due to multiple directories
|
|
get_filename_component(_header_dir "${_file}" DIRECTORY)
|
|
install (FILES "${_file}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/cutter/${_header_dir}" COMPONENT Devel)
|
|
endforeach()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
install (FILES "img/cutter.svg"
|
|
DESTINATION "share/icons/hicolor/scalable/apps/")
|
|
install(FILES "re.rizin.cutter.desktop"
|
|
DESTINATION "share/applications"
|
|
COMPONENT Devel)
|
|
endif()
|