New configure setting "--enable-wayland --disable-x11" to build pure Wayland platform.
This commit is contained in:
parent
203e7b7098
commit
b37576aa55
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
||||
|
13
configure.ac
13
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"
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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@
|
||||
|
19
src/Makefile
19
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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user