|
commit b37576aa55a9b93e94fb6d1c63e45ad182de1f28
Author: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Sat Sep 10 07:44:23 2022 +0200
Commit: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Sat Sep 10 07:44:23 2022 +0200
New configure setting "--enable-wayland --disable-x11" to build pure Wayland platform.
CHANGES.txt | 6 +++++-
README.Wayland.txt | 26 ++++++++++++++++----------
configure.ac | 13 +++++++++----
fluid/Makefile | 1 +
makeinclude.in | 2 +-
src/Makefile | 19 +++++++++++++------
6 files changed, 45 insertions(+), 22 deletions(-)
diff --git CHANGES.txt CHANGES.txt
index 2c66edf..06750fa 100644
--- CHANGES.txt
+++ CHANGES.txt
@@ -124,7 +124,11 @@ Changes in FLTK 1.4.0 Released: ??? ?? 2022
New Configuration Options (ABI Version)
- Configure option --enable-wayland allows to build the FLTK library for
- the new Wayland platform. The corresponding CMake option is OPTION_USE_WAYLAND.
+ the new Wayland platform while remaining compatible with X11. The
+ corresponding CMake option is OPTION_USE_WAYLAND.
+ - Configure options --enable-wayland --disable-x11 used together allow to
+ build FLTK for the Wayland backend only (no x11 backend). Under CMake, the
+ equivalent is to set both OPTION_USE_WAYLAND and OPTION_WAYLAND_ONLY.
- The new configure option --disable-gdiplus removes the possibility to draw
antialiased lines and curves on the Windows platform. The corresponding CMake
option is OPTION_USE_GDIPLUS.
diff --git README.Wayland.txt README.Wayland.txt
index 01b7ba1..1f065ea 100644
--- README.Wayland.txt
+++ README.Wayland.txt
@@ -55,20 +55,24 @@ X11 is used at run time as follows:
compositor is available;
- if FLTK_BACKEND has another value, the library stops with error.
+On pure Wayland systems without the X11 headers and libraries, FLTK can be built
+with its Wayland backend only (see below).
+
2.1 Configuration
------------------
-* Configure-based build can be performed as follows:
+ 2.1.1 Configure-based build can be performed as follows:
Once after "git clone", create the configure file :
autoconf -f
Prepare build with :
- ./configure --enable-wayland [--enable-shared]
+ ./configure --enable-wayland
+Add --disable-x11 to build FLTK for Wayland-only (no x11 backend).
Build with :
make
-* CMake-based build can be performed as follows:
+ 2.1.2 CMake-based build can be performed as follows:
cmake -S <path-to-source> -B <path-to-build> -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_WAYLAND=1
cd <path-to-build>; make
@@ -79,6 +83,8 @@ this form of libdecor. Optionally, OPTION_USE_SYSTEM_LIBDECOR can be turned on t
use the system's version of libdecor which is available on recent Linux distributions (e.g.,
Debian Bookworm or more recent in packages libdecor-0-0 and libdecor-0-plugin-1-cairo).
+Optionally, OPTION_WAYLAND_ONLY can be turned on to build FLTK for Wayland-only (no x11 backend).
+
2.2 Known Limitations
----------------------
@@ -91,9 +97,9 @@ Fl_Window::position() has no effect on other top-level windows.
way to programmatically unset minimization of a window. Consequently, Fl_Window::show() of
a minimized window has no effect.
-* It's currently not possible for an app to be notified of changes to the content of
-the system clipboard, that is, Fl::add_clipboard_notify() has no effect. The FLTK API to
-read from and write to the system clipboard is fully functional, though.
+* Although the FLTK API to read from and write to the system clipboard is fully functional,
+it's currently not possible for an app to be notified of changes to the content of
+the system clipboard, that is, Fl::add_clipboard_notify() has no effect.
* With GTK-style window titlebars, narrow windows are silently forced to be wide enough
for the titlebar to display window buttons and a few letters of the title.
@@ -149,12 +155,12 @@ function or variable, and that fl_wl_display() returns non-NULL before using any
Wayland-specific function or variable. Make sure that fl_open_display() was called
directly or indirectly before using any such symbol.
-3.3 Forcing an app to always use the X11 mechanism
---------------------------------------------------
+3.3 Forcing an FLTK app to always use the X11 backend
+-----------------------------------------------------
Alternatively, it's possible to force an FLTK app to use X11 in all
-situations by calling function fl_disable_wayland() early in main(), before
-fl_open_display() runs. FLTK source code and also platform-specific
+situations by calling function fl_disable_wayland() early in main(), that is,
+before fl_open_display() runs. FLTK source code and also platform-specific
code conceived for FLTK 1.3 should run under 1.4 with that single change only.
diff --git configure.ac configure.ac
index 0a95140..cd6745c 100644
--- configure.ac
+++ configure.ac
@@ -110,7 +110,7 @@ AC_ARG_ENABLE([localzlib], AS_HELP_STRING([--enable-localzlib], [use local ZLIB
AC_ARG_ENABLE([pango], AS_HELP_STRING([--enable-pango], [turn on Pango support]))
-AC_ARG_ENABLE([wayland], AS_HELP_STRING([--enable-wayland], [turn on Wayland support]))
+AC_ARG_ENABLE([wayland], AS_HELP_STRING([--enable-wayland], [turn on hybrid Wayland/X11 support]))
AC_ARG_ENABLE([usecairo], AS_HELP_STRING([--enable-usecairo], [all drawing to X11 windows uses Cairo]))
@@ -993,11 +993,16 @@ AS_CASE([$host_os_gui], [cygwin* | mingw*], [
BUILD="WAYLAND"
AC_DEFINE([FLTK_USE_WAYLAND])
- AC_DEFINE([FLTK_USE_X11]) # to build a hybrid Wayland/X11 library
+ graphics="Wayland"
+ AS_IF([test x$enable_x11 != xno], [
+ AC_DEFINE([FLTK_USE_X11]) # to build a hybrid Wayland/X11 library
+ BUILD="WAYLANDX11"
+ graphics="Wayland or X11 with cairo"
+ ])
CFLAGS="$CFLAGS -DUSE_SYSTEM_LIBDECOR=0"
CXXFLAGS="$CXXFLAGS -DUSE_SYSTEM_LIBDECOR=0"
- graphics="Wayland or X11 with cairo"
- LIBS="$LIBS $($PKGCONFIG --libs wayland-cursor) $($PKGCONFIG --libs wayland-client) $($PKGCONFIG --libs xkbcommon) $($PKGCONFIG --libs pangoxft) $($PKGCONFIG --libs x11)"
+ LIBS="$LIBS $($PKGCONFIG --libs wayland-cursor) $($PKGCONFIG --libs wayland-client) $($PKGCONFIG --libs xkbcommon) $($PKGCONFIG --libs pangoxft) "
+ AS_IF([test x$enable_x11 != xno], [LIBS="$LIBS $($PKGCONFIG --libs x11)"] )
LIBS="$LIBS $($PKGCONFIG --libs dbus-1) -ldl"
CXXFLAGS="$CXXFLAGS -I../libdecor/src"
DSOFLAGS="$LIBS $DSOFLAGS"
diff --git fluid/Makefile fluid/Makefile
index f8423ce..aa85f8d 100644
--- fluid/Makefile
+++ fluid/Makefile
@@ -50,6 +50,7 @@ CPPFILES_X11 = ExternalCodeEditor_UNIX.cxx
CPPFILES_XFT = ExternalCodeEditor_UNIX.cxx
CPPFILES_CAIRO = ExternalCodeEditor_UNIX.cxx
CPPFILES_WAYLAND = ExternalCodeEditor_UNIX.cxx
+CPPFILES_WAYLANDX11 = ExternalCodeEditor_UNIX.cxx
CPPFILES += $(CPPFILES_$(BUILD))
diff --git makeinclude.in makeinclude.in
index 78637ea..5c8c0cc 100644
--- makeinclude.in
+++ makeinclude.in
@@ -24,7 +24,7 @@ FL_ABI_VERSION = @FL_ABI_VERSION@
FLTK_VERSION = @FLTK_VERSION@
-# FLTK configuration options: BUILD = { WIN | OSX | X11 | XFT | CAIROXLIB | WAYLAND }
+# FLTK configuration options: BUILD = { WIN | OSX | X11 | XFT | CAIROXLIB | WAYLANDX11 | WAYLAND }
BUILD = @BUILD@
UNAME = @UNAME@
diff --git src/Makefile src/Makefile
index 8be30e3..0510cbb 100644
--- src/Makefile
+++ src/Makefile
@@ -211,8 +211,9 @@ GLCPPFILES_CAIRO = $(GLCPPFILES_X11)
GLCPPFILES_WIN = drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.cxx \
drivers/WinAPI/fl_WinAPI_gl_platform_init.cxx
GLCPPFILES_WAYLAND = drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx \
- drivers/X11/Fl_X11_Gl_Window_Driver.cxx \
drivers/Wayland/fl_wayland_gl_platform_init.cxx
+GLCPPFILES_WAYLANDX11 = $(GLCPPFILES_WAYLAND) \
+ drivers/X11/Fl_X11_Gl_Window_Driver.cxx
GLCPPFILES += $(GLCPPFILES_$(BUILD))
@@ -290,7 +291,7 @@ XLIBGDFILES = drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx \
drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx \
drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx
-# These C++ files are used under condition: BUILD_WAYLAND
+# These C++ files are used under conditions: BUILD_WAYLAND or BUILD_WAYLANDX11
WLCPPFILES = \
drivers/Posix/Fl_Posix_Printer_Driver.cxx \
Fl_Native_File_Chooser_FLTK.cxx \
@@ -305,7 +306,10 @@ WLCPPFILES = \
drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx \
drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx \
drivers/Wayland/fl_wayland_platform_init.cxx \
- drivers/Wayland/fl_wayland_clipboard_dnd.cxx \
+ drivers/Wayland/fl_wayland_clipboard_dnd.cxx
+
+# These C++ files are used under condition: BUILD_WAYLANDX11
+WLX11CPPFILES = \
drivers/X11/Fl_X11_Screen_Driver.cxx \
drivers/X11/Fl_X11_Window_Driver.cxx \
drivers/X11/Fl_X11_System_Driver.cxx \
@@ -343,7 +347,7 @@ WLCFILES = \
xutf8/keysym2Ucs.c \
scandir_posix.c
-# These C++ files are used under condition: BUILD_WAYLAND
+# These C++ files are used under conditions: BUILD_WAYLAND or BUILD_WAYLANDX11
WLXFTFILES = \
drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
@@ -382,7 +386,7 @@ FLTKFLAGS = -DFL_LIBRARY
include ../makeinclude
# makeinclude has set this variable:
-# BUILD = {WIN|X11|XFT|CAIRO|OSX|WAYLAND}
+# BUILD = {WIN|X11|XFT|CAIRO|OSX|WAYLAND|WAYLANDX11}
MMFILES_OSX = $(OBJCPPFILES)
MMFILES = $(MMFILES_$(BUILD))
@@ -395,6 +399,7 @@ CPPFILES_X11 = $(XLIBCPPFILES) $(XLIBGDFILES) $(XLIBFONTFILES)
CPPFILES_CAIRO = $(XLIBCPPFILES) $(CAIROGDFILES)
CPPFILES_WAYLAND = $(WLCPPFILES) $(WLXFTFILES)
+CPPFILES_WAYLANDX11 = $(CPPFILES_WAYLAND) $(WLX11CPPFILES)
CPPFILES_WIN = $(GDICPPFILES)
@@ -405,12 +410,14 @@ CFILES_X11 = $(XLIBCFILES) $(XLIBXCFILES)
CFILES_CAIRO = $(XLIBCFILES)
CFILES_XFT = $(XLIBCFILES)
-CFILES_WAYLAND = $(WLCFILES)
+CFILES_WAYLANDX11 = $(WLCFILES)
EXTRA_OBJECTS_WAYLAND = ../libdecor/build/fl_libdecor.o ../libdecor/build/libdecor-cairo-blur.o \
../libdecor/build/fl_libdecor-plugins.o \
xdg-decoration-protocol.o xdg-shell-protocol.o text-input-protocol.o \
../libdecor/build/cursor-settings.o ../libdecor/build/os-compatibility.o
+EXTRA_OBJECTS_WAYLANDX11 = $(EXTRA_OBJECTS_WAYLAND)
EXTRA_CXXFLAGS_WAYLAND = -I.
+EXTRA_CXXFLAGS_WAYLANDX11 = $(EXTRA_CXXFLAGS_WAYLAND)
CFILES_WIN = $(GDICFILES)
[ Direct Link to Message ] | |