diff --git a/configure.ac b/configure.ac index 7b1728b0c..2f2c1cd53 100644 --- a/configure.ac +++ b/configure.ac @@ -580,6 +580,8 @@ AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest serv AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(xwayland, AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto]) AC_ARG_ENABLE(xwayland-eglstream, AS_HELP_STRING([--enable-xwayland-eglstream], [Build Xwayland eglstream support (default: no)]), [XWAYLAND_EGLSTREAM=$enableval], [XWAYLAND_EGLSTREAM=no]) +AC_ARG_WITH(xwayland-path, AS_HELP_STRING([--with-xwayland-path=PATH], [Directory containing Xwayland executable (default: ${bindir})]), + [ xwayland_path="$withval" ], [ xwayland_path="$bindir" ]) AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: auto)]), [GLAMOR=$enableval], [GLAMOR=auto]) @@ -2314,6 +2316,9 @@ if test "x$XWAYLAND" = xyes; then if test "x$GLAMOR" = xyes && test "x$GBM" = xyes; then AC_DEFINE(XWL_HAS_GLAMOR, 1, [Build xwayland with glamor support]) + AC_SUBST(have_glamor, "true") + else + AC_SUBST(have_glamor, "false") fi PKG_CHECK_MODULES(WAYLAND_EGLSTREAM, [wayland-eglstream-protocols >= 1.0.2], [have_wl_eglstream=yes], [have_wl_eglstream=no]) @@ -2336,6 +2341,9 @@ if test "x$XWAYLAND" = xyes; then AC_SUBST(WAYLAND_EGLSTREAM_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-eglstream-protocols`) AC_DEFINE(XWL_HAS_EGLSTREAM, 1, [Build xwayland with eglstream support]) + AC_SUBST(have_eglstream, "true") + else + AC_SUBST(have_eglstream, "false") fi XWAYLAND_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB" @@ -2358,6 +2366,9 @@ if test "x$XWAYLAND" = xyes; then AC_SUBST(SCANNER_ARG, 'code')) AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`) + + AC_SUBST(xwayland_path) + fi AM_CONDITIONAL(XWAYLAND_EGLSTREAM, [test "x$XWAYLAND_EGLSTREAM" = "xyes"]) @@ -2502,6 +2513,7 @@ hw/kdrive/ephyr/Makefile hw/kdrive/ephyr/man/Makefile hw/kdrive/src/Makefile hw/xwayland/Makefile +hw/xwayland/xwayland.pc test/Makefile xserver.ent xorg-server.pc diff --git a/hw/xwayland/Makefile.am b/hw/xwayland/Makefile.am index 309efd4cc..cc8a05471 100644 --- a/hw/xwayland/Makefile.am +++ b/hw/xwayland/Makefile.am @@ -1,3 +1,4 @@ +bindir = @xwayland_path@ bin_PROGRAMS = Xwayland Xwayland_CFLAGS = \ @@ -115,7 +116,10 @@ endif nodist_Xwayland_SOURCES = $(Xwayland_built_sources) CLEANFILES = $(Xwayland_built_sources) -EXTRA_DIST = drm.xml +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xwayland.pc + +EXTRA_DIST = xwayland.pc.in drm.xml $(Xwayland_SOURCES): $(Xwayland_built_sources) diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build index 2e32a0780..c41080f20 100644 --- a/hw/xwayland/meson.build +++ b/hw/xwayland/meson.build @@ -132,4 +132,19 @@ executable( libglxvnd, ], install: true, + install_dir: xwayland_path +) + +xwayland_data = configuration_data() +xwayland_data.set('PACKAGE_VERSION', meson.project_version()) +xwayland_data.set('xwayland_path', xwayland_path) +xwayland_data.set('have_glamor', build_glamor ? 'true' : 'false') +xwayland_data.set('have_eglstream', build_eglstream ? 'true' : 'false') +configure_file( + input: 'xwayland.pc.in', + output: 'xwayland.pc', + configuration: xwayland_data, + install_dir: join_paths(get_option('prefix'), + get_option('libdir'), + 'pkgconfig'), ) diff --git a/hw/xwayland/xwayland.pc.in b/hw/xwayland/xwayland.pc.in new file mode 100644 index 000000000..cd2802696 --- /dev/null +++ b/hw/xwayland/xwayland.pc.in @@ -0,0 +1,7 @@ +Name: Xwayland +Description: X Server for Wayland +Version: @PACKAGE_VERSION@ +xwayland=@xwayland_path@/Xwayland +have_glamor=@have_glamor@ +have_eglstream=@have_eglstream@ +have_initfd=true diff --git a/meson.build b/meson.build index dd3ef8fd6..d9535fb86 100644 --- a/meson.build +++ b/meson.build @@ -200,6 +200,11 @@ if (host_machine.system() != 'darwin' and xwayland_required = get_option('xwayland') == 'true' build_glamor = glamor_option == 'true' or glamor_option == 'auto' + xwayland_path = get_option('xwayland-path') + if (xwayland_path == '') + xwayland_path = join_paths(get_option('prefix'), get_option('bindir')) + endif + xwayland_dep = [ dependency('wayland-client', version: wayland_req, required: xwayland_required), dependency('wayland-protocols', version: wayland_protocols_req, required: xwayland_required), diff --git a/meson_options.txt b/meson_options.txt index 0e123f450..1a07745e0 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -125,3 +125,5 @@ option('xpbproxy', type: 'boolean', value: false, option('libunwind', type: 'boolean', value: false, description: 'Use libunwind for backtrace reporting') + +option('xwayland-path', type: 'string', description: 'Directory containing Xwayland executable')