diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2025-03-07 11:06:24 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2025-03-07 11:06:24 +0100 |
| commit | 7f60f019d77697c5e4e3a46f9571e1a25328b4b3 (patch) | |
| tree | a15af546ffa837e02e8f3e306c55e3fb427d6a5f /CMake | |
| parent | 6acda521ccaa448eeb26f81a2432da586bed9b30 (diff) | |
Fix "fltk autotools build does not link against libXft" (#1202)
libXft was erroneously present in the link command when using Pango and Cairo.
This is fixed by disconnecting the GUI scaling code from use of Xft.
This commit also makes sure that when Wayland is used, pkg-config is available
on the build machine. This allows to remove from file CMake/options.cmake
code that was labelled with "FIXME".
Diffstat (limited to 'CMake')
| -rw-r--r-- | CMake/options.cmake | 93 |
1 files changed, 14 insertions, 79 deletions
diff --git a/CMake/options.cmake b/CMake/options.cmake index 2677abee4..6c06ca9c1 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -280,6 +280,9 @@ if(UNIX) option(FLTK_BACKEND_WAYLAND "support the Wayland backend" ON) endif(NOT APPLE) if(FLTK_BACKEND_WAYLAND) + if(NOT PKG_CONFIG_FOUND) + message(FATAL_ERROR "Option FLTK_BACKEND_WAYLAND requires availability of pkg-config on the build machine.") + endif(NOT PKG_CONFIG_FOUND) pkg_check_modules(WLDCLIENT IMPORTED_TARGET wayland-client>=1.18) pkg_check_modules(WLDCURSOR IMPORTED_TARGET wayland-cursor) pkg_check_modules(WLDPROTO IMPORTED_TARGET wayland-protocols>=1.15) @@ -323,7 +326,6 @@ if(UNIX) if(NOT X11_Xft_FOUND) message(WARNING "Install development headers for libXft (e.g., libxft-dev)") endif() - set(USE_XFT 1) if(NOT X11_Xcursor_FOUND) message(WARNING "Install development headers for libXcursor (e.g., libxcursor-dev)") endif() @@ -829,11 +831,13 @@ endif(FLTK_USE_XCURSOR) ####################################################################### if(X11_Xft_FOUND) - option(FLTK_USE_XFT "use lib Xft" ON) option(FLTK_USE_PANGO "use lib Pango" OFF) if(NOT FLTK_BACKEND_WAYLAND) option(FLTK_GRAPHICS_CAIRO "all drawing to X11 windows uses Cairo" OFF) endif(NOT FLTK_BACKEND_WAYLAND) + if(NOT FLTK_GRAPHICS_CAIRO) + option(FLTK_USE_XFT "use lib Xft" ON) + endif() endif(X11_Xft_FOUND) # test option compatibility: Cairo for Xlib requires Pango @@ -842,19 +846,19 @@ if(FLTK_GRAPHICS_CAIRO) set(FLTK_USE_PANGO TRUE CACHE BOOL "use lib Pango") endif(FLTK_GRAPHICS_CAIRO) -if(FLTK_USE_X11 AND (FLTK_USE_PANGO OR FLTK_GRAPHICS_CAIRO)) # implies to use PANGOXFT +if(FLTK_USE_X11 AND FLTK_USE_PANGO AND NOT FLTK_GRAPHICS_CAIRO) set(USE_PANGOXFT true) endif() -# test option compatibility: Pango requires Xft +# test option compatibility: PangoXft requires Xft if(USE_PANGOXFT) if(NOT X11_Xft_FOUND) - message(STATUS "Pango requires Xft but Xft library or headers could not be found.") + message(STATUS "PangoXft requires Xft but Xft library or headers could not be found.") message(STATUS "Please install Xft development files and try again or disable FLTK_USE_PANGO.") message(FATAL_ERROR "*** Aborting ***") else() if(NOT FLTK_USE_XFT) - message(STATUS "Pango requires Xft but usage of Xft was disabled.") + message(STATUS "PangoXft requires Xft but usage of Xft was disabled.") message(STATUS "Please enable FLTK_USE_XFT and try again or disable FLTK_USE_PANGO.") message(FATAL_ERROR "*** Aborting ***") endif(NOT FLTK_USE_XFT) @@ -863,6 +867,9 @@ endif(USE_PANGOXFT) ####################################################################### if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) + if(NOT PKG_CONFIG_FOUND) + message(FATAL_ERROR "Option FLTK_USE_PANGO requires availability of pkg-config on the build machine.") + endif(NOT PKG_CONFIG_FOUND) pkg_check_modules(CAIRO IMPORTED_TARGET cairo) if(USE_PANGOXFT) pkg_check_modules(PANGOXFT IMPORTED_TARGET pangoxft) @@ -877,23 +884,6 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) endif(USE_PANGOXFT) list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${CAIRO_INCLUDE_DIRS}) - find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGO) - - if(USE_PANGOXFT) - find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGOXFT) - endif(USE_PANGOXFT) - - find_library(HAVE_LIB_PANGOCAIRO pangocairo-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGOCAIRO) - - find_library(HAVE_LIB_CAIRO cairo ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_CAIRO) - - find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_GOBJECT) - set(USE_PANGO TRUE) # add required libraries to fltk-config ... @@ -902,62 +892,6 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) endif(USE_PANGOXFT) list(APPEND FLTK_LDLIBS ${PANGOCAIRO_LDFLAGS}) - # *FIXME* Libraries should not be added explicitly if possible - if(FLTK_BACKEND_WAYLAND AND FLTK_USE_LIBDECOR_GTK AND NOT USE_SYSTEM_LIBDECOR) - list(APPEND FLTK_LDLIBS -lgtk-3 -lgdk-3 -lgio-2.0) - endif() - if(FLTK_BACKEND_X11) - list(APPEND FLTK_LDLIBS -lX11) - endif() - - if(APPLE) - get_filename_component(PANGO_L_PATH ${HAVE_LIB_PANGO} PATH) - set(LDFLAGS "${LDFLAGS} -L${PANGO_L_PATH}") - endif(APPLE) - - else() - - # this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin - if(APPLE AND FLTK_BACKEND_X11) - find_file(FINK_PREFIX NAMES /opt/sw /sw) - if(FINK_PREFIX) - list(APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include) - list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${FINK_PREFIX}/include/cairo) - list(APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib) - endif(FINK_PREFIX) - endif(APPLE AND FLTK_BACKEND_X11) - - find_file(HAVE_PANGO_H pango-1.0/pango/pango.h ${CMAKE_INCLUDE_PATH}) - find_file(HAVE_PANGOXFT_H pango-1.0/pango/pangoxft.h ${CMAKE_INCLUDE_PATH}) - - if(HAVE_PANGO_H AND HAVE_PANGOXFT_H) - find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH}) - find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH}) - if(APPLE) - set(HAVE_LIB_GOBJECT TRUE) - else() - find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH}) - endif(APPLE) - endif(HAVE_PANGO_H AND HAVE_PANGOXFT_H) - - if(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT) - set(USE_PANGO TRUE) - # remove last 3 components of HAVE_PANGO_H and put in PANGO_H_PREFIX - get_filename_component(PANGO_H_PREFIX ${HAVE_PANGO_H} PATH) - get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH) - get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH) - - get_filename_component(PANGOLIB_DIR ${HAVE_LIB_PANGO} PATH) - # glib.h is usually in ${PANGO_H_PREFIX}/glib-2.0/ ... - find_path(GLIB_H_PATH glib.h - PATHS ${PANGO_H_PREFIX}/glib-2.0 - ${PANGO_H_PREFIX}/glib/glib-2.0) - list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include) - - # *FIXME* Libraries should not be added explicitly if possible - list(APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0) - - endif(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT) endif((PANGOXFT_FOUND OR NOT USE_PANGOXFT) AND PANGOCAIRO_FOUND AND CAIRO_FOUND) if(USE_PANGO AND (FLTK_GRAPHICS_CAIRO OR FLTK_BACKEND_WAYLAND)) @@ -974,6 +908,7 @@ if(FLTK_BACKEND_WAYLAND) pkg_check_modules(GTK IMPORTED_TARGET gtk+-3.0) if(GTK_FOUND) list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${GTK_INCLUDE_DIRS}) + list(APPEND FLTK_LDLIBS ${GTK_LDFLAGS}) else() message(WARNING "Installation of the development files for the GTK library " "(e.g., libgtk-3-dev) is recommended when using the gnome desktop.") |
