mirror of
https://github.com/transmission/transmission
synced 2024-12-30 19:46:56 +00:00
fa091495d6
* Refactor sorting and filtering compatibility code Factor out parts of `TorrentFilter` and `TorrentSorter` classes into reusable `FilterBase<>` and `SorterBase<>` templates. Factor out filter and sort models setup from `FilterBar` and `Session` classes into reusable `FilterListModel<>` and `SortListModel<>` templates. * Remove unused lambda capture (Clang build failure)
242 lines
6.4 KiB
CMake
242 lines
6.4 KiB
CMake
find_program(APPSTREAM appstreamcli)
|
|
|
|
add_executable(${TR_NAME}-gtk WIN32)
|
|
|
|
target_sources(${TR_NAME}-gtk
|
|
PRIVATE
|
|
Actions.cc
|
|
Actions.h
|
|
Application.cc
|
|
Application.h
|
|
DetailsDialog.cc
|
|
DetailsDialog.h
|
|
Dialogs.cc
|
|
Dialogs.h
|
|
FaviconCache.cc
|
|
FaviconCache.h
|
|
FileList.cc
|
|
FileList.h
|
|
FilterBar.cc
|
|
FilterBar.h
|
|
FilterBase.h
|
|
FilterBase.hh
|
|
FilterListModel.h
|
|
FilterListModel.hh
|
|
Flags.h
|
|
FreeSpaceLabel.cc
|
|
FreeSpaceLabel.h
|
|
GtkCompat.h
|
|
HigWorkarea.h
|
|
IconCache.cc
|
|
IconCache.h
|
|
ListModelAdapter.cc
|
|
ListModelAdapter.h
|
|
main.cc
|
|
MainWindow.cc
|
|
MainWindow.h
|
|
MakeDialog.cc
|
|
MakeDialog.h
|
|
MessageLogWindow.cc
|
|
MessageLogWindow.h
|
|
Notify.cc
|
|
Notify.h
|
|
OptionsDialog.cc
|
|
OptionsDialog.h
|
|
PathButton.cc
|
|
PathButton.h
|
|
Prefs.cc
|
|
Prefs.h
|
|
PrefsDialog.cc
|
|
PrefsDialog.h
|
|
RelocateDialog.cc
|
|
RelocateDialog.h
|
|
Session.cc
|
|
Session.h
|
|
SorterBase.h
|
|
SorterBase.hh
|
|
SortListModel.h
|
|
SortListModel.hh
|
|
StatsDialog.cc
|
|
StatsDialog.h
|
|
SystemTrayIcon.cc
|
|
SystemTrayIcon.h
|
|
Torrent.cc
|
|
Torrent.h
|
|
TorrentCellRenderer.cc
|
|
TorrentCellRenderer.h
|
|
TorrentFilter.cc
|
|
TorrentFilter.h
|
|
TorrentSorter.cc
|
|
TorrentSorter.h
|
|
Utils.cc
|
|
Utils.h)
|
|
|
|
target_sources(${TR_NAME}-gtk
|
|
PRIVATE
|
|
ui/gtk3/AddTrackerDialog.ui
|
|
ui/gtk3/DetailsDialog.ui
|
|
ui/gtk3/EditTrackersDialog.ui
|
|
ui/gtk3/FilterBar.ui
|
|
ui/gtk3/MainWindow.ui
|
|
ui/gtk3/MakeDialog.ui
|
|
ui/gtk3/MakeProgressDialog.ui
|
|
ui/gtk3/MessageLogWindow.ui
|
|
ui/gtk3/OptionsDialog.ui
|
|
ui/gtk3/PrefsDialog.ui
|
|
ui/gtk3/RelocateDialog.ui
|
|
ui/gtk3/StatsDialog.ui
|
|
ui/gtk3/TorrentUrlChooserDialog.ui)
|
|
|
|
source_group(Ui/GTK3
|
|
REGULAR_EXPRESSION [[ui/gtk3/.*\.ui$]])
|
|
|
|
target_sources(${TR_NAME}-gtk
|
|
PRIVATE
|
|
ui/gtk4/AddTrackerDialog.ui
|
|
ui/gtk4/DetailsDialog.ui
|
|
ui/gtk4/EditTrackersDialog.ui
|
|
ui/gtk4/FilterBar.ui
|
|
ui/gtk4/MainWindow.ui
|
|
ui/gtk4/MakeDialog.ui
|
|
ui/gtk4/MakeProgressDialog.ui
|
|
ui/gtk4/MessageLogWindow.ui
|
|
ui/gtk4/OptionsDialog.ui
|
|
ui/gtk4/PrefsDialog.ui
|
|
ui/gtk4/RelocateDialog.ui
|
|
ui/gtk4/StatsDialog.ui
|
|
ui/gtk4/TorrentUrlChooserDialog.ui)
|
|
|
|
source_group(Ui/GTK4
|
|
REGULAR_EXPRESSION [[ui/gtk4/.*\.ui$]])
|
|
|
|
if(WITH_APPINDICATOR)
|
|
set_property(
|
|
SOURCE SystemTrayIcon.cc
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS
|
|
HAVE_APPINDICATOR)
|
|
if(APPINDICATOR_IS_AYATANA)
|
|
set_property(
|
|
SOURCE SystemTrayIcon.cc
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS
|
|
APPINDICATOR_IS_AYATANA)
|
|
endif()
|
|
endif()
|
|
|
|
if(GTK_VERSION EQUAL 4)
|
|
set(UI_SUBDIR ui/gtk4)
|
|
else()
|
|
set(UI_SUBDIR ui/gtk3)
|
|
endif()
|
|
|
|
tr_target_glib_resources(${TR_NAME}-gtk
|
|
transmission.gresource.xml
|
|
${UI_SUBDIR}/transmission-ui.gresource.xml)
|
|
|
|
if(ENABLE_NLS)
|
|
set(DESKTOP_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TR_NAME}-gtk.desktop")
|
|
tr_gettext_msgfmt(${TR_NAME}-gtk
|
|
${DESKTOP_FILE}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/transmission-gtk.desktop.in)
|
|
target_sources(${TR_NAME}-gtk
|
|
PRIVATE
|
|
${DESKTOP_FILE})
|
|
|
|
set(METAINFO_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TR_NAME}-gtk.metainfo.xml")
|
|
tr_gettext_msgfmt(${TR_NAME}-gtk
|
|
${METAINFO_FILE}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in)
|
|
target_sources(${TR_NAME}-gtk
|
|
PRIVATE
|
|
${METAINFO_FILE})
|
|
endif()
|
|
|
|
target_compile_definitions(${TR_NAME}-gtk
|
|
PRIVATE
|
|
TRANSMISSIONLOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
|
|
GETTEXT_PACKAGE="${TR_NAME}-gtk"
|
|
G_DISABLE_DEPRECATED
|
|
GDK_PIXBUF_DISABLE_DEPRECATED
|
|
GDK_DISABLE_DEPRECATED
|
|
GTK_DISABLE_DEPRECATED
|
|
PANGO_DISABLE_DEPRECATED
|
|
# FIXME: these break libnotify's headers
|
|
# G_DISABLE_SINGLE_INCLUDES
|
|
# GTK_DISABLE_SINGLE_INCLUDES
|
|
GDKMM_DISABLE_DEPRECATED
|
|
GIOMM_DISABLE_DEPRECATED
|
|
GLIBMM_DISABLE_DEPRECATED
|
|
GTKMM_DISABLE_DEPRECATED
|
|
PANGOMM_DISABLE_DEPRECATED
|
|
SIGCXX_DISABLE_DEPRECATED
|
|
$<$<BOOL:${ENABLE_UTP}>:WITH_UTP>)
|
|
|
|
target_compile_options(${TR_NAME}-gtk
|
|
PRIVATE
|
|
$<$<BOOL:${ENABLE_WERROR}>:$<IF:$<CXX_COMPILER_ID:MSVC>,/WX,-Werror>>
|
|
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-exit-time-destructors>)
|
|
|
|
target_include_directories(${TR_NAME}-gtk
|
|
PRIVATE
|
|
${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
target_include_directories(${TR_NAME}-gtk SYSTEM
|
|
PRIVATE
|
|
$<$<BOOL:${WITH_APPINDICATOR}>:${APPINDICATOR_INCLUDE_DIRS}>)
|
|
|
|
target_link_libraries(${TR_NAME}-gtk
|
|
PRIVATE
|
|
${TR_NAME}
|
|
transmission::gtk_impl
|
|
fmt::fmt-header-only
|
|
$<$<BOOL:${WITH_APPINDICATOR}>:${APPINDICATOR_LIBRARIES}>)
|
|
|
|
if(MSVC)
|
|
tr_append_target_property(${TR_NAME}-gtk LINK_FLAGS "/ENTRY:mainCRTStartup")
|
|
endif()
|
|
|
|
tr_win32_app_info(${TR_NAME}-gtk
|
|
"Transmission GTK+ Client"
|
|
"${TR_NAME}-gtk"
|
|
"${TR_NAME}-gtk.exe"
|
|
"${TR_NAME}.ico")
|
|
|
|
install(
|
|
TARGETS ${TR_NAME}-gtk
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
|
|
set(PUBLIC_ICONS
|
|
hicolor_apps_scalable_transmission.svg
|
|
hicolor_apps_scalable_transmission-devel.svg
|
|
hicolor_apps_symbolic_transmission-symbolic.svg)
|
|
|
|
set(ICON_NAME_REGEX "^([^_]+)_([^_]+)_([^_]+)_(.+)$")
|
|
foreach(ICON ${PUBLIC_ICONS})
|
|
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\1/\\3/\\2" ICON_DIR ${ICON})
|
|
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\4" ICON_NAME ${ICON})
|
|
install(
|
|
FILES icons/${ICON}
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/${ICON_DIR}/
|
|
RENAME ${ICON_NAME})
|
|
endforeach()
|
|
|
|
if(INSTALL_DOC)
|
|
install(
|
|
FILES ${TR_NAME}-gtk.1
|
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
|
endif()
|
|
|
|
if(ENABLE_NLS)
|
|
install(
|
|
FILES ${DESKTOP_FILE}
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
|
install(
|
|
FILES ${METAINFO_FILE}
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
|
else()
|
|
install(
|
|
FILES transmission-gtk.desktop.in
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
|
|
RENAME ${TR_NAME}-gtk.desktop)
|
|
endif()
|