Fix some issues causing XFCE to be incorrectly enabled if GTK2 is missing.

BUILD_XFCE is an option; BUILD_GTK2 is not.

We should probably get rid of BUILD_GTK2 entirely, since I'm not planning
on adding support for GNOME 2 Nautilus anytime soon.

Also, don't attempt to build rom-properties-glib if none of the GTK UI
frontends are being built.

Fixes CMake issues when building on KDE Neon. (KF6 testing)
This commit is contained in:
David Korth 2023-08-04 21:54:03 -04:00
parent ef20c58260
commit 16554a91aa
4 changed files with 37 additions and 28 deletions

View File

@ -167,10 +167,10 @@ ENDIF(BUILD_KDE4)
IF(BUILD_KF5) IF(BUILD_KF5)
SET(UI_FRONTENDS "${UI_FRONTENDS} KF5") SET(UI_FRONTENDS "${UI_FRONTENDS} KF5")
ENDIF(BUILD_KF5) ENDIF(BUILD_KF5)
IF(BUILD_GTK2) IF(BUILD_XFCE)
# NOTE: The GTK+ 2.x plugin is XFCE only right now. # NOTE: The GTK+ 2.x plugin is XFCE only right now.
SET(UI_FRONTENDS "${UI_FRONTENDS} XFCE") SET(UI_FRONTENDS "${UI_FRONTENDS} XFCE")
ENDIF(BUILD_GTK2) ENDIF(BUILD_XFCE)
IF(BUILD_GTK3) IF(BUILD_GTK3)
SET(UI_FRONTENDS "${UI_FRONTENDS} GTK3") SET(UI_FRONTENDS "${UI_FRONTENDS} GTK3")
ENDIF(BUILD_GTK3) ENDIF(BUILD_GTK3)

View File

@ -26,7 +26,7 @@ IF(UNIX AND NOT APPLE)
OPTION_UI(KDE4 "Build the KDE4 plugin.") OPTION_UI(KDE4 "Build the KDE4 plugin.")
OPTION_UI(KF5 "Build the KDE Frameworks 5 plugin.") OPTION_UI(KF5 "Build the KDE Frameworks 5 plugin.")
#OPTION_UI(KF6 "Build the KDE Frameworks 6 plugin. (EXPERIMENTAL)") # NOTE: Only enable if debugging! #OPTION_UI(KF6 "Build the KDE Frameworks 6 plugin. (EXPERIMENTAL)") # NOTE: Only enable if debugging!
OPTION_UI(XFCE "Build the XFCE (GTK+ 2.x) plugin.") OPTION_UI(XFCE "Build the XFCE (GTK+ 2.x) plugin. (Thunar 1.7 and earlier)")
OPTION_UI(GTK3 "Build the GTK+ 3.x plugin.") OPTION_UI(GTK3 "Build the GTK+ 3.x plugin.")
OPTION_UI(GTK4 "Build the GTK 4.x plugin. (EXPERIMENTAL)") OPTION_UI(GTK4 "Build the GTK 4.x plugin. (EXPERIMENTAL)")

View File

@ -184,7 +184,9 @@ IF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
FIND_PACKAGE(GdkPixbuf2) FIND_PACKAGE(GdkPixbuf2)
IF(NOT GdkPixbuf2_FOUND) IF(NOT GdkPixbuf2_FOUND)
# Cannot build GTK2 frontends. # Cannot build GTK2 frontends.
SET(BUILD_GTK2 OFF CACHE INTERNAL "Build the GTK+ 2.x plugin." FORCE) SET(BUILD_GTK2 OFF)
SET(BUILD_GTK2 OFF PARENT_SCOPE)
SET(BUILD_XFCE OFF CACHE INTERNAL "Build the XFCE (GTK+ 2.x) plugin." FORCE)
ENDIF(NOT GdkPixbuf2_FOUND) ENDIF(NOT GdkPixbuf2_FOUND)
FIND_PACKAGE(Cairo) FIND_PACKAGE(Cairo)
IF(NOT Cairo_FOUND) IF(NOT Cairo_FOUND)
@ -194,7 +196,9 @@ IF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
ENDIF(NOT Cairo_FOUND) ENDIF(NOT Cairo_FOUND)
ELSE(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND) ELSE(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
# Cannot build any GTK+ frontends. # Cannot build any GTK+ frontends.
SET(BUILD_GTK2 OFF CACHE INTERNAL "Build the GTK+ 2.x plugin." FORCE) SET(BUILD_GTK2 OFF)
SET(BUILD_GTK2 OFF PARENT_SCOPE)
SET(BUILD_XFCE OFF CACHE INTERNAL "Build the XFCE (GTK+ 2.x) plugin." FORCE)
SET(BUILD_GTK3 OFF CACHE INTERNAL "Build the GTK+ 3.x plugin." FORCE) SET(BUILD_GTK3 OFF CACHE INTERNAL "Build the GTK+ 3.x plugin." FORCE)
SET(BUILD_GTK4 OFF CACHE INTERNAL "Build the GTK 4.x plugin." FORCE) SET(BUILD_GTK4 OFF CACHE INTERNAL "Build the GTK 4.x plugin." FORCE)
ENDIF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND) ENDIF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
@ -226,6 +230,7 @@ ENDIF(GSound_FOUND)
# Write the config.h file. # Write the config.h file.
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.gtk.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.gtk.h") CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.gtk.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.gtk.h")
IF(BUILD_GTK2 OR BUILD_GTK3 OR BUILD_GTK4)
# GLib common library # GLib common library
ADD_LIBRARY(rom-properties-glib STATIC ADD_LIBRARY(rom-properties-glib STATIC
${${PROJECT_NAME}_GLib_SRCS} ${${PROJECT_NAME}_GLib_SRCS}
@ -241,6 +246,7 @@ TARGET_INCLUDE_DIRECTORIES(rom-properties-glib
TARGET_LINK_LIBRARIES(rom-properties-glib PUBLIC glibresources) TARGET_LINK_LIBRARIES(rom-properties-glib PUBLIC glibresources)
TARGET_LINK_LIBRARIES(rom-properties-glib PUBLIC GLib2::gio-unix GLib2::gio GLib2::gobject GLib2::glib) TARGET_LINK_LIBRARIES(rom-properties-glib PUBLIC GLib2::gio-unix GLib2::gio GLib2::gobject GLib2::glib)
TARGET_LINK_LIBRARIES(rom-properties-glib PRIVATE romdata) # for config.librptext.h TARGET_LINK_LIBRARIES(rom-properties-glib PRIVATE romdata) # for config.librptext.h
ENDIF(BUILD_GTK2 OR BUILD_GTK3 OR BUILD_GTK4)
# Unix: Add -fpic/-fPIC in order to use this static library in plugins. # Unix: Add -fpic/-fPIC in order to use this static library in plugins.
# NOTE: This will be propagated to subprojects. # NOTE: This will be propagated to subprojects.
@ -250,15 +256,16 @@ IF(UNIX AND NOT APPLE)
ENDIF(UNIX AND NOT APPLE) ENDIF(UNIX AND NOT APPLE)
# Build GTK+ 2.x frontends. # Build GTK+ 2.x frontends.
IF(BUILD_GTK2) IF(BUILD_XFCE)
# GTK2 minimum is 2.18.0. (gtk_widget_set_visible) # GTK2 minimum is 2.18.0. (gtk_widget_set_visible)
FIND_PACKAGE(GTK2 2.18.0 ${REQUIRE_GTK2} COMPONENTS gtk) FIND_PACKAGE(GTK2 2.18.0 ${REQUIRE_GTK2} COMPONENTS gtk)
IF(GTK2_FOUND) IF(GTK2_FOUND)
ADD_SUBDIRECTORY(xfce) ADD_SUBDIRECTORY(xfce)
ELSE(GTK2_FOUND) ELSE(GTK2_FOUND)
SET(BUILD_GTK2 OFF CACHE INTERNAL "Build the GTK+ 2.x plugin." FORCE) SET(BUILD_GTK2 OFF PARENT_SCOPE)
SET(BUILD_XFCE OFF CACHE INTERNAL "Build the GTK+ 2.x plugin." FORCE)
ENDIF(GTK2_FOUND) ENDIF(GTK2_FOUND)
ENDIF(BUILD_GTK2) ENDIF(BUILD_XFCE)
# Build GTK+ 3.x frontends. # Build GTK+ 3.x frontends.
IF(BUILD_GTK3) IF(BUILD_GTK3)

View File

@ -38,7 +38,9 @@ IF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND AND GdkPixbuf
ELSE() ELSE()
# GTK+ 2.x (or required dependencies) were not found. # GTK+ 2.x (or required dependencies) were not found.
# Disable the XFCE frontend. # Disable the XFCE frontend.
SET(BUILD_GTK2 OFF CACHE INTERNAL "Build the XFCE (GTK+ 2.x) plugin. (Thunar 1.7 and earlier)" FORCE) SET(BUILD_GTK2 OFF)
SET(BUILD_GTK2 OFF PARENT_SCOPE)
SET(BUILD_XFCE OFF CACHE INTERNAL "Build the XFCE (GTK+ 2.x) plugin. (Thunar 1.7 and earlier)" FORCE)
ENDIF() ENDIF()
# Ensure we don't use functions not available in GLib 2.34. # Ensure we don't use functions not available in GLib 2.34.
@ -110,7 +112,7 @@ IF(HAVE_GSOUND OR (HAVE_LIBCANBERRA AND HAVE_LIBCANBERRA_GTK2))
SET(${PROJECT_NAME}_H ${${PROJECT_NAME}_H} ../MessageSound.hpp) SET(${PROJECT_NAME}_H ${${PROJECT_NAME}_H} ../MessageSound.hpp)
ENDIF(HAVE_GSOUND OR (HAVE_LIBCANBERRA AND HAVE_LIBCANBERRA_GTK2)) ENDIF(HAVE_GSOUND OR (HAVE_LIBCANBERRA AND HAVE_LIBCANBERRA_GTK2))
IF(BUILD_GTK2) IF(BUILD_XFCE)
ADD_LIBRARY(${PROJECT_NAME} MODULE ${${PROJECT_NAME}_SRCS} ${${PROJECT_NAME}_H}) ADD_LIBRARY(${PROJECT_NAME} MODULE ${${PROJECT_NAME}_SRCS} ${${PROJECT_NAME}_H})
IF(ENABLE_PCH) IF(ENABLE_PCH)
TARGET_PRECOMPILE_HEADERS(${PROJECT_NAME} PRIVATE TARGET_PRECOMPILE_HEADERS(${PROJECT_NAME} PRIVATE
@ -152,13 +154,13 @@ IF(BUILD_GTK2)
# (Requires removing the "-D" switches.) # (Requires removing the "-D" switches.)
ADD_DEFINITIONS(${GTK2_DEFINITIONS}) ADD_DEFINITIONS(${GTK2_DEFINITIONS})
TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE RP_UI_XFCE) TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE RP_UI_XFCE)
ENDIF(BUILD_GTK2) ENDIF(BUILD_XFCE)
####################### #######################
# Install the plugin. # # Install the plugin. #
####################### #######################
IF(BUILD_GTK2) IF(BUILD_XFCE)
# FIXME: ${ThunarX2_EXTENSIONS_DIR} always uses the system prefix. # FIXME: ${ThunarX2_EXTENSIONS_DIR} always uses the system prefix.
# This should be adjusted to ${CMAKE_INSTALL_PREFIX}. # This should be adjusted to ${CMAKE_INSTALL_PREFIX}.
INSTALL(TARGETS ${PROJECT_NAME} INSTALL(TARGETS ${PROJECT_NAME}
@ -177,4 +179,4 @@ IF(BUILD_GTK2)
) )
ENDIF(DEBUG_FILENAME) ENDIF(DEBUG_FILENAME)
ENDIF(INSTALL_DEBUG) ENDIF(INSTALL_DEBUG)
ENDIF(BUILD_GTK2) ENDIF(BUILD_XFCE)