Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xorgxrdp for openSUSE:Factory checked in at 2022-12-06 15:40:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorgxrdp (Old) and /work/SRC/openSUSE:Factory/.xorgxrdp.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorgxrdp" Tue Dec 6 15:40:21 2022 rev:20 rq:1040664 version:0.9.19 Changes: -------- --- /work/SRC/openSUSE:Factory/xorgxrdp/xorgxrdp.changes 2021-01-11 17:15:52.188574259 +0100 +++ /work/SRC/openSUSE:Factory/.xorgxrdp.new.1835/xorgxrdp.changes 2022-12-06 15:40:21.479829283 +0100 @@ -1,0 +2,9 @@ +Tue Dec 6 13:22:38 UTC 2022 - Dirk Müller <dmuel...@suse.com> + +- update to 0.9.19: + * We decided to bump up version from v0.2 to v0.9 to indicate xorgxrdp v0.9 + is compatible with xrdp v0.9. + * Too fast scroll mitigation + * see https://github.com/neutrinolabs/xorgxrdp/releases/tag/v0.9.19 + +------------------------------------------------------------------- Old: ---- xorgxrdp-0.2.15.tar.gz xorgxrdp-0.2.15.tar.gz.asc New: ---- xorgxrdp-0.9.19.tar.gz xorgxrdp-0.9.19.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorgxrdp.spec ++++++ --- /var/tmp/diff_new_pack.IOwOJ1/_old 2022-12-06 15:40:22.051832502 +0100 +++ /var/tmp/diff_new_pack.IOwOJ1/_new 2022-12-06 15:40:22.055832525 +0100 @@ -1,7 +1,7 @@ # # spec file for package xorgxrdp # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: xorgxrdp -Version: 0.2.15 +Version: 0.9.19 Release: 0 Summary: Xorg drivers for xrdp License: X11 @@ -30,19 +30,20 @@ BuildRequires: automake BuildRequires: libtool BuildRequires: nasm +BuildRequires: pkgconfig BuildRequires: xorg-x11-server-sdk BuildRequires: xrdp-devel BuildRequires: pkgconfig(xorg-macros) Requires: xrdp >= 0.9.1 +ExcludeArch: s390 s390x +%{x11_abi_videodrv_req} +%{x11_abi_xinput_req} # For Leap 42.x and SLE 12.x <= 12.3, keep to use libXfont-devel %if 0%{?suse_version} > 1320 || 0%{?sle_version} > 120300 BuildRequires: libXfont2-devel %else BuildRequires: libXfont-devel %endif -ExcludeArch: s390 s390x -%{x11_abi_videodrv_req} -%{x11_abi_xinput_req} %description This package contains Xorg driver modules for xrdp @@ -53,14 +54,15 @@ %build sh ./bootstrap %configure --disable-static -make %{?_smp_mflags} +%make_build %install %make_install find %{buildroot} -type f -name "*.la" -delete -print %files -%doc README.md COPYING +%license COPYING +%doc README.md %{_libdir}/xorg/modules/drivers/xrdpdev_drv.so %dir %{_libdir}/xorg/modules/input %{_libdir}/xorg/modules/input/xrdpkeyb_drv.so ++++++ xorgxrdp-0.2.15.tar.gz -> xorgxrdp-0.9.19.tar.gz ++++++ ++++ 14280 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/README.md new/xorgxrdp-0.9.19/README.md --- old/xorgxrdp-0.2.15/README.md 2020-12-22 03:16:15.000000000 +0100 +++ new/xorgxrdp-0.9.19/README.md 2022-09-07 15:11:40.000000000 +0200 @@ -1,6 +1,6 @@ -[![Build Status](https://travis-ci.org/neutrinolabs/xorgxrdp.svg?branch=devel)](https://travis-ci.org/neutrinolabs/xorgxrdp) +[![Build Status](https://github.com/neutrinolabs/xorgxrdp/actions/workflows/build.yml/badge.svg)](https://github.com/neutrinolabs/xorgxrdp/actions) -*Current Version:* 0.2.15 +*Current Version:* 0.9.19 # xorgxrdp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/bootstrap new/xorgxrdp-0.9.19/bootstrap --- old/xorgxrdp-0.2.15/bootstrap 2017-08-09 06:45:44.000000000 +0200 +++ new/xorgxrdp-0.9.19/bootstrap 2022-01-07 04:33:33.000000000 +0100 @@ -1,27 +1,27 @@ #!/bin/sh -which autoconf +command -v autoconf if ! test $? -eq 0 then echo "error, install autoconf" exit 1 fi -which automake +command -v automake if ! test $? -eq 0 then echo "error, install automake" exit 1 fi -which libtool || which libtoolize +command -v libtool || command -v libtoolize if ! test $? -eq 0 then echo "error, install libtool" exit 1 fi -which pkg-config +command -v pkg-config if ! test $? -eq 0 then echo "error, install pkg-config" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/compile new/xorgxrdp-0.9.19/compile --- old/xorgxrdp-0.2.15/compile 2020-12-22 03:22:21.000000000 +0100 +++ new/xorgxrdp-0.9.19/compile 2022-09-09 16:43:50.000000000 +0200 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/config_ac-h.in new/xorgxrdp-0.9.19/config_ac-h.in --- old/xorgxrdp-0.2.15/config_ac-h.in 2020-12-22 03:22:16.000000000 +0100 +++ new/xorgxrdp-0.9.19/config_ac-h.in 2022-09-09 16:43:50.000000000 +0200 @@ -9,12 +9,12 @@ /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -57,7 +57,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Version number of package */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/configure.ac new/xorgxrdp-0.9.19/configure.ac --- old/xorgxrdp-0.2.15/configure.ac 2020-12-22 03:16:15.000000000 +0100 +++ new/xorgxrdp-0.9.19/configure.ac 2022-09-07 15:11:40.000000000 +0200 @@ -2,7 +2,7 @@ AC_PREREQ(2.65) # package version must be x.y.z -AC_INIT([xorgxrdp], [0.2.15], [xrdp-de...@googlegroups.com]) +AC_INIT([xorgxrdp], [0.9.19], [xrdp-de...@googlegroups.com]) package_version_major=$(echo ${PACKAGE_VERSION}|cut -d. -f1) package_version_minor=$(echo ${PACKAGE_VERSION}|cut -d. -f2) package_version_patchlevel=$(echo ${PACKAGE_VERSION}|cut -d. -f3) @@ -25,10 +25,13 @@ [AC_MSG_ERROR([please install xserver-xorg-dev, xorg-x11-server-sdk or xorg-x11-server-devel])]) if test "x${enable_glamor}" = "xyes"; then PKG_CHECK_MODULES([XORG_SERVER_GLAMOR], [xorg-server >= 1.19.0]) + PKG_CHECK_MODULES([XORG_SERVER_GBM], [gbm >= 0], [], [AC_MSG_ERROR([please install libgbm-dev or mesa-libgbm-devel])]) + PKG_CHECK_MODULES([XORG_SERVER_EPOXY], [epoxy >= 0], [], [AC_MSG_ERROR([please install libepoxy-dev or libepoxy-devel])]) + PKG_CHECK_MODULES([XORG_SERVER_EGL], [egl >= 0], [], [AC_MSG_ERROR([please install libegl1-mesa-dev or mesa-libEGL-devel])]) fi if test "x$XRDP_CFLAGS" = "x"; then - PKG_CHECK_MODULES([XRDP], [xrdp >= 0.9.14]) + PKG_CHECK_MODULES([XRDP], [xrdp >= 0.9.16]) XRDP_CFLAGS=`pkg-config xrdp --cflags` fi @@ -73,7 +76,7 @@ fi AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], - [Use glamor (default: no)]), + [Use glamor(requires xorg server 1.19+) (default: no)]), [], [enable_glamor=no]) AM_CONDITIONAL(WITH_GLAMOR, [test x$enable_glamor = xyes]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/m4/libtool.m4 new/xorgxrdp-0.9.19/m4/libtool.m4 --- old/xorgxrdp-0.2.15/m4/libtool.m4 2020-12-22 03:22:06.000000000 +0100 +++ new/xorgxrdp-0.9.19/m4/libtool.m4 2022-09-09 16:43:48.000000000 +0200 @@ -1,6 +1,7 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -31,7 +32,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. ]) -# serial 58 LT_INIT +# serial 59 LT_INIT # LT_PREREQ(VERSION) @@ -181,6 +182,7 @@ m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl @@ -219,8 +221,8 @@ ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -778,7 +780,7 @@ # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ + $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -1042,8 +1044,8 @@ _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1067,17 +1069,12 @@ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac @@ -1126,12 +1123,12 @@ output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1245,7 +1242,8 @@ # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot @@ -1262,7 +1260,7 @@ fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -1292,7 +1290,7 @@ # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -1309,7 +1307,7 @@ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -1321,7 +1319,7 @@ ;; esac else - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -1343,7 +1341,7 @@ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -1351,7 +1349,7 @@ emul="${emul}64" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -1359,7 +1357,7 @@ emul="${emul}ltsmip" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -1379,14 +1377,14 @@ # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -1454,7 +1452,7 @@ # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -1493,9 +1491,22 @@ m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because thats what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no @@ -1714,7 +1725,7 @@ lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1757,7 +1768,7 @@ sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -2207,26 +2218,35 @@ striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) - else + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac + ;; + esac + fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) @@ -2549,7 +2569,7 @@ case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; @@ -2559,14 +2579,14 @@ ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl*) - # Native MSVC + *,cl* | *,icl*) + # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' @@ -2585,7 +2605,7 @@ done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -2622,7 +2642,7 @@ ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -2655,7 +2675,7 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -3454,7 +3474,7 @@ bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -3488,14 +3508,14 @@ lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -3509,7 +3529,7 @@ ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' @@ -3556,7 +3576,7 @@ newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -3683,13 +3703,13 @@ mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -3715,7 +3735,7 @@ # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -3955,7 +3975,7 @@ if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -3973,20 +3993,20 @@ # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -4010,7 +4030,7 @@ if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, + # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ @@ -4028,9 +4048,9 @@ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -4317,7 +4337,7 @@ ;; esac ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) @@ -4400,7 +4420,7 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4736,7 +4756,7 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4919,7 +4939,7 @@ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) @@ -4927,7 +4947,7 @@ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl*) + cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) @@ -4984,15 +5004,15 @@ case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) @@ -5044,7 +5064,7 @@ _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -5156,6 +5176,7 @@ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) @@ -5170,7 +5191,7 @@ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -5213,7 +5234,7 @@ _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes @@ -5225,7 +5246,7 @@ if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi @@ -5241,7 +5262,7 @@ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -5373,7 +5394,7 @@ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -5556,12 +5577,12 @@ cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl*) - # Native MSVC + cl* | icl*) + # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes @@ -5602,7 +5623,7 @@ fi' ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. @@ -5650,7 +5671,7 @@ ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes @@ -5861,6 +5882,7 @@ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) @@ -6631,8 +6653,8 @@ cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' @@ -6730,6 +6752,7 @@ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) @@ -6760,7 +6783,7 @@ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes @@ -6897,7 +6920,7 @@ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in @@ -7037,13 +7060,13 @@ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -8189,6 +8212,14 @@ AC_SUBST([DLLTOOL]) ]) +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_TOOL([FILECMD], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/m4/ltoptions.m4 new/xorgxrdp-0.9.19/m4/ltoptions.m4 --- old/xorgxrdp-0.2.15/m4/ltoptions.m4 2020-12-22 03:22:06.000000000 +0100 +++ new/xorgxrdp-0.9.19/m4/ltoptions.m4 2022-09-09 16:43:48.000000000 +0200 @@ -1,7 +1,7 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/m4/ltsugar.m4 new/xorgxrdp-0.9.19/m4/ltsugar.m4 --- old/xorgxrdp-0.2.15/m4/ltsugar.m4 2020-12-22 03:22:07.000000000 +0100 +++ new/xorgxrdp-0.9.19/m4/ltsugar.m4 2022-09-09 16:43:48.000000000 +0200 @@ -1,6 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/m4/ltversion.m4 new/xorgxrdp-0.9.19/m4/ltversion.m4 --- old/xorgxrdp-0.2.15/m4/ltversion.m4 2020-12-22 03:22:09.000000000 +0100 +++ new/xorgxrdp-0.9.19/m4/ltversion.m4 2022-09-09 16:43:48.000000000 +0200 @@ -1,6 +1,7 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, +# Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +10,15 @@ # @configure_input@ -# serial 4179 ltversion.m4 +# serial 4245 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) +m4_define([LT_PACKAGE_VERSION], [2.4.7]) +m4_define([LT_PACKAGE_REVISION], [2.4.7]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' +[macro_version='2.4.7' +macro_revision='2.4.7' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/m4/lt~obsolete.m4 new/xorgxrdp-0.9.19/m4/lt~obsolete.m4 --- old/xorgxrdp-0.2.15/m4/lt~obsolete.m4 2020-12-22 03:22:09.000000000 +0100 +++ new/xorgxrdp-0.9.19/m4/lt~obsolete.m4 2022-09-09 16:43:48.000000000 +0200 @@ -1,7 +1,7 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/missing new/xorgxrdp-0.9.19/missing --- old/xorgxrdp-0.2.15/missing 2020-12-22 03:22:21.000000000 +0100 +++ new/xorgxrdp-0.9.19/missing 2022-09-09 16:43:50.000000000 +0200 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdp.h new/xorgxrdp-0.9.19/module/rdp.h --- old/xorgxrdp-0.2.15/module/rdp.h 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/module/rdp.h 2022-09-06 14:57:48.000000000 +0200 @@ -288,6 +288,7 @@ int do_dirty_ons; /* boolean */ int disconnect_scheduled; /* boolean */ int do_kill_disconnected; /* boolean */ + int do_touchpad_scroll_hack; /* boolean */ OsTimerPtr disconnectTimer; int disconnect_timeout_s; @@ -296,6 +297,7 @@ OsTimerPtr idleDisconnectTimer; int idle_disconnect_timeout_s; CARD32 last_event_time_ms; + CARD32 last_wheel_time_ms; int conNumber; @@ -325,6 +327,7 @@ int fd; /* egl */ void *egl; + DamagePtr damage; }; typedef struct _rdpRec rdpRec; typedef struct _rdpRec * rdpPtr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdpCapture.c new/xorgxrdp-0.9.19/module/rdpCapture.c --- old/xorgxrdp-0.2.15/module/rdpCapture.c 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/module/rdpCapture.c 2021-04-30 14:45:00.000000000 +0200 @@ -587,6 +587,11 @@ LLOGLN(10, ("rdpCapture0:")); + if (clientCon->shmemstatus == SHM_UNINITIALIZED || clientCon->shmemstatus == SHM_RESIZING) { + LLOGLN(0, ("rdpCapture0: WARNING -- Shared memory is not configured. Aborting capture!")); + return FALSE; + } + rv = TRUE; @@ -692,6 +697,11 @@ LLOGLN(10, ("rdpCapture1:")); + if (clientCon->shmemstatus == SHM_UNINITIALIZED || clientCon->shmemstatus == SHM_RESIZING) { + LLOGLN(0, ("rdpCapture1: WARNING -- Shared memory is not configured. Aborting capture!")); + return FALSE; + } + rv = TRUE; num_rects = REGION_NUM_RECTS(in_reg); @@ -824,6 +834,11 @@ LLOGLN(10, ("rdpCapture2:")); + if (clientCon->shmemstatus != SHM_RFX_ACTIVE) { + LLOGLN(0, ("rdpCapture2: WARNING -- Shared memory is not configured for RFX. Aborting capture!")); + return FALSE; + } + *out_rects = g_new(BoxRec, RDP_MAX_TILES); if (*out_rects == NULL) { @@ -938,6 +953,11 @@ LLOGLN(10, ("rdpCapture3:")); + if (clientCon->shmemstatus == SHM_UNINITIALIZED || clientCon->shmemstatus == SHM_RESIZING) { + LLOGLN(0, ("rdpCapture3: WARNING -- Shared memory is not configured. Aborting capture!")); + return FALSE; + } + rv = TRUE; num_rects = REGION_NUM_RECTS(in_reg); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdpClientCon.c new/xorgxrdp-0.9.19/module/rdpClientCon.c --- old/xorgxrdp-0.2.15/module/rdpClientCon.c 2020-12-22 03:16:15.000000000 +0100 +++ new/xorgxrdp-0.9.19/module/rdpClientCon.c 2022-09-07 15:11:40.000000000 +0200 @@ -33,6 +33,7 @@ #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> +#include <limits.h> /* this should be before all X11 .h files */ #include <xorg-server.h> @@ -211,6 +212,8 @@ LLOGLN(0, ("rdpClientConGotConnection:")); clientCon = g_new0(rdpClientCon, 1); + clientCon->shmemstatus = SHM_UNINITIALIZED; + clientCon->updateRetries = 0; clientCon->dev = dev; dev->last_event_time_ms = GetTimeInMillis(); dev->do_dirty_ons = 1; @@ -672,6 +675,37 @@ return 0; } +/**************************************************************************//** + * Allocate shared memory + * + * This memory is shared with the xup driver in xrdp which avoids a lot + * of unnecessary copying + * + * @param clientCon Client connection + * @param bytes Size of area to attach + */ +static void +rdpClientConAllocateSharedMemory(rdpClientCon *clientCon, int bytes) +{ + if (clientCon->shmemptr != NULL && clientCon->shmem_bytes == bytes) + { + LLOGLN(0, ("rdpClientConAllocateSharedMemory: reusing shmemid %d", + clientCon->shmemid)); + return; + } + + if (clientCon->shmemptr != 0) + { + shmdt(clientCon->shmemptr); + } + clientCon->shmemid = shmget(IPC_PRIVATE, bytes, IPC_CREAT | 0777); + clientCon->shmemptr = shmat(clientCon->shmemid, 0, 0); + clientCon->shmem_bytes = bytes; + shmctl(clientCon->shmemid, IPC_RMID, NULL); + LLOGLN(0, ("rdpClientConAllocateSharedMemory: shmemid %d shmemptr %p bytes %d", + clientCon->shmemid, clientCon->shmemptr, + clientCon->shmem_bytes)); +} /******************************************************************************/ /* this from miScreenInit @@ -690,6 +724,7 @@ LLOGLN(0, ("rdpClientConProcessScreenSizeMsg: set width %d height %d " "bpp %d", width, height, bpp)); + clientCon->shmemstatus = SHM_RESIZING; clientCon->rdp_width = width; clientCon->rdp_height = height; clientCon->rdp_bpp = bpp; @@ -723,17 +758,9 @@ clientCon->cap_stride_bytes = clientCon->rdp_width * clientCon->rdp_Bpp; - if (clientCon->shmemptr != 0) - { - shmdt(clientCon->shmemptr); - } bytes = clientCon->rdp_width * clientCon->rdp_height * clientCon->rdp_Bpp; - clientCon->shmemid = shmget(IPC_PRIVATE, bytes, IPC_CREAT | 0777); - clientCon->shmemptr = shmat(clientCon->shmemid, 0, 0); - shmctl(clientCon->shmemid, IPC_RMID, NULL); - LLOGLN(0, ("rdpClientConProcessScreenSizeMsg: shmemid %d shmemptr %p", - clientCon->shmemid, clientCon->shmemptr)); + rdpClientConAllocateSharedMemory(clientCon, bytes); clientCon->shmem_lineBytes = clientCon->rdp_Bpp * clientCon->rdp_width; if (clientCon->shmRegion != 0) @@ -828,6 +855,7 @@ int i1; int index; BoxRec box; + enum shared_memory_status shmemstatus = SHM_ACTIVE; LLOGLN(0, ("rdpClientConProcessMsgClientInfo:")); s = clientCon->in_s; @@ -839,6 +867,14 @@ memcpy(&(clientCon->client_info), s->p - 4, bytes); clientCon->client_info.size = bytes; + if (clientCon->client_info.version != CLIENT_INFO_CURRENT_VERSION) + { + LLOGLN(0, ("expected xrdp client_info version %d, got %d", + CLIENT_INFO_CURRENT_VERSION, + clientCon->client_info.version)); + FatalError("Incompatible xrdp version detected - please recompile"); + } + LLOGLN(0, (" got client info bytes %d", bytes)); LLOGLN(0, (" jpeg support %d", clientCon->client_info.jpeg)); i1 = clientCon->client_info.offscreen_support_level; @@ -855,19 +891,12 @@ clientCon->cap_height = RDPALIGN(clientCon->rdp_height, 64); LLOGLN(0, (" cap_width %d cap_height %d", clientCon->cap_width, clientCon->cap_height)); - if (clientCon->shmemptr != 0) - { - shmdt(clientCon->shmemptr); - } bytes = clientCon->cap_width * clientCon->cap_height * clientCon->rdp_Bpp; - clientCon->shmemid = shmget(IPC_PRIVATE, bytes, IPC_CREAT | 0777); - clientCon->shmemptr = shmat(clientCon->shmemid, 0, 0); - shmctl(clientCon->shmemid, IPC_RMID, NULL); - LLOGLN(0, ("rdpClientConProcessMsgClientInfo: shmemid %d shmemptr %p " - "bytes %d", clientCon->shmemid, clientCon->shmemptr, bytes)); + rdpClientConAllocateSharedMemory(clientCon, bytes); clientCon->shmem_lineBytes = clientCon->rdp_Bpp * clientCon->cap_width; clientCon->cap_stride_bytes = clientCon->cap_width * 4; + shmemstatus = SHM_RFX_ACTIVE; } else if (clientCon->client_info.capture_code == 3) /* H264 */ { @@ -876,18 +905,11 @@ clientCon->cap_height = clientCon->rdp_height; LLOGLN(0, (" cap_width %d cap_height %d", clientCon->cap_width, clientCon->cap_height)); - if (clientCon->shmemptr != 0) - { - shmdt(clientCon->shmemptr); - } bytes = clientCon->cap_width * clientCon->cap_height * 2; - clientCon->shmemid = shmget(IPC_PRIVATE, bytes, IPC_CREAT | 0777); - clientCon->shmemptr = shmat(clientCon->shmemid, 0, 0); - shmctl(clientCon->shmemid, IPC_RMID, NULL); - LLOGLN(0, ("rdpClientConProcessMsgClientInfo: shmemid %d shmemptr %p " - "bytes %d", clientCon->shmemid, clientCon->shmemptr, bytes)); + rdpClientConAllocateSharedMemory(clientCon, bytes); clientCon->shmem_lineBytes = clientCon->rdp_Bpp * clientCon->cap_width; clientCon->cap_stride_bytes = clientCon->cap_width * 4; + shmemstatus = SHM_H264_ACTIVE; } if (clientCon->client_info.capture_format != 0) @@ -1007,6 +1029,12 @@ rdpInputKeyboardEvent(dev, 18, (long)(&(clientCon->client_info)), 0, 0, 0); + if (clientCon->shmemstatus == SHM_UNINITIALIZED || clientCon->shmemstatus == SHM_RESIZING) { + clientCon->shmemstatus = shmemstatus; + } + + rdpClientConAddDirtyScreen(dev, clientCon, 0, 0, clientCon->rdp_width, clientCon->rdp_height); + return 0; } @@ -1427,6 +1455,26 @@ LLOGLN(0, ("rdpClientConInit: kill disconnected [%d] timeout [%d] sec", dev->do_kill_disconnected, dev->disconnect_timeout_s)); + /* neutrinolabs/xorgxrdp#150 */ + ptext = getenv("XRDP_XORG_TOUCHPAD_SCROLL_HACK"); + if (ptext != 0) + { + i = atoi(ptext); + if (i != 0 || + 0 == strcasecmp(ptext, "true") || + 0 == strcasecmp(ptext, "yes") || + 0 == strcasecmp(ptext, "on")) + { + dev->do_touchpad_scroll_hack = 1; + } + else + { + dev->do_touchpad_scroll_hack = 0; + } + } + + LLOGLN(0, ("rdpClientConInit: do_touchpad_scroll_hack [%d]", + dev->do_touchpad_scroll_hack)); return 0; } @@ -2052,7 +2100,7 @@ return -1; } - oldest = 0x7fffffff; + oldest = INT_MAX; oldest_index = -1; rv = -1; index = 0; @@ -2120,7 +2168,7 @@ "clientCon->osBitmapNumUsed %d", clientCon->osBitmapNumUsed)); /* find oldest */ - oldest = 0x7fffffff; + oldest = INT_MAX; oldest_index = -1; index = 0; while (index < clientCon->maxOsBitmaps) @@ -2439,11 +2487,19 @@ clientCon = (rdpClientCon *) arg; clientCon->updateScheduled = FALSE; clientCon->lastUpdateTime = now; + if (clientCon->suppress_output) { LLOGLN(10, ("rdpDeferredUpdateCallback: suppress_output set")); return 0; } + if (clientCon->shmemstatus == SHM_UNINITIALIZED || clientCon->shmemstatus == SHM_RESIZING) { + LLOGLN(10, ("rdpDeferredUpdateCallback: clientCon->shmemstatus " + "is not valid for capture operations: %d" + " reschedule rect_id %d rect_id_ack %d", + clientCon->shmemstatus, clientCon->rect_id, clientCon->rect_id_ack)); + return 0; + } if ((clientCon->rect_id > clientCon->rect_id_ack) || /* do not allow captures until we have the client_info */ clientCon->client_info.size == 0) @@ -2454,10 +2510,8 @@ rdpScheduleDeferredUpdate(clientCon); return 0; } - else - { - LLOGLN(10, ("rdpDeferredUpdateCallback: sending")); - } + LLOGLN(10, ("rdpDeferredUpdateCallback: sending")); + clientCon->updateRetries = 0; rdpClientConGetScreenImageRect(clientCon->dev, clientCon, &id); LLOGLN(10, ("rdpDeferredUpdateCallback: rdp_width %d rdp_height %d " "rdp_Bpp %d screen width %d screen height %d", @@ -2553,6 +2607,7 @@ /******************************************************************************/ #define MIN_MS_BETWEEN_FRAMES 40 #define MIN_MS_TO_WAIT_FOR_MORE_UPDATES 4 +#define UPDATE_RETRY_TIMEOUT 200 // After this number of retries, give up and perform the capture anyway. This prevents an infinite loop. static void rdpScheduleDeferredUpdate(rdpClientCon *clientCon) { @@ -2560,6 +2615,13 @@ uint32_t msToWait; uint32_t minNextUpdateTime; + if (clientCon->updateRetries > UPDATE_RETRY_TIMEOUT) { + LLOGLN(10, ("rdpScheduleDeferredUpdate: clientCon->updateRetries is %d" + " and has exceeded the timeout of %d retries." + " Overriding rect_id_ack to INT_MAX.", clientCon->updateRetries, UPDATE_RETRY_TIMEOUT)); + clientCon->rect_id_ack = INT_MAX; + } + curTime = (uint32_t) GetTimeInMillis(); /* use two separate delays in order to limit the update rate and wait a bit for more changes before sending an update. Always waiting the longer @@ -2579,6 +2641,7 @@ rdpDeferredUpdateCallback, clientCon); clientCon->updateScheduled = TRUE; + ++clientCon->updateRetries; } /******************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdpClientCon.h new/xorgxrdp-0.9.19/module/rdpClientCon.h --- old/xorgxrdp-0.2.15/module/rdpClientCon.h 2020-08-31 07:01:02.000000000 +0200 +++ new/xorgxrdp-0.9.19/module/rdpClientCon.h 2022-09-07 15:11:40.000000000 +0200 @@ -49,6 +49,14 @@ int stamp; }; +enum shared_memory_status { + SHM_UNINITIALIZED = 0, + SHM_RESIZING, + SHM_ACTIVE, + SHM_RFX_ACTIVE, + SHM_H264_ACTIVE +}; + /* one of these for each client */ struct _rdpClientCon { @@ -99,14 +107,17 @@ uint8_t *shmemptr; int shmemid; + int shmem_bytes; int shmem_lineBytes; RegionPtr shmRegion; int rect_id; int rect_id_ack; + enum shared_memory_status shmemstatus; OsTimerPtr updateTimer; CARD32 lastUpdateTime; /* millisecond timestamp */ int updateScheduled; /* boolean */ + int updateRetries; RegionPtr dirtyRegion; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdpImageText8.c new/xorgxrdp-0.9.19/module/rdpImageText8.c --- old/xorgxrdp-0.2.15/module/rdpImageText8.c 2017-08-09 06:45:44.000000000 +0200 +++ new/xorgxrdp-0.9.19/module/rdpImageText8.c 2022-09-06 15:12:34.000000000 +0200 @@ -30,7 +30,7 @@ /* this should be before all X11 .h files */ #include <xorg-server.h> #include <xorgVersion.h> - + /* all driver need this */ #include <xf86.h> #include <xf86_OSproc.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/module/rdpInput.c new/xorgxrdp-0.9.19/module/rdpInput.c --- old/xorgxrdp-0.2.15/module/rdpInput.c 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/module/rdpInput.c 2022-09-06 14:57:48.000000000 +0200 @@ -115,6 +115,30 @@ { dev->last_event_time_ms = GetTimeInMillis(); + /* + * Workaround for too fast vertical scroll on touchpad. + * Provided by @seflerZ on neutrinolabs/xorgxrdp#150 + */ + if (dev->do_touchpad_scroll_hack) + { + if (msg == WM_BUTTON4UP || + msg == WM_BUTTON4DOWN || + msg == WM_BUTTON5UP || + msg == WM_BUTTON5DOWN) + { + + if (dev->last_event_time_ms - dev->last_wheel_time_ms < 10) + { + return 0; + } + } + + if (msg == WM_BUTTON4UP || msg == WM_BUTTON5UP) + { + dev->last_wheel_time_ms = dev->last_event_time_ms; + } + } + if (g_input_proc[1].proc != 0) { return g_input_proc[1].proc(dev, msg, param1, param2, param3, param4); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/test-driver new/xorgxrdp-0.9.19/test-driver --- old/xorgxrdp-0.2.15/test-driver 2020-12-22 03:22:23.000000000 +0100 +++ new/xorgxrdp-0.9.19/test-driver 2022-09-09 16:43:50.000000000 +0200 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# Copyright (C) 2011-2021 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -105,8 +105,11 @@ trap "st=141; $do_exit" 13 trap "st=143; $do_exit" 15 -# Test script is run here. -"$@" >$log_file 2>&1 +# Test script is run here. We create the file first, then append to it, +# to ameliorate tests themselves also writing to the log file. Our tests +# don't, but others can (automake bug#35762). +: >"$log_file" +"$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then @@ -128,7 +131,7 @@ # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file +echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/tests/xorg-test-run.sh new/xorgxrdp-0.9.19/tests/xorg-test-run.sh --- old/xorgxrdp-0.2.15/tests/xorg-test-run.sh 2017-08-09 06:45:44.000000000 +0200 +++ new/xorgxrdp-0.9.19/tests/xorg-test-run.sh 2022-01-07 04:33:33.000000000 +0100 @@ -3,7 +3,14 @@ # Test that Xorg can load the compiled modules # X server to run -: ${XORG=Xorg} +if [ -z "$XORG" ]; then + if [ -x /usr/lib/xorg/Xorg ]; then + # Don't use the Ubuntu wrapped server + XORG=/usr/lib/xorg/Xorg + else + XORG=Xorg + fi +fi # Client to connect to Xorg : ${XCLIENT=xdpyinfo} @@ -36,7 +43,7 @@ # If the X server has setuid bit, make a local copy -XORG_FULL=`which $XORG` +XORG_FULL=`command -v $XORG` if test -u $XORG_FULL; then XORG=`pwd`/Xorg.no-setuid echo "$XORG_FULL has setuid bit set, will use $XORG" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/tests/yuv2rgb/yuv2rgb_speed.c new/xorgxrdp-0.9.19/tests/yuv2rgb/yuv2rgb_speed.c --- old/xorgxrdp-0.2.15/tests/yuv2rgb/yuv2rgb_speed.c 2017-08-09 06:45:44.000000000 +0200 +++ new/xorgxrdp-0.9.19/tests/yuv2rgb/yuv2rgb_speed.c 2022-09-06 15:12:34.000000000 +0200 @@ -80,7 +80,7 @@ _Y = ( ((1053 * ((_R) << 4)) >> 16) + ((2064 * ((_G) << 4)) >> 16) + (( 401 * ((_B) << 4)) >> 16)) + 16; \ _U = ( ((1798 * ((_B) << 4)) >> 16) - (( 606 * ((_R) << 4)) >> 16) - ((1192 * ((_G) << 4)) >> 16)) + 128; \ _V = ( ((1798 * ((_R) << 4)) >> 16) - ((1507 * ((_G) << 4)) >> 16) - (( 291 * ((_B) << 4)) >> 16)) + 128; - + /******************************************************************************/ static int a8r8g8b8_to_nv12_box(char *s8, int src_stride, @@ -173,7 +173,7 @@ } } - return 0; + return 0; } int output_params(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/xrdpdev/xorg.conf new/xorgxrdp-0.9.19/xrdpdev/xorg.conf --- old/xorgxrdp-0.2.15/xrdpdev/xorg.conf 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/xrdpdev/xorg.conf 2021-04-30 14:45:00.000000000 +0200 @@ -7,6 +7,9 @@ EndSection Section "ServerFlags" + # This line prevents "ServerLayout" sections in xorg.conf.d files + # overriding the "X11 Server" layout (xrdp #1784) + Option "DefaultServerLayout" "X11 Server" Option "DontVTSwitch" "on" Option "AutoAddDevices" "off" EndSection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/xrdpdev/xrdpdev.c new/xorgxrdp-0.9.19/xrdpdev/xrdpdev.c --- old/xorgxrdp-0.2.15/xrdpdev/xrdpdev.c 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/xrdpdev/xrdpdev.c 2022-06-01 06:07:00.000000000 +0200 @@ -87,7 +87,8 @@ while (0) static int g_setup_done = 0; -static OsTimerPtr g_timer = 0; +static OsTimerPtr g_randr_timer = 0; +static OsTimerPtr g_damage_timer = 0; static char g_xrdp_driver_name[] = XRDP_DRIVER_NAME; @@ -367,6 +368,47 @@ return ok; } +/*****************************************************************************/ +static void +xorgxrdpDamageReport(DamagePtr pDamage, RegionPtr pRegion, void *closure) +{ + rdpPtr dev; + ScreenPtr pScreen; + + LLOGLN(10, ("xorgxrdpDamageReport:")); + pScreen = (ScreenPtr)closure; + dev = rdpGetDevFromScreen(pScreen); + rdpClientConAddAllReg(dev, pRegion, &(pScreen->root->drawable)); +} + +/*****************************************************************************/ +static void +xorgxrdpDamageDestroy(DamagePtr pDamage, void *closure) +{ + LLOGLN(0, ("xorgxrdpDamageDestroy:")); +} + +/******************************************************************************/ +/* returns error */ +static CARD32 +rdpDeferredDamage(OsTimerPtr timer, CARD32 now, pointer arg) +{ + ScreenPtr pScreen; + rdpPtr dev; + + pScreen = (ScreenPtr) arg; + dev = rdpGetDevFromScreen(pScreen); + dev->damage = DamageCreate(xorgxrdpDamageReport, xorgxrdpDamageDestroy, + DamageReportRawRegion, TRUE, + pScreen, pScreen); + if (dev->damage != NULL) + { + DamageSetReportAfterOp(dev->damage, TRUE); + DamageRegister(&(pScreen->root->drawable), dev->damage); + } + return 0; +} + /******************************************************************************/ /* returns error */ static CARD32 @@ -723,7 +765,8 @@ RegisterBlockAndWakeupHandlers(rdpBlockHandler1, rdpWakeupHandler1, pScreen); - g_timer = TimerSet(g_timer, 0, 10, rdpDeferredRandR, pScreen); + g_randr_timer = TimerSet(g_randr_timer, 0, 10, rdpDeferredRandR, pScreen); + g_damage_timer = TimerSet(g_damage_timer, 0, 10, rdpDeferredDamage, pScreen); if (rdpClientConInit(dev) != 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xorgxrdp-0.2.15/xrdpdev/xrdpdri2.c new/xorgxrdp-0.9.19/xrdpdev/xrdpdri2.c --- old/xorgxrdp-0.2.15/xrdpdev/xrdpdri2.c 2020-08-20 07:27:09.000000000 +0200 +++ new/xorgxrdp-0.9.19/xrdpdev/xrdpdri2.c 2022-06-01 06:07:00.000000000 +0200 @@ -54,6 +54,10 @@ #include "rdpPri.h" #include "rdpDraw.h" +#if defined(XORGXRDP_GLAMOR) +#include <glamor.h> +#endif + #define LLOG_LEVEL 1 #define LLOGLN(_level, _args) \ do \ @@ -150,6 +154,9 @@ { rdpPtr dev; DRI2InfoRec info; +#if defined(XORGXRDP_GLAMOR) + const char *driver_names[2] = { NULL, NULL }; +#endif LLOGLN(0, ("rdpDri2Init:")); dev = rdpGetDevFromScreen(pScreen); @@ -171,6 +178,42 @@ info.CreateBuffer2 = rdpDri2CreateBuffer2; info.DestroyBuffer2 = rdpDri2DestroyBuffer2; info.CopyRegion2 = rdpDri2CopyRegion2; +#if defined(XORGXRDP_GLAMOR) + /* This is from xorg's hw/xfree86/drivers/modesetting/dri2.c. */ + /* This ensures that dri/va (=driver[0]) and vdpau (=driver[1]) */ + /* get the correct values. Currently only needed for intel drivers. */ + /* Ask Glamor to obtain the DRI driver name via EGL_MESA_query_driver. */ + driver_names[0] = glamor_egl_get_driver_name(pScreen); + + if (driver_names[0]) + { + /* There is no VDPAU driver for Intel, fallback to the generic + * OpenGL/VAAPI va_gl backend to emulate VDPAU. Otherwise, + * guess that the DRI and VDPAU drivers have the same name. + */ + if (strcmp(driver_names[0], "i965") == 0 || + strcmp(driver_names[0], "iris") == 0 || + strcmp(driver_names[0], "crocus") == 0) + { + driver_names[1] = "va_gl"; + } + else + { + driver_names[1] = driver_names[0]; + } + + info.numDrivers = 2; + info.driverNames = driver_names; + } + else + { + /* EGL_MESA_query_driver was unavailable; let dri2.c select the + * driver and fill in these fields for us. + */ + info.numDrivers = 0; + info.driverNames = NULL; + } +#endif if (!DRI2ScreenInit(pScreen, &info)) { return 1;