diff options
| -rw-r--r-- | CHANGES.txt | 6 | ||||
| -rw-r--r-- | README.Wayland.txt | 26 | ||||
| -rw-r--r-- | configure.ac | 13 | ||||
| -rw-r--r-- | fluid/Makefile | 1 | ||||
| -rw-r--r-- | makeinclude.in | 2 | ||||
| -rw-r--r-- | src/Makefile | 19 |
6 files changed, 45 insertions, 22 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 2c66edf9e..06750fab2 100644 --- a/CHANGES.txt +++ b/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 a/README.Wayland.txt b/README.Wayland.txt index 01b7ba1ad..1f065ea72 100644 --- a/README.Wayland.txt +++ b/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 a/configure.ac b/configure.ac index 0a951400c..cd6745c39 100644 --- a/configure.ac +++ b/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 a/fluid/Makefile b/fluid/Makefile index f8423ce5d..aa85f8d14 100644 --- a/fluid/Makefile +++ b/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 a/makeinclude.in b/makeinclude.in index 78637eaf4..5c8c0cc74 100644 --- a/makeinclude.in +++ b/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 a/src/Makefile b/src/Makefile index 8be30e3cf..0510cbb66 100644 --- a/src/Makefile +++ b/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) |
