mirror of
https://github.com/transmission/transmission
synced 2024-12-23 08:13:27 +00:00
586cff9506
* Add compat operator* for RefPtr * Rename `*_tree_view_*` button handling helpers to `*_item_view_*` * Move torrent item colors to CSS * Switch to list view for torrents list (GTK 4) * Bump Fedora image to 39 (current rawhide) for GTK 4.11 Enable deprecations as there're lots of them in 4.11 and I'm not keen on fixing them all right now. Disable warnings as errors due to -Warray-bounds issue somewhere in libfmt.
252 lines
6.6 KiB
CMake
252 lines
6.6 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
|
|
DynamicPropertyStore.h
|
|
FaviconCache.cc
|
|
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
|
|
Percents.cc
|
|
Percents.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)
|
|
|
|
tr_allow_compile_if(
|
|
[=[[GTK_VERSION EQUAL 3]]=]
|
|
TorrentCellRenderer.cc)
|
|
|
|
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/TorrentListItemCompact.ui
|
|
ui/gtk4/TorrentListItemFull.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"
|
|
$<$<BOOL:${ENABLE_UTP}>:WITH_UTP>)
|
|
|
|
if(NOT ENABLE_DEPRECATED)
|
|
target_compile_definitions(${TR_NAME}-gtk
|
|
PRIVATE
|
|
G_DISABLE_DEPRECATED
|
|
GDK_PIXBUF_DISABLE_DEPRECATED
|
|
GDK_DISABLE_DEPRECATED
|
|
GTK_DISABLE_DEPRECATED
|
|
PANGO_DISABLE_DEPRECATED
|
|
GDKMM_DISABLE_DEPRECATED
|
|
GIOMM_DISABLE_DEPRECATED
|
|
GLIBMM_DISABLE_DEPRECATED
|
|
GTKMM_DISABLE_DEPRECATED
|
|
PANGOMM_DISABLE_DEPRECATED
|
|
SIGCXX_DISABLE_DEPRECATED)
|
|
endif()
|
|
|
|
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()
|