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)
SET(UI_FRONTENDS "${UI_FRONTENDS} KF5")
ENDIF(BUILD_KF5)
IF(BUILD_GTK2)
IF(BUILD_XFCE)
# NOTE: The GTK+ 2.x plugin is XFCE only right now.
SET(UI_FRONTENDS "${UI_FRONTENDS} XFCE")
ENDIF(BUILD_GTK2)
ENDIF(BUILD_XFCE)
IF(BUILD_GTK3)
SET(UI_FRONTENDS "${UI_FRONTENDS} GTK3")
ENDIF(BUILD_GTK3)

View File

@ -26,7 +26,7 @@ IF(UNIX AND NOT APPLE)
OPTION_UI(KDE4 "Build the KDE4 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(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(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)
IF(NOT GdkPixbuf2_FOUND)
# 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)
FIND_PACKAGE(Cairo)
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)
ELSE(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
# 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_GTK4 OFF CACHE INTERNAL "Build the GTK 4.x plugin." FORCE)
ENDIF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND)
@ -226,21 +230,23 @@ ENDIF(GSound_FOUND)
# Write the config.h file.
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.gtk.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.gtk.h")
# GLib common library
ADD_LIBRARY(rom-properties-glib STATIC
${${PROJECT_NAME}_GLib_SRCS}
${${PROJECT_NAME}_GLib_H}
)
SET_TARGET_PROPERTIES(rom-properties-glib PROPERTIES EXCLUDE_FROM_ALL TRUE)
TARGET_INCLUDE_DIRECTORIES(rom-properties-glib
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> # gtk
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> # gtk
PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src> # src
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src> # src
)
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 PRIVATE romdata) # for config.librptext.h
IF(BUILD_GTK2 OR BUILD_GTK3 OR BUILD_GTK4)
# GLib common library
ADD_LIBRARY(rom-properties-glib STATIC
${${PROJECT_NAME}_GLib_SRCS}
${${PROJECT_NAME}_GLib_H}
)
SET_TARGET_PROPERTIES(rom-properties-glib PROPERTIES EXCLUDE_FROM_ALL TRUE)
TARGET_INCLUDE_DIRECTORIES(rom-properties-glib
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> # gtk
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> # gtk
PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src> # src
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src> # src
)
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 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.
# NOTE: This will be propagated to subprojects.
@ -250,15 +256,16 @@ IF(UNIX AND NOT APPLE)
ENDIF(UNIX AND NOT APPLE)
# Build GTK+ 2.x frontends.
IF(BUILD_GTK2)
IF(BUILD_XFCE)
# GTK2 minimum is 2.18.0. (gtk_widget_set_visible)
FIND_PACKAGE(GTK2 2.18.0 ${REQUIRE_GTK2} COMPONENTS gtk)
IF(GTK2_FOUND)
ADD_SUBDIRECTORY(xfce)
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(BUILD_GTK2)
ENDIF(BUILD_XFCE)
# Build GTK+ 3.x frontends.
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()
# GTK+ 2.x (or required dependencies) were not found.
# 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()
# 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)
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})
IF(ENABLE_PCH)
TARGET_PRECOMPILE_HEADERS(${PROJECT_NAME} PRIVATE
@ -152,13 +154,13 @@ IF(BUILD_GTK2)
# (Requires removing the "-D" switches.)
ADD_DEFINITIONS(${GTK2_DEFINITIONS})
TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE RP_UI_XFCE)
ENDIF(BUILD_GTK2)
ENDIF(BUILD_XFCE)
#######################
# Install the plugin. #
#######################
IF(BUILD_GTK2)
IF(BUILD_XFCE)
# FIXME: ${ThunarX2_EXTENSIONS_DIR} always uses the system prefix.
# This should be adjusted to ${CMAKE_INSTALL_PREFIX}.
INSTALL(TARGETS ${PROJECT_NAME}
@ -177,4 +179,4 @@ IF(BUILD_GTK2)
)
ENDIF(DEBUG_FILENAME)
ENDIF(INSTALL_DEBUG)
ENDIF(BUILD_GTK2)
ENDIF(BUILD_XFCE)