Have OPTION_USE_WAYLAND / --enable-wayland set to ON by default
This commit is contained in:
parent
4dcced5b29
commit
0ba051994a
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@ -33,7 +33,7 @@ jobs:
|
|||||||
# Note the current convention is to use the -S and -B options here to specify source
|
# Note the current convention is to use the -S and -B options here to specify source
|
||||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPTION_USE_WAYLAND=OFF
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
@ -63,7 +63,7 @@ jobs:
|
|||||||
# Note the current convention is to use the -S and -B options here to specify source
|
# Note the current convention is to use the -S and -B options here to specify source
|
||||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPTION_USE_WAYLAND=1
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
|
@ -125,7 +125,7 @@ Changes in FLTK 1.4.0 Released: ??? ?? 2022
|
|||||||
This option is OFF by default.
|
This option is OFF by default.
|
||||||
- Configure option --enable-wayland allows to build the FLTK library for
|
- Configure option --enable-wayland allows to build the FLTK library for
|
||||||
the new Wayland platform while remaining compatible with X11. The
|
the new Wayland platform while remaining compatible with X11. The
|
||||||
corresponding CMake option is OPTION_USE_WAYLAND. This option is OFF by default.
|
corresponding CMake option is OPTION_USE_WAYLAND. This option is ON by default.
|
||||||
- Configure options --enable-wayland --disable-x11 used together allow to
|
- Configure options --enable-wayland --disable-x11 used together allow to
|
||||||
build FLTK for the Wayland backend only (no x11 backend). Under CMake, the
|
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.
|
equivalent is to set both OPTION_USE_WAYLAND and OPTION_WAYLAND_ONLY.
|
||||||
|
@ -194,7 +194,9 @@ set (HAVE_LIBPNG 1)
|
|||||||
if (UNIX)
|
if (UNIX)
|
||||||
option (OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
|
option (OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
|
||||||
list (APPEND FLTK_LDLIBS -lm)
|
list (APPEND FLTK_LDLIBS -lm)
|
||||||
option (OPTION_USE_WAYLAND "support Wayland and X11 backends" OFF)
|
if (NOT APPLE)
|
||||||
|
option (OPTION_USE_WAYLAND "support both Wayland and X11 backends" ON)
|
||||||
|
endif (NOT APPLE)
|
||||||
if (OPTION_USE_WAYLAND)
|
if (OPTION_USE_WAYLAND)
|
||||||
pkg_check_modules(WLDCLIENT wayland-client)
|
pkg_check_modules(WLDCLIENT wayland-client)
|
||||||
pkg_check_modules(WLDCURSOR wayland-cursor)
|
pkg_check_modules(WLDCURSOR wayland-cursor)
|
||||||
@ -203,9 +205,13 @@ if (UNIX)
|
|||||||
pkg_check_modules(DBUS dbus-1)
|
pkg_check_modules(DBUS dbus-1)
|
||||||
if (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND))
|
if (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND))
|
||||||
message (STATUS "Not all software modules 'wayland-client wayland-cursor wayland-protocols xkbcommon dbus-1' are present")
|
message (STATUS "Not all software modules 'wayland-client wayland-cursor wayland-protocols xkbcommon dbus-1' are present")
|
||||||
message (STATUS "Consequently, building for the Wayland backend is not possible.")
|
message (STATUS "Consequently, OPTION_USE_WAYLAND is set to OFF.")
|
||||||
message (FATAL_ERROR "*** Aborting ***")
|
unset (OPTION_USE_WAYLAND CACHE)
|
||||||
|
set (OPTION_USE_WAYLAND 0)
|
||||||
endif (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND))
|
endif (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND))
|
||||||
|
endif (OPTION_USE_WAYLAND)
|
||||||
|
|
||||||
|
if (OPTION_USE_WAYLAND)
|
||||||
option (OPTION_WAYLAND_ONLY "support Wayland backend only" OFF)
|
option (OPTION_WAYLAND_ONLY "support Wayland backend only" OFF)
|
||||||
set (FLTK_USE_WAYLAND 1)
|
set (FLTK_USE_WAYLAND 1)
|
||||||
if (NOT OPTION_WAYLAND_ONLY)
|
if (NOT OPTION_WAYLAND_ONLY)
|
||||||
|
@ -168,12 +168,12 @@ OPTION_USE_CAIRO - default OFF
|
|||||||
|
|
||||||
OPTION_USE_PANGO - default OFF
|
OPTION_USE_PANGO - default OFF
|
||||||
Enables use of the Pango library for drawing text. Pango supports all
|
Enables use of the Pango library for drawing text. Pango supports all
|
||||||
unicode-defined scripts with limited support of right-to-left scripts.
|
unicode-defined scripts and gives FLTK limited support of right-to-left
|
||||||
This option makes sense only under X11, and also requires Xft.
|
scripts. This option makes sense only under X11, and also requires Xft.
|
||||||
|
|
||||||
OPTION_USE_WAYLAND - default OFF
|
OPTION_USE_WAYLAND - default ON
|
||||||
Enables the use of Wayland for all window operations, of Cairo for all
|
Enables the use of Wayland for all window operations, of Cairo for all
|
||||||
graphics and of Pango for text drawing (Linux only). Resulting FLTK
|
graphics and of Pango for text drawing (Linux+FreeBSD only). Resulting FLTK
|
||||||
apps use Wayland when a Wayland compositor is available at run-time,
|
apps use Wayland when a Wayland compositor is available at run-time,
|
||||||
and use X11 for their window operations otherwise, but keep using
|
and use X11 for their window operations otherwise, but keep using
|
||||||
Cairo and Pango - see README.Wayland.txt.
|
Cairo and Pango - see README.Wayland.txt.
|
||||||
|
@ -38,7 +38,7 @@ CJK text-input methods, as well as dead and compose keys are supported.
|
|||||||
2 Wayland Support for FLTK
|
2 Wayland Support for FLTK
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
On Linux and FreeBSD systems, the FLTK library can be configured so FLTK apps
|
On Linux and FreeBSD systems, the FLTK library is by default configured so FLTK apps
|
||||||
do all their windowing through the Wayland protocol, all their graphics with
|
do all their windowing through the Wayland protocol, all their graphics with
|
||||||
Cairo or EGL, and all text-drawing with Pango. If no Wayland compositor is
|
Cairo or EGL, and all text-drawing with Pango. If no Wayland compositor is
|
||||||
available at run-time, FLTK apps fall back to using X11 for windowing.
|
available at run-time, FLTK apps fall back to using X11 for windowing.
|
||||||
@ -62,30 +62,24 @@ with its Wayland backend only (see below).
|
|||||||
2.1 Configuration
|
2.1 Configuration
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
2.1.1 Configure-based build can be performed as follows:
|
On Linux and FreeBSD systems equipped with the adequate software packages
|
||||||
Once after "git clone", create the configure file :
|
(see section 4 below), the default building procedure produces a Wayland/X11
|
||||||
autoconf -f
|
hybrid library. On systems lacking all or part of Wayland-required packages,
|
||||||
|
the default building procedure produces a X11-based library.
|
||||||
|
|
||||||
Prepare build with :
|
Use -DOPTION_USE_WAYLAND=OFF with CMake or "configure --disable-wayland" to build
|
||||||
./configure --enable-wayland
|
FLTK for the X11 library when the default would build for Wayland.
|
||||||
Add --disable-x11 to build FLTK for Wayland-only (no x11 backend).
|
|
||||||
|
|
||||||
Build with :
|
CMake OPTION_WAYLAND_ONLY or "--disable-x11" configure argument can
|
||||||
make
|
be used to produce a Wayland-only library which can be useful, e.g., when
|
||||||
|
cross-compiling for systems that lack X11 headers and libraries.
|
||||||
2.1.2 CMake-based build can be performed as follows:
|
|
||||||
cmake -S <path-to-source> -B <path-to-build> -DOPTION_USE_WAYLAND=1
|
|
||||||
|
|
||||||
cd <path-to-build>; make
|
|
||||||
|
|
||||||
The FLTK Wayland platform uses a library called libdecor which handles window decorations
|
The FLTK Wayland platform uses a library called libdecor which handles window decorations
|
||||||
(i.e., titlebars, shade). Libdecor is bundled in the FLTK source code and FLTK uses by default
|
(i.e., titlebars, shade). Libdecor is bundled in the FLTK source code and FLTK uses by default
|
||||||
this form of libdecor. Optionally, OPTION_USE_SYSTEM_LIBDECOR can be turned on to have FLTK
|
this form of libdecor. CMake OPTION_USE_SYSTEM_LIBDECOR can be turned on to have FLTK
|
||||||
use the system's version of libdecor which is available on recent Linux distributions (e.g.,
|
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).
|
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
|
2.2 Known Limitations
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
@ -132,7 +126,7 @@ function or variable.
|
|||||||
-----------------------------------------------------------------
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
The recommended way to prepare and use platform-specific code that would contain
|
The recommended way to prepare and use platform-specific code that would contain
|
||||||
both X11-specific and Wayland-specific parts is as follows :
|
X11-specific and possibly Wayland-specific parts is as follows :
|
||||||
|
|
||||||
a) Organize platform-specific code as follows :
|
a) Organize platform-specific code as follows :
|
||||||
|
|
||||||
@ -143,10 +137,13 @@ a) Organize platform-specific code as follows :
|
|||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
*** Windows-specific code ***
|
*** Windows-specific code ***
|
||||||
#else
|
#else
|
||||||
|
# ifdef FLTK_USE_X11
|
||||||
*** X11-specific code ***
|
*** X11-specific code ***
|
||||||
|
# endif
|
||||||
|
# ifdef FLTK_USE_WAYLAND
|
||||||
*** Wayland-specific code ***
|
*** Wayland-specific code ***
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
b) Make sure to use distinct names for global variables and functions
|
b) Make sure to use distinct names for global variables and functions
|
||||||
in the X11- and the Wayland-specific sections.
|
in the X11- and the Wayland-specific sections.
|
||||||
@ -241,17 +238,5 @@ These packages are necessary to build the FLTK library and the sway compositor:
|
|||||||
pkg install git autoconf pkgconf xorg urwfonts gnome glew seatd sway \
|
pkg install git autoconf pkgconf xorg urwfonts gnome glew seatd sway \
|
||||||
dmenu-wayland dmenu evdev-proto
|
dmenu-wayland dmenu evdev-proto
|
||||||
|
|
||||||
The FLTK library can be built as follows using either configure or CMake :
|
If FLTK is built using the configure/make procedure, include argument "--enable-localzlib"
|
||||||
|
in the "configure" command.
|
||||||
1) Using configure
|
|
||||||
|
|
||||||
cd <path-to-FLTK-source-tree>
|
|
||||||
autoconf -f
|
|
||||||
./configure --enable-localzlib --enable-wayland
|
|
||||||
make
|
|
||||||
|
|
||||||
2) Using CMake
|
|
||||||
|
|
||||||
cmake -S <path-to-source> -B <path-to-build> -DOPTION_USE_WAYLAND=1
|
|
||||||
|
|
||||||
cd <path-to-build>; make
|
|
||||||
|
40
configure.ac
40
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([pango], AS_HELP_STRING([--enable-pango], [turn on Pango support]))
|
||||||
|
|
||||||
AC_ARG_ENABLE([wayland], AS_HELP_STRING([--enable-wayland], [turn on hybrid Wayland/X11 support]))
|
AC_ARG_ENABLE([wayland], AS_HELP_STRING([--disable-wayland], [turn off hybrid Wayland/X11 support]))
|
||||||
|
|
||||||
AC_ARG_ENABLE([usecairo], AS_HELP_STRING([--enable-usecairo], [all drawing to X11 windows uses Cairo]))
|
AC_ARG_ENABLE([usecairo], AS_HELP_STRING([--enable-usecairo], [all drawing to X11 windows uses Cairo]))
|
||||||
|
|
||||||
@ -978,15 +978,39 @@ AS_CASE([$host_os_gui], [cygwin* | mingw*], [
|
|||||||
THREADS="threads$EXEEXT"
|
THREADS="threads$EXEEXT"
|
||||||
])
|
])
|
||||||
|
|
||||||
AS_IF([test x$enable_wayland = xyes], [
|
AS_IF([test x$enable_wayland != xno], [
|
||||||
dnl Prepare for Wayland...
|
|
||||||
|
|
||||||
AS_IF([test x$PKGCONFIG = x], [
|
AS_IF([test x$PKGCONFIG = x], [
|
||||||
dnl pkg-config is not available, issue warning and abort...
|
dnl pkg-config is not available, issue warning and possibly abort...
|
||||||
|
AS_IF([test x$enable_wayland = xyes], [
|
||||||
AC_MSG_WARN([--enable-wayland: please install pkg-config.])
|
AC_MSG_WARN([--enable-wayland: please install pkg-config.])
|
||||||
AC_MSG_ERROR([Aborting.])
|
AC_MSG_ERROR([Aborting.])
|
||||||
|
],[
|
||||||
|
AC_MSG_WARN([pkg-config is not found. Continuing with --disable-wayland])
|
||||||
|
enable_wayland="no"
|
||||||
|
])
|
||||||
|
],[
|
||||||
|
missing="no"
|
||||||
|
AS_IF([$PKGCONFIG --exists wayland-client],[],[missing="yes"])
|
||||||
|
AS_IF([$PKGCONFIG --exists wayland-protocols],[],[missing="yes"])
|
||||||
|
AS_IF([$PKGCONFIG --exists wayland-cursor],[],[missing="yes"])
|
||||||
|
AS_IF([$PKGCONFIG --exists xkbcommon],[],[missing="yes"])
|
||||||
|
AS_IF([$PKGCONFIG --exists dbus-1],[],[missing="yes"])
|
||||||
|
AS_IF([$PKGCONFIG --exists pangocairo],[],[missing="yes"])
|
||||||
|
AS_IF([test x$missing = xyes], [
|
||||||
|
AC_MSG_WARN([These packages 'wayland-client wayland-protocols wayland-cursor xkbcommon dbus-1 pangocairo' are required to build FLTK for wayland.])
|
||||||
|
AC_MSG_WARN([At least one of them is missing.])
|
||||||
|
AS_IF([test x$enable_wayland = xyes], [
|
||||||
|
AC_MSG_ERROR([Building for Wayland is not possible. Aborting.])
|
||||||
|
],[
|
||||||
|
AC_MSG_WARN([Continuing with --disable-wayland])
|
||||||
|
enable_wayland="no"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AS_IF([test x$enable_wayland != xno], [
|
||||||
|
dnl Prepare for Wayland...
|
||||||
dnl Turn option usecairo ON
|
dnl Turn option usecairo ON
|
||||||
AC_DEFINE([FLTK_USE_CAIRO])
|
AC_DEFINE([FLTK_USE_CAIRO])
|
||||||
AC_MSG_NOTICE([Turning on the usecairo option])
|
AC_MSG_NOTICE([Turning on the usecairo option])
|
||||||
@ -1001,7 +1025,7 @@ AS_CASE([$host_os_gui], [cygwin* | mingw*], [
|
|||||||
])
|
])
|
||||||
CFLAGS="$CFLAGS -DUSE_SYSTEM_LIBDECOR=0"
|
CFLAGS="$CFLAGS -DUSE_SYSTEM_LIBDECOR=0"
|
||||||
CXXFLAGS="$CXXFLAGS -DUSE_SYSTEM_LIBDECOR=0"
|
CXXFLAGS="$CXXFLAGS -DUSE_SYSTEM_LIBDECOR=0"
|
||||||
LIBS="$LIBS $($PKGCONFIG --libs wayland-cursor) $($PKGCONFIG --libs wayland-client) $($PKGCONFIG --libs xkbcommon) $($PKGCONFIG --libs pangoxft) "
|
LIBS="$LIBS $($PKGCONFIG --libs wayland-cursor) $($PKGCONFIG --libs wayland-client) $($PKGCONFIG --libs xkbcommon) $($PKGCONFIG --libs pangocairo) "
|
||||||
AS_IF([test x$enable_x11 != xno], [LIBS="$LIBS $($PKGCONFIG --libs x11)"] )
|
AS_IF([test x$enable_x11 != xno], [LIBS="$LIBS $($PKGCONFIG --libs x11)"] )
|
||||||
LIBS="$LIBS $($PKGCONFIG --libs dbus-1) -ldl"
|
LIBS="$LIBS $($PKGCONFIG --libs dbus-1) -ldl"
|
||||||
CXXFLAGS="$CXXFLAGS -I../libdecor/src"
|
CXXFLAGS="$CXXFLAGS -I../libdecor/src"
|
||||||
@ -1145,7 +1169,7 @@ AS_CASE([$host_os_gui], [cygwin* | mingw*], [
|
|||||||
|
|
||||||
dnl Check for the Xft library unless disabled...
|
dnl Check for the Xft library unless disabled...
|
||||||
xft_found=no
|
xft_found=no
|
||||||
AS_IF([test x$enable_xft != xno], [
|
AS_IF([test x$enable_xft != xno -a x$enable_wayland = xno], [
|
||||||
# Try pkg-config first (freetype2 deprecated freetype-config from some version on)
|
# Try pkg-config first (freetype2 deprecated freetype-config from some version on)
|
||||||
FT_FLAGS=""
|
FT_FLAGS=""
|
||||||
AS_IF([test "x$PKGCONFIG" != x], [
|
AS_IF([test "x$PKGCONFIG" != x], [
|
||||||
@ -1645,7 +1669,7 @@ AS_CASE([$host_os_gui], [cygwin* | mingw*], [
|
|||||||
], [darwin*], [
|
], [darwin*], [
|
||||||
graphics="Quartz"
|
graphics="Quartz"
|
||||||
], [*], [
|
], [*], [
|
||||||
AS_IF([test x$enable_wayland != xyes], [
|
AS_IF([test x$enable_wayland = xno], [
|
||||||
graphics="X11"
|
graphics="X11"
|
||||||
])
|
])
|
||||||
AS_IF([test x$xft_found = xyes], [
|
AS_IF([test x$xft_found = xyes], [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user